; Gig Line Windows installer (NSIS 3). ; Build from the repo root with the exported self-contained exe: ; makensis /DVERSION=0.2.0 /DARTIFACT=build/gig-line-windows-0.2.0.exe \ ; /DICON=packaging/windows/gig-line.ico packaging/windows/gig-line.nsi ; Outputs: build/gig-line-setup-.exe !ifndef VERSION !define VERSION "0.0.0" !endif !ifndef ARTIFACT !error "ARTIFACT define required (path to exported windows exe)" !endif !ifndef ICON !define ICON "packaging\windows\gig-line.ico" !endif ; The installed executable uses this clean name (no spaces — NSIS /oname tokens ; on whitespace, so a spaced name breaks the File directive). !define INSTALLED_EXE "gig-line.exe" !ifndef OUT !define OUT "build\gig-line-setup-${VERSION}.exe" !endif !define COMPANY "Gig Line Project" !define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gig Line" Unicode true ManifestDPIAware true Icon "${ICON}" UninstallIcon "${ICON}" Name "Gig Line ${VERSION}" OutFile "${OUT}" InstallDir "$PROGRAMFILES64\Gig Line" RequestExecutionLevel admin Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles Section "Install" SetOutPath "$INSTDIR" ; The self-contained executable contains ALL game data (embedded PCK). File "/oname=${INSTALLED_EXE}" "${ARTIFACT}" WriteUninstaller "$INSTDIR\uninstall.exe" ; Shortcuts CreateDirectory "$SMPROGRAMS\Gig Line" CreateShortCut "$SMPROGRAMS\Gig Line\Gig Line.lnk" "$INSTDIR\${INSTALLED_EXE}" CreateShortCut "$SMPROGRAMS\Gig Line\Uninstall.lnk" "$INSTDIR\uninstall.exe" CreateShortCut "$DESKTOP\Gig Line.lnk" "$INSTDIR\${INSTALLED_EXE}" ; Registry (Add/Remove Programs) WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "Gig Line" WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${VERSION}" WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${COMPANY}" WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${INSTALLED_EXE}" WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"$INSTDIR\uninstall.exe"' WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1 WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1 SectionEnd Section "Uninstall" Delete "$INSTDIR\${INSTALLED_EXE}" Delete "$INSTDIR\uninstall.exe" RMDir "$INSTDIR" Delete "$SMPROGRAMS\Gig Line\Gig Line.lnk" Delete "$SMPROGRAMS\Gig Line\Uninstall.lnk" RMDir "$SMPROGRAMS\Gig Line" Delete "$DESKTOP\Gig Line.lnk" DeleteRegKey HKLM "${UNINST_KEY}" SectionEnd