; Script generated by the HM NIS Edit Script Wizard. RequestExecutionLevel user !include x64.nsh !include WordFunc.nsh !insertmacro VersionCompare !include LogicLib.nsh SetCompressor lzma ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "OpenTK" !define PRODUCT_VERSION "{{version}}" ; To be replaced by Build.exe !define PRODUCT_VERSION_REVISION "{{revision}}" ; To be replaced by Build.exe !define PRODUCT_VERSION_EXTRA "{{extra}}" ; To be replaced by Build.exe !define PRODUCT_PUBLISHER "The Open Toolkit team" !define PRODUCT_WEB_SITE "http://www.opentk.com" !define PRODUCT_UNINST_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define DOTNET20_PUBLIC_ASSEMBLIES_KEY "SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\${PRODUCT_NAME} ${PRODUCT_VERSION}" !define MULTIUSER_EXECUTIONLEVEL User ;!define MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "SHELL_CONTEXT" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "InstallDir" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "SHELL_CONTEXT" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "InstallDir" !define MULTIUSER_INSTALLMODE_INSTDIR "${PRODUCT_NAME}\${PRODUCT_VERSION}" ;!include MultiUser.nsh ; Doesn't really do what we need to (goes to AppData instead of Documents, no x64 support) ; MUI 1.67 compatible ------ !include "MUI.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "..\..\Source\Examples\Resources\App.ico" !define MUI_UNICON "..\..\Source\Examples\Resources\App.ico" ; Language Selection Dialog Settings !define MUI_LANGDLL_REGISTRY_ROOT "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "..\..\Documentation\License.txt" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "Afrikaans" !insertmacro MUI_LANGUAGE "Albanian" !insertmacro MUI_LANGUAGE "Arabic" !insertmacro MUI_LANGUAGE "Basque" !insertmacro MUI_LANGUAGE "Belarusian" !insertmacro MUI_LANGUAGE "Bosnian" !insertmacro MUI_LANGUAGE "Breton" !insertmacro MUI_LANGUAGE "Bulgarian" !insertmacro MUI_LANGUAGE "Catalan" !insertmacro MUI_LANGUAGE "Croatian" !insertmacro MUI_LANGUAGE "Czech" !insertmacro MUI_LANGUAGE "Danish" !insertmacro MUI_LANGUAGE "Dutch" !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Esperanto" !insertmacro MUI_LANGUAGE "Estonian" !insertmacro MUI_LANGUAGE "Farsi" !insertmacro MUI_LANGUAGE "Finnish" !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "Galician" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Greek" !insertmacro MUI_LANGUAGE "Hebrew" !insertmacro MUI_LANGUAGE "Hungarian" !insertmacro MUI_LANGUAGE "Icelandic" !insertmacro MUI_LANGUAGE "Indonesian" !insertmacro MUI_LANGUAGE "Irish" !insertmacro MUI_LANGUAGE "Italian" !insertmacro MUI_LANGUAGE "Japanese" !insertmacro MUI_LANGUAGE "Korean" !insertmacro MUI_LANGUAGE "Kurdish" !insertmacro MUI_LANGUAGE "Latvian" !insertmacro MUI_LANGUAGE "Lithuanian" !insertmacro MUI_LANGUAGE "Luxembourgish" !insertmacro MUI_LANGUAGE "Macedonian" !insertmacro MUI_LANGUAGE "Malay" !insertmacro MUI_LANGUAGE "Mongolian" !insertmacro MUI_LANGUAGE "Norwegian" !insertmacro MUI_LANGUAGE "NorwegianNynorsk" !insertmacro MUI_LANGUAGE "Polish" !insertmacro MUI_LANGUAGE "Portuguese" !insertmacro MUI_LANGUAGE "PortugueseBR" !insertmacro MUI_LANGUAGE "Romanian" !insertmacro MUI_LANGUAGE "Russian" !insertmacro MUI_LANGUAGE "Serbian" !insertmacro MUI_LANGUAGE "SerbianLatin" !insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "Slovak" !insertmacro MUI_LANGUAGE "Slovenian" !insertmacro MUI_LANGUAGE "Spanish" !insertmacro MUI_LANGUAGE "SpanishInternational" !insertmacro MUI_LANGUAGE "Swedish" !insertmacro MUI_LANGUAGE "Thai" !insertmacro MUI_LANGUAGE "TradChinese" !insertmacro MUI_LANGUAGE "Turkish" !insertmacro MUI_LANGUAGE "Ukrainian" !insertmacro MUI_LANGUAGE "Uzbek" !insertmacro MUI_LANGUAGE "Welsh" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI END ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "opentk-${PRODUCT_VERSION}.${PRODUCT_VERSION_REVISION}-${PRODUCT_VERSION_EXTRA}.exe" InstallDir "${MULTIUSER_INSTALLMODE_INSTDIR}" ShowInstDetails show ShowUnInstDetails show Var AccountType Function .onInit ; !insertmacro MULTIUSER_INIT UserInfo::GetAccountType Pop $AccountType ${If} $AccountType == "Admin" ${OrIf} $AccountType == "Power" ${If} ${RunningX64} StrCpy $INSTDIR "$PROGRAMFILES64\${MULTIUSER_INSTALLMODE_INSTDIR}" ${Else} StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}" ${EndIf} ${Else} StrCpy $INSTDIR "$DOCUMENTS\${MULTIUSER_INSTALLMODE_INSTDIR}" ${EndIf} !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd ; The "" makes the section hidden. Section "" SecUninstallPrevious Call UninstallPrevious SectionEnd Function UninstallPrevious ; Check for uninstaller. ReadRegStr $R0 ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" "InstallDir" ${If} $R0 == "" Goto Done ${EndIf} DetailPrint "Removing previous installation." ; Run the uninstaller silently. ExecWait '"$INSTDIR\uninst.exe /S"' Done: FunctionEnd Section "MainSection" SEC01 ${If} $INSTDIR == $PROGRAMFILES ${OrIf} $INSTDIR == $DOCUMENTS ${OrIf} $INSTDIR == $DESKTOP ${OrIf} $INSTDIR == $WINDIR ${OrIf} $INSTDIR == $SYSDIR ${OrIf} $INSTDIR == $PROFILE MessageBox MB_OK "Cannot install directly under $INSTDIR. Please specify a subfolder." Abort ${EndIf} SetOutPath $INSTDIR File /r /x *.vshost.exe /x *.vshost.exe.manifest /x *.log ..\..\Binaries File /r /x .svn /x Source /x Source\*.* ..\..\Documentation File /r /x .svn /x obj /x *.snk /x *.user /x *.pidb /x html /x latex /x OpenTK*.xml ..\..\Source File ..\..\Build.exe File ..\..\*.sln File /r /x .svn /x opentk-actual.* /x opentk*.exe /x opentk*.msi /x opentk*.deb /x opentk*.rpm ..\..\Installers SectionEnd Section -AdditionalIcons SetOutPath $INSTDIR WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateDirectory "$SMPROGRAMS\OpenTK" CreateShortCut "$SMPROGRAMS\OpenTK\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" CreateShortCut "$SMPROGRAMS\OpenTK\Examples.lnk" "$INSTDIR\Binaries\OpenTK\Debug\Examples.exe" CreateShortCut "$SMPROGRAMS\OpenTK\Reference.lnk" "$INSTDIR\Documentation\Reference.pdf" CreateShortCut "$SMPROGRAMS\OpenTK\Manual.lnk" "$INSTDIR\Documentation\Manual.pdf" CreateShortCut "$SMPROGRAMS\OpenTK\Release.lnk" "$INSTDIR\Documentation\Release.txt" SectionEnd Section -Post ${If} ${RunningX64} SetRegView 64 ${EndIf} WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" WriteRegStr ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${DOTNET20_PUBLIC_ASSEMBLIES_KEY}" "" "$INSTDIR\Binaries\OpenTK\Release" ; Install necessary dependencies ExecShell "open" '"$INSTDIR\Installers\Dependencies\oalinst.exe"' /S SectionEnd Function un.onUninstSuccess HideWindow ;MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully uninstalled." FunctionEnd Function un.onInit ; !insertmacro MULTIUSER_UNINIT !insertmacro MUI_UNGETLANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you wish to completely uninstall $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd Section Uninstall ${If} ${RunningX64} SetRegView 64 ${EndIf} Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\uninst.exe" Delete "$SMPROGRAMS\OpenTK\Examples.lnk" Delete "$SMPROGRAMS\OpenTK\Website.lnk" Delete "$SMPROGRAMS\OpenTK\Reference.lnk" Delete "$SMPROGRAMS\OpenTK\Manual.lnk" Delete "$SMPROGRAMS\OpenTK\Release.lnk" RMDir "$SMPROGRAMS\OpenTK" Delete "$INSTDIR\*.sln" Delete "$INSTDIR\Build.exe" Delete "$INSTDIR\*.log" RMDir /r "$INSTDIR\Installers" RMDir /r "$INSTDIR\Source" RMDir /r "$INSTDIR\Documentation" RMDir /r "$INSTDIR\Binaries" RMDir "$INSTDIR" DeleteRegKey ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} "${DOTNET20_PUBLIC_ASSEMBLIES_KEY}" SetAutoClose true SectionEnd