12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- Name "MultiUser example"
- OutFile "MultiUser.exe"
- !define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
- !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${UNINSTKEY}"
- !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "CurrentUser"
- !define MULTIUSER_INSTALLMODE_INSTDIR "$(^Name)"
- !define MULTIUSER_INSTALLMODE_COMMANDLINE
- !define MULTIUSER_EXECUTIONLEVEL Highest
- !define MULTIUSER_MUI
- !include "LogicLib.nsh"
- !include "MultiUser.nsh"
- !include "MUI2.nsh"
- !insertmacro MUI_PAGE_WELCOME
- !insertmacro MULTIUSER_PAGE_INSTALLMODE
- !insertmacro MUI_PAGE_DIRECTORY
- !insertmacro MUI_PAGE_INSTFILES
- !insertmacro MUI_PAGE_FINISH
- !insertmacro MUI_UNPAGE_CONFIRM
- !insertmacro MUI_UNPAGE_INSTFILES
- !insertmacro MUI_LANGUAGE "English"
- Function .onInit
- !insertmacro MULTIUSER_INIT
- FunctionEnd
- Function un.onInit
- !insertmacro MULTIUSER_UNINIT
- FunctionEnd
- Section
- SetOutPath "$InstDir"
- WriteUninstaller "$InstDir\Uninstall.exe"
- WriteRegStr ShCtx "${UNINSTKEY}" DisplayName "$(^Name)"
- WriteRegStr ShCtx "${UNINSTKEY}" UninstallString '"$InstDir\Uninstall.exe"'
- WriteRegStr ShCtx "${UNINSTKEY}" $MultiUser.InstallMode 1 ; Write MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME so the correct context can be detected in the uninstaller.
- !tempfile APP
- !makensis '-v2 "-DOUTFILE=${APP}" "-DNAME=NsisMultiUserExample" -DCOMPANY=Nullsoft "AppGen.nsi"' = 0
- File "/oname=$InstDir\MyApp.exe" "${APP}" ; Pretend that we have a real application to install
- !delfile "${APP}"
- SectionEnd
- Section "Start Menu shortcut"
- CreateShortcut /NoWorkingDir "$SMPrograms\$(^Name).lnk" "$InstDir\MyApp.exe"
- SectionEnd
- Section "-Uninstall"
- Delete "$SMPrograms\$(^Name).lnk"
- Delete "$InstDir\MyApp.exe"
- Delete "$InstDir\Uninstall.exe"
- DeleteRegKey ShCtx "${UNINSTKEY}"
- RMDir $InstDir
- SectionEnd
|