SHARE
TWEET

InstallSingleUser.nsi v1

a guest Oct 12th, 2010 341 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*** InstallSingleUser.nsi ***
  2.  
  3. Tips:
  4. =====
  5. *Don't write to shared areas ($ProgramFiles, $WinDir, Registry\HKLM, Registry\HKCR etc)
  6.  
  7.  
  8. History:
  9. ========
  10. v1.0 [Anders]
  11. *Initial Version
  12.  
  13. */
  14.  
  15. !define APPNAME "FooBarBaz"
  16. ;You could use APPNAME here, but a GUID is guaranteed to be unique, use guidgen.com to create your own
  17. !define REGUINSTKEY "{2C82DD06-21E9-4602-8C2B-266AD720951B}"
  18.  
  19. Outfile "${APPNAME} setup.exe"
  20. Name "${APPNAME}"
  21. RequestExecutionLevel user
  22.  
  23. InstallDirRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REGUINSTKEY}" UninstallString
  24.  
  25. !define FOLDERID_UserProgramFiles {5CD7AEE2-2219-4A67-B85D-6C9CE15660CB}
  26. !define KF_FLAG_CREATE 0x00008000
  27.  
  28. !include LogicLib.nsh
  29. !include WinVer.nsh
  30. !include MUI2.nsh
  31.  
  32. Var SMDir ;Start menu folder
  33.  
  34. Function .onInit
  35. ;Default $Instdir (UserProgramFiles is %LOCALAPPDATA%\Programs by default, so we use that as our default)
  36. StrCpy $0 "$LocalAppData\Programs"
  37.  
  38. ;Make sure we don't overwrite $Instdir if specified on the command line or from InstallDirRegKey
  39. ${If} $Instdir == ""
  40.         ${If} ${IsNT}
  41.                 ;Win7 has a per-user programfiles known folder and this could be a non-default location?
  42.                 System::Call 'Shell32::SHGetKnownFolderPath(g "${FOLDERID_UserProgramFiles}",i ${KF_FLAG_CREATE},i0,*i.r2)i.r1'
  43.                 ${If} $1 == 0
  44.                         System::Call '*$2(&w${NSIS_MAX_STRLEN} .r1)'
  45.                         StrCpy $0 $1
  46.                         System::Call 'Ole32::CoTaskMemFree(ir2)'
  47.                 ${EndIf}
  48.         ${Else}
  49.                 ;Everyone is admin on Win9x, so falling back to $ProgramFiles is ok
  50.                 ${IfThen} $LocalAppData == "" ${|} StrCpy $0 $ProgramFiles ${|}
  51.         ${EndIf}
  52.         StrCpy $Instdir "$0\${APPNAME}"
  53. ${EndIf}
  54. FunctionEnd
  55.  
  56.  
  57. !insertmacro MUI_PAGE_WELCOME
  58. #!insertmacro MUI_PAGE_COMPONENTS ;This example does not have separate components
  59. !insertmacro MUI_PAGE_DIRECTORY
  60. !insertmacro MUI_PAGE_STARTMENU 0 $SMDir
  61. !insertmacro MUI_PAGE_INSTFILES
  62. !insertmacro MUI_PAGE_FINISH
  63.  
  64. !insertmacro MUI_UNPAGE_WELCOME
  65. !insertmacro MUI_UNPAGE_CONFIRM
  66. !insertmacro MUI_UNPAGE_INSTFILES
  67.  
  68. !insertmacro MUI_LANGUAGE "English"
  69.  
  70. Section "Required Files"
  71. SectionIn RO
  72. SetOutPath $InstDir
  73. ###TODO: File MyApp.exe
  74.  
  75. WriteUninstaller "$InstDir\uninstall.exe"
  76. WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REGUINSTKEY}" UninstallString '"$InstDir\uninstall.exe"'
  77. WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REGUINSTKEY}" DisplayName "${APPNAME}"
  78. SectionEnd
  79.  
  80. Section -StartMenu
  81. !insertmacro MUI_STARTMENU_WRITE_BEGIN 0
  82. CreateDirectory "$SMPrograms\$SMDir"
  83. ###TODO: CreateShortcut "$SMPrograms\$SMDir\${APPNAME}.lnk" '"$Instdir\MyApp.exe"'
  84.  
  85. ;We need to save the startmenu folder so we can remove the shortcut in the uninstaller
  86. WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REGUINSTKEY}" "NSIS:SMDir" $SMDir
  87. !insertmacro MUI_STARTMENU_WRITE_END
  88. SectionEnd
  89.  
  90.  
  91. Section Uninstall
  92. ReadRegStr $SMDir HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REGUINSTKEY}" "NSIS:SMDir"
  93. ${If} $SMDir != ""
  94.         ###TODO: Delete "$SMPrograms\$SMDir\${APPNAME}.lnk"
  95.         RMDir "$SMPrograms\$SMDir"
  96. ${EndIf}
  97.  
  98. DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REGUINSTKEY}"
  99.  
  100. ###TODO: Delete "$InstDir\MyApp.exe"
  101. Delete "$InstDir\uninstall.exe"
  102. RMDir "$InstDir"
  103. SectionEnd
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top