Added a basic, but working, installer.
authorDan
Mon, 03 Aug 2009 21:48:40 -0400
changeset 14 61f1654b7734
parent 13 2ae1abe546fd
child 15 d3e8fdadd6d6
Added a basic, but working, installer.
experienceui-setup.nsi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/experienceui-setup.nsi	Mon Aug 03 21:48:40 2009 -0400
@@ -0,0 +1,134 @@
+; ExperienceUI installation
+Name "ExperienceUI SDK"
+
+SetCompressor /final /solid lzma
+
+!define XPUI_SYSDIR ".\Contrib\ExperienceUI"
+!include "${XPUI_SYSDIR}\XPUI.nsh"
+OutFile "experienceui-${XPUI_VERSION}.exe"
+InstallDir "$PROGRAMFILES\NSIS\ExperienceUI"
+InstallDirRegKey HKLM "Software\NSIS\ExperienceUI" ""
+RequestExecutionLevel admin
+
+${Page} Welcome2
+${LicensePage} "Contrib\ExperienceUI\License.rtf"
+${Page} Directory
+${Page} InstConfirm
+${Page} InstFiles
+
+${UnPage} Welcome2
+${UnPage} UnConfirm
+${UnPage} InstFiles
+${UnPage} Finish
+
+${Language} English
+
+Function .onInit
+  ClearErrors
+  ReadRegStr $0 HKLM "Software\NSIS" ""
+  IfErrors 0 +2
+    Return
+    
+  ; Set installation dir only if the ExUI is not installed
+  ClearErrors
+  ReadRegStr $R0 HKLM "Software\NSIS\ExperienceUI" ""
+  IfErrors +2
+    Return
+    
+  StrCpy $INSTDIR "$0\ExperienceUI"
+FunctionEnd
+
+Section
+  SetOutPath $INSTDIR
+  File /r Contrib
+  File /r Docs
+  File /r Examples
+  File /r Include
+  File /r Plugins
+  
+  ; Write install dir
+  WriteRegStr HKLM "Software\NSIS\ExperienceUI" "" "$INSTDIR"
+  
+  ; Write uninstaller
+  WriteUninstaller "$INSTDIR\uninstall-exui.exe"
+  
+  ; Registry stuff
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" "DisplayName" "$(^Name)"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" "UninstallString" "$INSTDIR\uninstall-exui.exe"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" "DisplayIcon" "$INSTDIR\Contrib\Graphics\Icons\XPUI-install.ico"
+  
+  ; Register with NSIS
+  ClearErrors
+  ReadRegStr $0 HKLM "Software\NSIS" ""
+  IfErrors 0 +3
+    ; NSIS not found
+    MessageBox MB_OK|MB_ICONEXCLAMATION "Setup did not detect NSIS on your system. Integrating the ExperienceUI with NSIS will be your job once you install NSIS."
+    Return
+    
+  MessageBox MB_YESNO|MB_ICONQUESTION "Found NSIS installation at $0. Do you want to register the ExperienceUI SDK with this copy of NSIS?$\n$\n(If you don't, you'll have to specify the full path to XPUI.nsh in your scripts.)" IDYES +2
+    Return
+    
+  ; Write in .nsh
+  ; $0 = NSIS installation dir
+  ClearErrors
+  FileOpen $1  "$0\Include\XPUI.nsh" "w"
+  FileWrite $1 "!define XPUI_SYSDIR $\"$INSTDIR\Contrib\ExperienceUI$\"$\r$\n"
+  FileWrite $1 "!include $\"$$"
+  ; stupid compiler bugs...
+  FileWrite $1 "{XPUI_SYSDIR}\XPUI.nsh$\"$\r$\n"
+  FileClose $0
+SectionEnd
+
+Section "Uninstall"
+  Delete "$INSTDIR\uninstall-exui.exe"
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
+  DeleteRegKey HKLM "Software\NSIS\ExperienceUI"
+  
+  ; The goal here: completely clean up the ExperienceUI, but if
+  ; there's other stuff, don't touch it
+  
+  ; Remember, only RmDir /r removes directories with files.
+  ; Otherwise, it only removes fully empty directories.
+
+  ; Contrib
+  RmDir /r "$INSTDIR\Contrib\ExperienceUI"
+  Delete "$INSTDIR\Contrib\Graphics\Icons\XPUI-install.ico"
+  Delete "$INSTDIR\Contrib\Graphics\Icons\XPUI-uninstall.ico"
+  RmDir  "$INSTDIR\Contrib\Graphics\Icons"
+  RmDir  "$INSTDIR\Contrib\Graphics"
+  RmDir  "$INSTDIR\Contrib"
+  
+  ; Docs
+  RmDir /r "$INSTDIR\Docs\ExperienceUI"
+  RmDir "$INSTDIR\Docs"
+  
+  ; Examples
+  RmDir /r "$INSTDIR\Examples\ExperienceUI"
+  RmDir "$INSTDIR\Examples"
+  
+  ; Include
+  Delete "$INSTDIR\Include\NSISArray.nsh"
+  Delete "$INSTDIR\Include\RecFind.nsh"
+  Delete "$INSTDIR\Include\system.nsh"
+  Delete "$INSTDIR\Include\XPUI.nsh"
+  RmDir "$INSTDIR\Include"
+  
+  ; Plugins
+  Delete "$INSTDIR\Plugins\DcryptDll.dll"
+  Delete "$INSTDIR\Plugins\messagebox.dll"
+  Delete "$INSTDIR\Plugins\newadvsplash.dll"
+  Delete "$INSTDIR\Plugins\NSISArray.dll"
+  Delete "$INSTDIR\Plugins\WAnsis.dll"
+  Delete "$INSTDIR\Plugins\ZipDLL.dll"
+  RmDir "$INSTDIR\Plugins"
+  
+  RmDir "$INSTDIR"
+  
+  ClearErrors
+  ReadRegStr $0 HKLM "Software\NSIS" ""
+  IfErrors +2
+    Return
+    
+  Delete "$0\Include\XPUI.nsh"
+  
+SectionEnd
\ No newline at end of file