1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /*
- This example script installs a simple application for all users on a machine.
- All-users installers should only write to HKLM, $ProgramFiles, $CommonFiles and the
- "All context" versions of $LocalAppData, $Templates, $SMPrograms etc.
- It should not write to HKCU nor any folders in the users profile!
- If the application requires writable template data in $AppData it
- must copy the required files from a shared location the
- first time a user launches the application.
- */
- !define NAME "All-users example"
- !define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}"
- Name "${NAME}"
- OutFile "Install ${NAME}.exe"
- Unicode True
- RequestExecutionLevel Admin ; Request admin rights on WinVista+ (when UAC is turned on)
- InstallDir "$ProgramFiles\$(^Name)"
- InstallDirRegKey HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString"
- !include LogicLib.nsh
- !include Integration.nsh
- Page Directory
- Page InstFiles
- Uninstpage UninstConfirm
- Uninstpage InstFiles
- !macro EnsureAdminRights
- UserInfo::GetAccountType
- Pop $0
- ${If} $0 != "admin" ; Require admin rights on WinNT4+
- MessageBox MB_IconStop "Administrator rights required!"
- SetErrorLevel 740 ; ERROR_ELEVATION_REQUIRED
- Quit
- ${EndIf}
- !macroend
- Function .onInit
- SetShellVarContext All
- !insertmacro EnsureAdminRights
- FunctionEnd
- Function un.onInit
- SetShellVarContext All
- !insertmacro EnsureAdminRights
- FunctionEnd
- Section "Program files (Required)"
- SectionIn Ro
- SetOutPath $InstDir
- WriteUninstaller "$InstDir\Uninst.exe"
- WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}"
- WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" "$InstDir\MyApp.exe,0"
- WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$InstDir\Uninst.exe"'
- WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$InstDir\Uninst.exe" /S'
- WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoModify" 1
- WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1
- !tempfile APP
- !makensis '-v2 "-DOUTFILE=${APP}" "-DNAME=NSISSharedAppExample" -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
- !macro DeleteFileOrAskAbort path
- ClearErrors
- Delete "${path}"
- IfErrors 0 +3
- MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP 'Unable to delete "${path}"!' IDRETRY -3 IDIGNORE +2
- Abort "Aborted"
- !macroend
- Section -Uninstall
- !insertmacro DeleteFileOrAskAbort "$InstDir\MyApp.exe"
- Delete "$InstDir\Uninst.exe"
- RMDir "$InstDir"
- DeleteRegKey HKLM "${REGPATH_UNINSTSUBKEY}"
- ${UnpinShortcut} "$SMPrograms\${NAME}.lnk"
- Delete "$SMPrograms\${NAME}.lnk"
- SectionEnd
|