From 93c33c3572621a918b22e060e4aae54eae495952 Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Thu, 29 Jul 2021 23:03:06 -0400 Subject: [PATCH] installer: override windows nsis script --- src/installer/windows/Installer.nsi | 101 ++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/installer/windows/Installer.nsi diff --git a/src/installer/windows/Installer.nsi b/src/installer/windows/Installer.nsi new file mode 100644 index 0000000..47dfb0f --- /dev/null +++ b/src/installer/windows/Installer.nsi @@ -0,0 +1,101 @@ +!include MUI2.nsh +!include FileFunc.nsh + +;-------------------------------- +;Perform Machine-level install, if possible + +!define MULTIUSER_EXECUTIONLEVEL Highest +;Add support for command-line args that let uninstaller know whether to +;uninstall machine- or user installation: +!define MULTIUSER_INSTALLMODE_COMMANDLINE +!include MultiUser.nsh +!include LogicLib.nsh + +Function .onInit + !insertmacro MULTIUSER_INIT + ;Do not use InstallDir at all so we can detect empty $InstDir! + ${If} $InstDir == "" ; /D not used + ${If} $MultiUser.InstallMode == "AllUsers" + StrCpy $InstDir "$PROGRAMFILES\${app_name}" + ${Else} + StrCpy $InstDir "$LOCALAPPDATA\${app_name}" + ${EndIf} + ${EndIf} +FunctionEnd + +Function un.onInit + !insertmacro MULTIUSER_UNINIT +FunctionEnd + +;-------------------------------- +;General + + Name "${app_name}" + OutFile "..\${installer}" + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of ${app_name}.$\r$\n$\r$\n$\r$\nClick Next to continue." + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + !define MUI_FINISHPAGE_NOAUTOCLOSE + !define MUI_FINISHPAGE_RUN + !define MUI_FINISHPAGE_RUN_CHECKED + !define MUI_FINISHPAGE_RUN_TEXT "Run ${app_name}" + !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Installer Sections + +!define UNINST_KEY \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${app_name}" +Section + SetOutPath "$InstDir" + File /r "..\${app_name}\*" + WriteRegStr SHCTX "Software\${app_name}" "" $InstDir + WriteUninstaller "$InstDir\uninstall.exe" + CreateShortCut "$SMPROGRAMS\${app_name}.lnk" "$InstDir\${app_name}.exe" + WriteRegStr SHCTX "${UNINST_KEY}" "DisplayName" "${app_name}" + WriteRegStr SHCTX "${UNINST_KEY}" "UninstallString" \ + "$\"$InstDir\uninstall.exe$\" /$MultiUser.InstallMode" + WriteRegStr SHCTX "${UNINST_KEY}" "QuietUninstallString" \ + "$\"$InstDir\uninstall.exe$\" /$MultiUser.InstallMode /S" + WriteRegStr SHCTX "${UNINST_KEY}" "Publisher" "${author}" + ${GetSize} "$InstDir" "/S=0K" $0 $1 $2 + IntFmt $0 "0x%08X" $0 + WriteRegDWORD SHCTX "${UNINST_KEY}" "EstimatedSize" "$0" + +SectionEnd + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + RMDir /r "$InstDir" + Delete "$SMPROGRAMS\${app_name}.lnk" + DeleteRegKey /ifempty SHCTX "Software\${app_name}" + DeleteRegKey SHCTX "${UNINST_KEY}" + +SectionEnd + +Function LaunchLink + !addplugindir "." + ShellExecAsUser::ShellExecAsUser "open" "$SMPROGRAMS\${app_name}.lnk" +FunctionEnd \ No newline at end of file