149 lines
4.7 KiB
NSIS
149 lines
4.7 KiB
NSIS
; kanholec Windows Installer (NSIS)
|
|
; Build: makensis kanholec.nsi
|
|
; Requires: NSIS 3.x (https://nsis.sourceforge.io)
|
|
|
|
!define PRODUCT_NAME "kanholec"
|
|
!define PRODUCT_VERSION "0.62.0"
|
|
!define PRODUCT_PUBLISHER "kanhole Contributors"
|
|
!define PRODUCT_WEB_SITE "https://github.com/kanhole/kanhole"
|
|
!define PRODUCT_DIR "$PROGRAMFILES64\${PRODUCT_NAME}"
|
|
!define PRODUCT_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
|
|
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
|
OutFile "..\..\bin\kanholec-${PRODUCT_VERSION}-setup.exe"
|
|
InstallDir "${PRODUCT_DIR}"
|
|
InstallDirRegKey HKLM "${PRODUCT_UNINSTALL_KEY}" "InstallLocation"
|
|
RequestExecutionLevel admin
|
|
|
|
SetCompressor lzma
|
|
|
|
; Pages (setup wizard)
|
|
Page license
|
|
Page components
|
|
Page directory
|
|
Page instfiles
|
|
Page custom setFinishPage
|
|
|
|
; Uninstaller pages
|
|
UninstPage uninstConfirm
|
|
UninstPage instfiles
|
|
|
|
; License data
|
|
LicenseData "..\..\packaging\windows\license.txt"
|
|
|
|
; Languages
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
; Include modern UI
|
|
!include "MUI2.nsh"
|
|
!include "FileFunc.nsh"
|
|
!include "WinMessages.nsh"
|
|
!include "LogicLib.nsh"
|
|
|
|
Var FinishPage
|
|
Var RunNowCheckbox
|
|
Var ShowReadmeCheckbox
|
|
Var RunNowState
|
|
Var ReadmeState
|
|
|
|
Function setFinishPage
|
|
nsDialogs::Create 1018
|
|
Pop $FinishPage
|
|
|
|
${NSD_CreateLabel} 0 0 100% 24 "Setup Complete"
|
|
Pop $0
|
|
|
|
${NSD_CreateCheckbox} 0 30 100% 12 "Run kanholec now"
|
|
Pop $RunNowCheckbox
|
|
${NSD_Check} $RunNowCheckbox
|
|
|
|
${NSD_CreateCheckbox} 0 46 100% 12 "Open config directory"
|
|
Pop $ShowReadmeCheckbox
|
|
|
|
nsDialogs::Show
|
|
FunctionEnd
|
|
|
|
Function .onGUIEnd
|
|
${NSD_GetState} $RunNowCheckbox $RunNowState
|
|
${NSD_GetState} $ShowReadmeCheckbox $ReadmeState
|
|
|
|
${If} $RunNowState == ${BST_CHECKED}
|
|
ExecShell "open" "$INSTDIR\kanholec.exe"
|
|
${EndIf}
|
|
|
|
${If} $ReadmeState == ${BST_CHECKED}
|
|
ExecShell "open" "$PROGRAMDATA\kanholec"
|
|
${EndIf}
|
|
FunctionEnd
|
|
|
|
Section "kanholec (required)" SEC_KANHOLEC
|
|
SectionIn RO
|
|
SetOutPath "$INSTDIR"
|
|
File "..\..\bin\kanholec-windows-amd64.exe"
|
|
Rename "$INSTDIR\kanholec-windows-amd64.exe" "$INSTDIR\kanholec.exe"
|
|
|
|
; Config directory
|
|
CreateDirectory "$PROGRAMDATA\kanholec"
|
|
SetOutPath "$PROGRAMDATA\kanholec"
|
|
File "/oname=kanholec.toml" "..\..\packaging\windows\kanholec.default.toml"
|
|
|
|
WriteUninstaller "$INSTDIR\uninstall.exe"
|
|
|
|
; Registry for uninstaller
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayName" "${PRODUCT_NAME}"
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\uninstall.exe"
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayIcon" "$INSTDIR\kanholec.exe,0"
|
|
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "InstallLocation" "$INSTDIR"
|
|
WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoModify" 1
|
|
WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoRepair" 1
|
|
SectionEnd
|
|
|
|
Section "Start Menu Shortcuts" SEC_SHORTCUTS
|
|
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\kanholec.lnk" "$INSTDIR\kanholec.exe" "" "$INSTDIR\kanholec.exe" 0
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Config Directory.lnk" "$PROGRAMDATA\kanholec"
|
|
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
|
|
SectionEnd
|
|
|
|
Section "Add to PATH" SEC_PATH
|
|
EnVar::AddValue "PATH" "$INSTDIR"
|
|
Pop $0
|
|
SectionEnd
|
|
|
|
Section "Desktop Shortcut" SEC_DESKTOP
|
|
CreateShortCut "$DESKTOP\kanholec.lnk" "$INSTDIR\kanholec.exe" "" "$INSTDIR\kanholec.exe" 0
|
|
SectionEnd
|
|
|
|
; Descriptions
|
|
LangString DESC_SEC_KANHOLEC ${LANG_ENGLISH} "kanholec binary and default configuration."
|
|
LangString DESC_SEC_SHORTCUTS ${LANG_ENGLISH} "Start menu shortcuts for kanholec."
|
|
LangString DESC_SEC_PATH ${LANG_ENGLISH} "Add kanholec installation directory to system PATH."
|
|
LangString DESC_SEC_DESKTOP ${LANG_ENGLISH} "Create a desktop shortcut for kanholec."
|
|
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_KANHOLEC} $(DESC_SEC_KANHOLEC)
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_SHORTCUTS} $(DESC_SEC_SHORTCUTS)
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_PATH} $(DESC_SEC_PATH)
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $(DESC_SEC_DESKTOP)
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
|
|
|
Section "Uninstall"
|
|
Delete "$INSTDIR\kanholec.exe"
|
|
Delete "$INSTDIR\uninstall.exe"
|
|
RMDir "$INSTDIR"
|
|
|
|
Delete "$SMPROGRAMS\${PRODUCT_NAME}\kanholec.lnk"
|
|
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Config Directory.lnk"
|
|
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
|
|
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
|
|
|
|
Delete "$DESKTOP\kanholec.lnk"
|
|
|
|
EnVar::DeleteValue "PATH" "$INSTDIR"
|
|
|
|
DeleteRegKey HKLM "${PRODUCT_UNINSTALL_KEY}"
|
|
SectionEnd
|