diff -r 2ae1abe546fd -r 61f1654b7734 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