Linux-Installation mit Desktop-Integration hinzugefügt
- install.sh: Automatisches Installations-Script • Prüft und installiert Tkinter automatisch • Erstellt Virtual Environment • Desktop-Verknüpfung im Anwendungsmenü • Launcher-Command: pdf-to-ics - uninstall.sh: Saubere Deinstallation • Entfernt alle Dateien • Optional: Benutzer-Konfiguration behalten - INSTALL.md: Technische Installations-Dokumentation - WEITERGABE.md: Benutzerfreundliche Schnellstart-Anleitung Die Anwendung kann jetzt als fertiges Paket weitergegeben werden!
This commit is contained in:
178
install.sh
Executable file
178
install.sh
Executable file
@@ -0,0 +1,178 @@
|
||||
#!/bin/bash
|
||||
|
||||
###############################################################################
|
||||
# PDF zu ICS Konverter - Installations-Script für Linux
|
||||
# Installiert die Anwendung systemweit mit Desktop-Integration
|
||||
###############################################################################
|
||||
|
||||
set -e # Beende bei Fehlern
|
||||
|
||||
# Farben für bessere Ausgabe
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Installation-Pfade
|
||||
INSTALL_DIR="$HOME/.local/share/pdf-to-ics"
|
||||
DESKTOP_FILE="$HOME/.local/share/applications/pdf-to-ics.desktop"
|
||||
BIN_DIR="$HOME/.local/bin"
|
||||
LAUNCHER="$BIN_DIR/pdf-to-ics"
|
||||
|
||||
echo -e "${BLUE}╔═══════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${BLUE}║ PDF zu ICS Konverter - Installations-Assistent ║${NC}"
|
||||
echo -e "${BLUE}╚═══════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
|
||||
# Funktion für Fortschrittsanzeige
|
||||
print_step() {
|
||||
echo -e "${GREEN}➜${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
# Prüfe Python-Installation
|
||||
print_step "Prüfe Python-Installation..."
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
print_error "Python 3 ist nicht installiert!"
|
||||
echo "Bitte installieren Sie Python 3:"
|
||||
echo " sudo apt install python3 python3-pip python3-venv"
|
||||
exit 1
|
||||
fi
|
||||
PYTHON_VERSION=$(python3 --version)
|
||||
print_success "Python gefunden: $PYTHON_VERSION"
|
||||
|
||||
# Prüfe und installiere Tkinter wenn nötig
|
||||
print_step "Prüfe Tkinter-Installation..."
|
||||
if ! python3 -c "import tkinter" 2>/dev/null; then
|
||||
print_warning "Tkinter ist nicht installiert. Installation wird versucht..."
|
||||
|
||||
# Erkenne Distribution
|
||||
if [ -f /etc/debian_version ]; then
|
||||
echo "Debian/Ubuntu erkannt. Installiere python3-tk..."
|
||||
if command -v sudo &> /dev/null; then
|
||||
sudo apt-get update && sudo apt-get install -y python3-tk
|
||||
else
|
||||
print_error "sudo nicht verfügbar. Bitte installieren Sie python3-tk manuell:"
|
||||
echo " apt-get install python3-tk"
|
||||
exit 1
|
||||
fi
|
||||
elif [ -f /etc/fedora-release ]; then
|
||||
echo "Fedora erkannt. Installiere python3-tkinter..."
|
||||
sudo dnf install -y python3-tkinter
|
||||
elif [ -f /etc/arch-release ]; then
|
||||
echo "Arch Linux erkannt. Installiere tk..."
|
||||
sudo pacman -S --noconfirm tk
|
||||
else
|
||||
print_warning "Distribution nicht erkannt. Bitte installieren Sie Tkinter manuell."
|
||||
echo "Möchten Sie trotzdem fortfahren? (y/n)"
|
||||
read -r response
|
||||
if [[ ! "$response" =~ ^[Yy]$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
print_success "Tkinter installiert"
|
||||
else
|
||||
print_success "Tkinter ist bereits installiert"
|
||||
fi
|
||||
|
||||
# Erstelle Installationsverzeichnis
|
||||
print_step "Erstelle Installationsverzeichnis..."
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
mkdir -p "$BIN_DIR"
|
||||
mkdir -p "$(dirname "$DESKTOP_FILE")"
|
||||
|
||||
# Kopiere Dateien
|
||||
print_step "Kopiere Anwendungsdateien..."
|
||||
cp -r *.py *.md *.sh *.cmd .gitignore "$INSTALL_DIR/" 2>/dev/null || true
|
||||
print_success "Dateien kopiert nach $INSTALL_DIR"
|
||||
|
||||
# Erstelle Python Virtual Environment
|
||||
print_step "Erstelle Python-Umgebung..."
|
||||
cd "$INSTALL_DIR"
|
||||
python3 -m venv .venv --upgrade-deps
|
||||
print_success "Virtual Environment erstellt"
|
||||
|
||||
# Installiere Python-Abhängigkeiten
|
||||
print_step "Installiere Python-Abhängigkeiten..."
|
||||
.venv/bin/pip install -q --upgrade pip
|
||||
.venv/bin/pip install -q pdfplumber icalendar pypdf2 pytz
|
||||
.venv/bin/pip install -q tkinterdnd2 2>/dev/null || print_warning "tkinterdnd2 optional nicht installiert (kein Problem)"
|
||||
print_success "Abhängigkeiten installiert"
|
||||
|
||||
# Erstelle Launcher-Script
|
||||
print_step "Erstelle Launcher-Script..."
|
||||
cat > "$LAUNCHER" << 'EOF'
|
||||
#!/bin/bash
|
||||
# PDF zu ICS Konverter Launcher
|
||||
INSTALL_DIR="$HOME/.local/share/pdf-to-ics"
|
||||
cd "$INSTALL_DIR"
|
||||
exec .venv/bin/python gui.py
|
||||
EOF
|
||||
chmod +x "$LAUNCHER"
|
||||
print_success "Launcher erstellt: $LAUNCHER"
|
||||
|
||||
# Erstelle Desktop-Verknüpfung
|
||||
print_step "Erstelle Desktop-Verknüpfung..."
|
||||
cat > "$DESKTOP_FILE" << EOF
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=PDF zu ICS Konverter
|
||||
Comment=Konvertiere Dienstplan-PDFs zu iCalendar-Dateien
|
||||
Exec=$LAUNCHER
|
||||
Icon=calendar
|
||||
Terminal=false
|
||||
Categories=Office;Utility;
|
||||
Keywords=PDF;ICS;Kalender;Dienstplan;
|
||||
StartupNotify=true
|
||||
EOF
|
||||
chmod +x "$DESKTOP_FILE"
|
||||
print_success "Desktop-Verknüpfung erstellt"
|
||||
|
||||
# Desktop-Datenbank aktualisieren
|
||||
if command -v update-desktop-database &> /dev/null; then
|
||||
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Prüfe ob ~/.local/bin im PATH ist
|
||||
if [[ ":$PATH:" != *":$BIN_DIR:"* ]]; then
|
||||
print_warning "~/.local/bin ist nicht im PATH!"
|
||||
echo "Fügen Sie folgende Zeile zu ~/.bashrc oder ~/.zshrc hinzu:"
|
||||
echo ""
|
||||
echo " export PATH=\"\$HOME/.local/bin:\$PATH\""
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Abschluss
|
||||
echo ""
|
||||
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ Installation erfolgreich abgeschlossen! ║${NC}"
|
||||
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
print_success "Die Anwendung wurde installiert!"
|
||||
echo ""
|
||||
echo "Sie können die Anwendung nun starten:"
|
||||
echo ""
|
||||
echo " 1. ${BLUE}Über das Anwendungsmenü${NC} (suchen Sie nach 'PDF zu ICS')"
|
||||
echo " 2. ${BLUE}Über die Kommandozeile:${NC} pdf-to-ics"
|
||||
echo ""
|
||||
echo "Installation Details:"
|
||||
echo " • Installationsverzeichnis: $INSTALL_DIR"
|
||||
echo " • Launcher: $LAUNCHER"
|
||||
echo " • Desktop-Verknüpfung: $DESKTOP_FILE"
|
||||
echo ""
|
||||
echo "Zum Deinstallieren führen Sie aus:"
|
||||
echo " bash $INSTALL_DIR/uninstall.sh"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user