#!/bin/bash # install.sh - Установка Stego App # Запуск: chmod +x install.sh && ./install.sh set -e echo "==========================================" echo "Установка Stego App" echo "==========================================" PROJECT_DIR="$(pwd)" USER_BIN="$HOME/.local/bin" # 1. Проверка Python if ! command -v python3 &> /dev/null; then echo "❌ Python 3 не найден" echo "Установите Python 3.8+: sudo apt install python3 python3-pip python3-venv" exit 1 fi echo "✓ Python найден: $(python3 --version)" # 2. Установка Tkinter (для GUI) if ! python3 -c "import tkinter" &> /dev/null; then echo "Установка Tkinter..." sudo apt update sudo apt install python3-tk -y fi echo "✓ Tkinter установлен" # 3. Создание виртуального окружения echo "Создание виртуального окружения..." if [ -d ".venv" ]; then echo "Виртуальное окружение уже существует, обновляем..." rm -rf .venv fi python3 -m venv .venv echo "✓ Виртуальное окружение создано" # 4. Установка зависимостей echo "Установка зависимостей..." source .venv/bin/activate pip install --upgrade pip pip install numpy pillow scipy deactivate echo "✓ Зависимости установлены" # 5. Создание запускаторов echo "Создание запускаторов..." mkdir -p "$USER_BIN" cat > "$USER_BIN/stego" << EOF #!/bin/bash cd "$PROJECT_DIR" source .venv/bin/activate python main.py "\$@" EOF cat > "$USER_BIN/stego-gui" << EOF #!/bin/bash cd "$PROJECT_DIR" source .venv/bin/activate python main.py --gui EOF chmod +x "$USER_BIN/stego" chmod +x "$USER_BIN/stego-gui" echo "✓ Запускаторы созданы: stego, stego-gui" # 6. Добавление ~/.local/bin в PATH (если нужно) if [[ ":$PATH:" != *":$USER_BIN:"* ]]; then echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc echo "✓ PATH обновлён. Перезагрузите терминал или выполните: source ~/.bashrc" fi # 7. Установка иконки echo "Установка иконки..." if [ -f "icons/stego.png" ]; then sudo mkdir -p /usr/local/share/stego/icons sudo cp icons/stego.png /usr/local/share/stego/icons/ echo "✓ Иконка установлена" else echo "⚠️ Иконка не найдена: icons/stego.png" fi # 8. Установка .desktop файла (ярлык в меню) echo "Установка ярлыка в меню..." mkdir -p ~/.local/share/applications cat > ~/.local/share/applications/stego.desktop << DESKTOP [Desktop Entry] Type=Application Name=Stego App Comment=Сокрытие данных в изображениях Exec=$USER_BIN/stego-gui Icon=/usr/local/share/stego/icons/stego.png Terminal=false Categories=Graphics;Utility; StartupNotify=true DESKTOP # 9. Ярлык на рабочий стол (опционально) read -p "Создать ярлык на рабочем столе? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then cat > ~/Desktop/stego.desktop << DESKTOP [Desktop Entry] Type=Application Name=Stego App Comment=Сокрытие данных в изображениях Exec=$USER_BIN/stego-gui Icon=/usr/local/share/stego/icons/stego.png Terminal=false Categories=Graphics; StartupNotify=true DESKTOP chmod +x ~/Desktop/stego.desktop echo "✓ Ярлык создан на рабочем столе" fi # Обновление базы приложений update-desktop-database ~/.local/share/applications/ 2>/dev/null || true update-desktop-database /usr/share/applications/ 2>/dev/null || true echo "" echo "==========================================" echo "✅ Установка завершена!" echo "==========================================" echo "" echo "Запуск GUI: stego-gui" echo "CLI справка: stego --help" echo "LSB кодирование: stego encode lsb image.png out.png -m \"Сообщение\"" echo "LSB декодирование: stego decode lsb out.png" echo "" echo "Ярлык появится в меню приложений (Graphics/Stego App)" if [[ $REPLY =~ ^[Yy]$ ]]; then echo "Ярлык также создан на рабочем столе" fi echo "=========================================="