; 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