Files
speiseplan/build/windows/installer.nsi
clawd ac849d2eb1
Some checks failed
Build & Release / 🏗️ Windows Build (push) Has been cancelled
v0.4.7 — WebView2 Runtime im Installer eingebettet
- WebView2 Bootstrapper wird mitgeliefert
- Automatische Prüfung ob WebView2 installiert ist
- Silent Install wenn nicht vorhanden
- Version + Publisher in Registry
2026-02-20 13:30:50 +00:00

114 lines
4.4 KiB
NSIS

!include "MUI2.nsh"
; Allgemein
Name "Speiseplan"
OutFile "Speiseplan-Setup.exe"
InstallDir "$PROGRAMFILES\Speiseplan"
InstallDirRegKey HKLM "Software\Speiseplan" "Install_Dir"
RequestExecutionLevel admin
; UI
!define MUI_ICON "icon.ico"
!define MUI_UNICON "icon.ico"
!define MUI_ABORTWARNING
!define MUI_WELCOMEPAGE_TITLE "Speiseplan Setup"
!define MUI_WELCOMEPAGE_TEXT "Dieses Programm installiert den Kita-Wochenspeiseplan auf Ihrem Computer.$\r$\n$\r$\nBenötigte Komponenten (WebView2) werden automatisch mitinstalliert.$\r$\n$\r$\nKlicken Sie auf Weiter, um fortzufahren."
; Seiten
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
; Deinstallation
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
; Sprache
!insertmacro MUI_LANGUAGE "German"
; WebView2 Check Funktion
Function CheckWebView2
; Prüfe ob WebView2 bereits installiert ist
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
${If} $0 == ""
ReadRegStr $0 HKCU "SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
${EndIf}
${If} $0 == ""
; WebView2 nicht gefunden — installieren
DetailPrint "WebView2 Runtime wird installiert..."
SetOutPath "$TEMP"
File "MicrosoftEdgeWebview2Setup.exe"
ExecWait '"$TEMP\MicrosoftEdgeWebview2Setup.exe" /silent /install' $1
${If} $1 != 0
MessageBox MB_OK|MB_ICONEXCLAMATION "WebView2 konnte nicht installiert werden (Fehler: $1).$\r$\nBitte installieren Sie es manuell von https://developer.microsoft.com/microsoft-edge/webview2/"
${Else}
DetailPrint "WebView2 Runtime erfolgreich installiert."
${EndIf}
Delete "$TEMP\MicrosoftEdgeWebview2Setup.exe"
${Else}
DetailPrint "WebView2 Runtime bereits installiert (Version: $0)."
${EndIf}
FunctionEnd
; Hauptinstallation
Section "Speiseplan (erforderlich)" SecMain
SectionIn RO
SetOutPath $INSTDIR
File "..\..\build\bin\speiseplan.exe"
File "icon.ico"
; WebView2 prüfen und ggf. installieren
Call CheckWebView2
; Registry
WriteRegStr HKLM "Software\Speiseplan" "Install_Dir" "$INSTDIR"
WriteRegStr HKLM "Software\Speiseplan" "Version" "0.4.7"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "DisplayName" "Speiseplan"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "DisplayVersion" "0.4.7"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "Publisher" "Kita Ortrand"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "DisplayIcon" "$INSTDIR\icon.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "NoRepair" 1
WriteUninstaller "$INSTDIR\uninstall.exe"
; Startmenü
CreateDirectory "$SMPROGRAMS\Speiseplan"
CreateShortCut "$SMPROGRAMS\Speiseplan\Speiseplan.lnk" "$INSTDIR\speiseplan.exe" "" "$INSTDIR\icon.ico"
CreateShortCut "$SMPROGRAMS\Speiseplan\Deinstallieren.lnk" "$INSTDIR\uninstall.exe"
SectionEnd
; Desktop-Verknüpfung (optional)
Section "Desktop-Verknüpfung" SecDesktop
CreateShortCut "$DESKTOP\Speiseplan.lnk" "$INSTDIR\speiseplan.exe" "" "$INSTDIR\icon.ico"
SectionEnd
; Komponentenbeschreibungen
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecMain} "Das Speiseplan-Programm (erforderlich). WebView2 wird automatisch mitinstalliert."
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "Erstellt eine Verknüpfung auf dem Desktop."
!insertmacro MUI_FUNCTION_DESCRIPTION_END
; Deinstallation
Section "Uninstall"
Delete "$INSTDIR\speiseplan.exe"
Delete "$INSTDIR\icon.ico"
Delete "$INSTDIR\uninstall.exe"
RMDir "$INSTDIR"
Delete "$SMPROGRAMS\Speiseplan\*.*"
RMDir "$SMPROGRAMS\Speiseplan"
Delete "$DESKTOP\Speiseplan.lnk"
; Datenbank löschen
MessageBox MB_YESNO "Sollen die gespeicherten Daten (Speisepläne, Produkte) ebenfalls gelöscht werden?" IDYES deletedata IDNO skipdata
deletedata:
RMDir /r "$LOCALAPPDATA\Speiseplan"
skipdata:
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan"
DeleteRegKey HKLM "Software\Speiseplan"
SectionEnd