132 lines
5 KiB
NSIS
132 lines
5 KiB
NSIS
; Zupt GUI — NSIS Installer Script
|
|
; Builds: ZuptGUI-Setup.exe
|
|
;
|
|
; Prerequisites on the build machine:
|
|
; 1. NSIS 3.x installed (https://nsis.sourceforge.io)
|
|
; 2. Run build-windows.bat first to create dist/ZuptGUI.exe
|
|
; 3. Place zupt.exe in this directory
|
|
; 4. Then: makensis zupt-installer.nsi
|
|
|
|
!include "MUI2.nsh"
|
|
!include "FileFunc.nsh"
|
|
|
|
; ── Config ──
|
|
!define APPNAME "Zupt"
|
|
!define APPVERSION "2.1.6"
|
|
!define GUIVERSION "1.0.0"
|
|
!define PUBLISHER "Cristian Cezar Moises"
|
|
!define HELPURL "https://github.com/cristiancmoises/zupt"
|
|
!define EXE "ZuptGUI.exe"
|
|
!define CLI "zupt.exe"
|
|
|
|
Name "${APPNAME} ${APPVERSION}"
|
|
OutFile "ZuptGUI-${APPVERSION}-Setup.exe"
|
|
InstallDir "$PROGRAMFILES\${APPNAME}"
|
|
InstallDirRegKey HKLM "Software\${APPNAME}" "InstallDir"
|
|
RequestExecutionLevel admin
|
|
|
|
; ── UI ──
|
|
!define MUI_ICON "..\..\assets\zupt.ico"
|
|
!define MUI_UNICON "..\..\assets\zupt.ico"
|
|
!define MUI_ABORTWARNING
|
|
!define MUI_WELCOMEPAGE_TITLE "Install ${APPNAME} ${APPVERSION}"
|
|
!define MUI_WELCOMEPAGE_TEXT "Post-quantum backup compression with ML-KEM-768 + X25519 hybrid encryption.$\r$\n$\r$\nThis will install the Zupt GUI and CLI tools."
|
|
|
|
!insertmacro MUI_PAGE_WELCOME
|
|
!insertmacro MUI_PAGE_LICENSE "..\..\LICENSE"
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
!insertmacro MUI_PAGE_FINISH
|
|
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
; ── Install ──
|
|
Section "Install"
|
|
SetOutPath $INSTDIR
|
|
|
|
; Copy files
|
|
File "dist\${EXE}"
|
|
File "${CLI}"
|
|
File "..\..\assets\zupt.ico"
|
|
File "..\..\LICENSE"
|
|
File "..\..\README.md"
|
|
|
|
; Write uninstaller
|
|
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
|
|
|
; Start Menu
|
|
CreateDirectory "$SMPROGRAMS\${APPNAME}"
|
|
CreateShortcut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\${EXE}" "" "$INSTDIR\zupt.ico"
|
|
CreateShortcut "$SMPROGRAMS\${APPNAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
|
|
|
; Desktop shortcut
|
|
CreateShortcut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${EXE}" "" "$INSTDIR\zupt.ico"
|
|
|
|
; Add to PATH (so zupt.exe is available system-wide)
|
|
EnVar::AddValue "PATH" "$INSTDIR"
|
|
|
|
; Register .zupt file association
|
|
WriteRegStr HKCR ".zupt" "" "ZuptArchive"
|
|
WriteRegStr HKCR "ZuptArchive" "" "Zupt Archive"
|
|
WriteRegStr HKCR "ZuptArchive\DefaultIcon" "" "$INSTDIR\zupt.ico"
|
|
WriteRegStr HKCR "ZuptArchive\shell\open\command" "" '"$INSTDIR\${EXE}" --extract "%1"'
|
|
WriteRegStr HKCR "ZuptArchive\shell\verify\command" "" '"$INSTDIR\${CLI}" test "%1"'
|
|
WriteRegStr HKCR "ZuptArchive\shell\verify" "" "Verify Integrity"
|
|
|
|
; Right-click "Compress with Zupt" on any file
|
|
WriteRegStr HKCR "*\shell\ZuptCompress" "" "Compress with Zupt"
|
|
WriteRegStr HKCR "*\shell\ZuptCompress\Icon" "" "$INSTDIR\zupt.ico"
|
|
WriteRegStr HKCR "*\shell\ZuptCompress\command" "" '"$INSTDIR\${EXE}" --compress "%1"'
|
|
|
|
; Right-click on directories
|
|
WriteRegStr HKCR "Directory\shell\ZuptCompress" "" "Compress with Zupt"
|
|
WriteRegStr HKCR "Directory\shell\ZuptCompress\Icon" "" "$INSTDIR\zupt.ico"
|
|
WriteRegStr HKCR "Directory\shell\ZuptCompress\command" "" '"$INSTDIR\${EXE}" --compress "%1"'
|
|
|
|
; Add/Remove Programs entry
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME} — Post-Quantum Backup"
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\Uninstall.exe"
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\zupt.ico"
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${APPVERSION}"
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "URLInfoAbout" "${HELPURL}"
|
|
|
|
; Calculate installed size
|
|
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
|
IntFmt $0 "0x%08X" $0
|
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" "$0"
|
|
SectionEnd
|
|
|
|
; ── Uninstall ──
|
|
Section "Uninstall"
|
|
; Remove files
|
|
Delete "$INSTDIR\${EXE}"
|
|
Delete "$INSTDIR\${CLI}"
|
|
Delete "$INSTDIR\zupt.ico"
|
|
Delete "$INSTDIR\LICENSE"
|
|
Delete "$INSTDIR\README.md"
|
|
Delete "$INSTDIR\Uninstall.exe"
|
|
RMDir "$INSTDIR"
|
|
|
|
; Remove shortcuts
|
|
Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
|
|
Delete "$SMPROGRAMS\${APPNAME}\Uninstall.lnk"
|
|
RMDir "$SMPROGRAMS\${APPNAME}"
|
|
Delete "$DESKTOP\${APPNAME}.lnk"
|
|
|
|
; Remove from PATH
|
|
EnVar::DeleteValue "PATH" "$INSTDIR"
|
|
|
|
; Remove file associations
|
|
DeleteRegKey HKCR ".zupt"
|
|
DeleteRegKey HKCR "ZuptArchive"
|
|
DeleteRegKey HKCR "*\shell\ZuptCompress"
|
|
DeleteRegKey HKCR "Directory\shell\ZuptCompress"
|
|
|
|
; Remove Add/Remove Programs entry
|
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
|
|
DeleteRegKey HKLM "Software\${APPNAME}"
|
|
SectionEnd
|