Files
pdf_to_ics/install.sh
webfarben 86e6b4d0a6 Implementiere Update-Mechanismus mit Gitea API
- Neue Datei version.txt für Versionsverwaltung (1.0.0)
- Neue Datei update_checker.py für automatische Update-Prüfung
- Prüft auf neueste Releases über Gitea API (https://git.file-archive.de)
- GUI zeigt Update-Dialog wenn neue Version verfügbar ist
- Update-Prüfung läuft asynchron im Hintergrund
- install.sh: packaging-Paket hinzugefügt, version.txt und update_checker.py werden mitgekopiert
2026-02-23 14:54:27 +01:00

222 lines
7.9 KiB
Bash
Executable File

#!/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 python3-venv wenn nötig
print_step "Prüfe venv-Installation..."
# Prüfe ob ensurepip verfügbar ist (wird für venv benötigt)
if ! python3 -c "import ensurepip" 2>/dev/null; then
print_warning "ensurepip ist nicht verfügbar. Installation von python3-venv erforderlich..."
# Erkenne Distribution
if [ -f /etc/debian_version ]; then
echo "Debian/Ubuntu erkannt. Installiere python3-venv..."
# Ermittle Python-Version für das richtige Paket
PYTHON_VERSION_NUM=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
VENV_PACKAGE="python${PYTHON_VERSION_NUM}-venv"
if command -v sudo &> /dev/null; then
sudo apt-get update && sudo apt-get install -y "$VENV_PACKAGE"
else
print_error "sudo nicht verfügbar. Bitte installieren Sie $VENV_PACKAGE manuell:"
echo " apt install $VENV_PACKAGE"
exit 1
fi
elif [ -f /etc/fedora-release ]; then
echo "Fedora erkannt. Python venv sollte bereits enthalten sein..."
print_error "Falls venv fehlt, installieren Sie bitte python3-devel"
exit 1
elif [ -f /etc/arch-release ]; then
echo "Arch Linux erkannt. Python venv sollte bereits enthalten sein..."
print_error "Falls venv fehlt, installieren Sie bitte python erneut"
exit 1
else
print_error "Distribution nicht erkannt. Bitte installieren Sie python3-venv manuell."
exit 1
fi
# Verifiziere Installation
if ! python3 -c "import ensurepip" 2>/dev/null; then
print_error "Installation von $VENV_PACKAGE fehlgeschlagen!"
exit 1
fi
print_success "venv installiert"
else
print_success "venv ist bereits installiert"
fi
# 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 version.txt .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 packaging
.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 ""