; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; UltraStar Deluxe Installer: Main ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ !include MUI2.nsh !include WinVer.nsh !include LogicLib.nsh !include InstallOptions.nsh !include nsDialogs.nsh !include UAC.nsh ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Variables ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Installer Paths: !define path_settings ".\settings" !define path_languages ".\languages" !define path_dependencies ".\dependencies" !define path_images ".\dependencies\images" !define path_plugins ".\dependencies\plugins" ; MultiLanguage - Show all languages: !define MUI_LANGDLL_ALLLANGUAGES !addPluginDir "${path_plugins}\" !include "${path_settings}\variables.nsh" !include "${path_settings}\functions.nsh" ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Export Settings ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ SetCompress Auto SetCompressor lzma SetCompressorDictSize 32 SetDatablockOptimize On CRCCheck on XPStyle on Name "${name} v.${version}" Brandingtext "${name} v.${version} Installation" OutFile "ultrastardx-${version}-installer-full.exe" InstallDir "$PROGRAMFILES\${name}" InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UltraStar Deluxe" "InstallDir" ; Windows Vista / Windows 7: ; must be "user" for UAC plugin RequestExecutionLevel user ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Interface Settings ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Icons: !define MUI_ICON "${img_install}" !define MUI_UNICON "${img_uninstall}" ; Header and Side Images: !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "${path_images}\${img_header}" !define MUI_HEADERIMAGE_UNBITMAP "${path_images}\${img_header}" !define MUI_WELCOMEFINISHPAGE_BITMAP "${path_images}\${img_side}" !define MUI_UNWELCOMEFINISHPAGE_BITMAP "${path_images}\${img_side}" ; Abort Warnings: !define MUI_ABORTWARNING !define MUI_ABORTWARNING_TEXT "$(abort_install)" !define MUI_ABORTWARNING_CANCEL_DEFAULT !define MUI_UNABORTWARNING !define MUI_UNABORTWARNING_TEXT "$(abort_uninstall)" !define MUI_UNABORTWARNING_CANCEL_DEFAULT ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Pages Installation Routine Settings ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ !define MUI_CUSTOMFUNCTION_GUIINIT bgmusic ; Welcome Page: !define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_WELCOMEPAGE_TITLE "$(page_welcome_title)" !define MUI_WELCOMEPAGE_TEXT "$(page_welcome_txt)" ; License Page: !define MUI_LICENSEPAGE_RADIOBUTTONS ; Components Page: !define MUI_COMPONENTSPAGE_SMALLDESC !define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO $(page_components_info) ; Finish Pages: !define MUI_FINISHPAGE_TITLE_3LINES !define MUI_FINISHPAGE_TEXT_LARGE !define MUI_FINISHPAGE_TEXT "$(page_finish_txt)" ; MUI_FINISHPAGE_RUN is executed as admin by default. ; To get the config.ini location right it must be executed with user ; rights instead. !define MUI_FINISHPAGE_RUN !define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_RUN_FUNCTION RunAppAsUser Function RunAppAsUser UAC::ShellExec 'open' '' '$INSTDIR\${exe}.exe' '' '$INSTDIR' FunctionEnd !define MUI_FINISHPAGE_LINK "$(page_finish_linktxt)" !define MUI_FINISHPAGE_LINK_LOCATION "${homepage}" !define MUI_FINISHPAGE_SHOWREADME !define MUI_FINISHPAGE_SHOWREADME_TEXT $(page_finish_desktop) !define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortCuts !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_UNFINISHPAGE_NOAUTOCLOSE !define MUI_FINISHPAGE_NOREBOOTSUPPORT ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Pages Installation Routine ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "${license}" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY ; Start menu page Var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${name}" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${name}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP !insertmacro MUI_PAGE_INSTFILES ; USDX Settings Page Page custom Settings ; User data info Var UseAppData ; true if APPDATA is used for user data, false for INSTDIR Var UserDataPath ; Path to user data dir (e.g. $INSTDIR) Var ConfigIniPath ; Path to config.ini (e.g. "$INSTDIR\config.ini") ; Checks for write permissions on $INSTDIR\config.ini. ; This function creates $INSTDIR\config.use as a marker file if ; the user has write permissions. ; Note: Must be run with user privileges Function CheckInstDirUserPermissions ClearErrors ; try to open the ini file. ; Use "append" mode so an existing config.ini is not destroyed. FileOpen $0 "$INSTDIR\config.ini" a IfErrors end ; we have write permissions -> create a marker file FileOpen $1 "$INSTDIR\config.use" a FileClose $1 end: FileClose $0 FunctionEnd ; Determines the directory used for config.ini and other user ; settings and data. ; Sets $UseAppData, $UserDataPath and $ConfigIniPath Function DetermineUserDataDir Delete "$INSTDIR\config.use" !insertmacro UAC.CallFunctionAsUser CheckInstDirUserPermissions IfFileExists "$INSTDIR\config.use" 0 notexists StrCpy $UseAppData false StrCpy $UserDataPath "$INSTDIR" Goto end notexists: StrCpy $UseAppData true SetShellVarContext current StrCpy $UserDataPath "$APPDATA\ultrastardx" SetShellVarContext all end: Delete "$INSTDIR\config.use" StrCpy $ConfigIniPath "$UserDataPath\config.ini" FunctionEnd Function Settings !insertmacro INSTALLOPTIONS_WRITE "Settings-$LANGUAGE" "Field 18" "State" "$INSTDIR\songs" !insertmacro MUI_HEADER_TEXT " " "$(page_settings_subtitle)" !insertmacro INSTALLOPTIONS_DISPLAY "Settings-$LANGUAGE" ; Get all the variables: Var /GLOBAL LABEL_COMPONENTS Var /GLOBAL CHECKBOX_COVERS Var /GLOBAL CB_COVERS_State Var /GLOBAL CHECKBOX_SCORES Var /GLOBAL CB_SCORES_State Var /GLOBAL CHECKBOX_CONFIG Var /GLOBAL CB_CONFIG_State Var /GLOBAL CHECKBOX_SCREENSHOTS Var /GLOBAL CB_SCREENSHOTS_State Var /GLOBAL CHECKBOX_PLAYLISTS Var /GLOBAL CB_PLAYLISTS_State Var /GLOBAL CHECKBOX_SONGS Var /GLOBAL CB_SONGS_State Var /GLOBAL fullscreen Var /GLOBAL language2 Var /GLOBAL resolution Var /GLOBAL tabs Var /GLOBAL sorting Var /GLOBAL songdir !insertmacro INSTALLOPTIONS_READ $fullscreen "Settings-$LANGUAGE" "Field 5" "State" !insertmacro INSTALLOPTIONS_READ $language2 "Settings-$LANGUAGE" "Field 6" "State" !insertmacro INSTALLOPTIONS_READ $resolution "Settings-$LANGUAGE" "Field 7" "State" !insertmacro INSTALLOPTIONS_READ $tabs "Settings-$LANGUAGE" "Field 8" "State" !insertmacro INSTALLOPTIONS_READ $sorting "Settings-$LANGUAGE" "Field 15" "State" !insertmacro INSTALLOPTIONS_READ $songdir "Settings-$LANGUAGE" "Field 18" "State" WriteINIStr "$ConfigIniPath" "Game" "Language" "$language2" WriteINIStr "$ConfigIniPath" "Game" "Tabs" "$tabs" WriteINIStr "$ConfigIniPath" "Game" "Sorting" "$sorting" WriteINIStr "$ConfigIniPath" "Graphics" "FullScreen" "$fullscreen" WriteINIStr "$ConfigIniPath" "Graphics" "Resolution" "$resolution" ${If} $songdir != "$INSTDIR\songs" WriteINIStr "$ConfigIniPath" "Directories" "SongDir1" "$songdir" ${EndIf} FunctionEnd ; Settings page End !insertmacro MUI_PAGE_FINISH ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Pages UnInstallation Routine ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ !define MUI_WELCOMEPAGE_TITLE "$(page_un_welcome_title)" !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM UninstPage custom un.AskDelete un.DeleteAll Function un.AskDelete nsDialogs::Create /NOUNLOAD 1018 ${NSD_CreateLabel} 0 -195 100% 12u "$(delete_components)" Pop $LABEL_COMPONENTS ${NSD_CreateCheckbox} 0 -175 100% 8u "$(delete_covers)" Pop $CHECKBOX_COVERS nsDialogs::OnClick /NOUNLOAD $CHECKBOX_COVERS $1 ${NSD_CreateCheckbox} 0 -155 100% 8u "$(delete_config)" Pop $CHECKBOX_CONFIG nsDialogs::OnClick /NOUNLOAD $CHECKBOX_CONFIG $2 ${NSD_CreateCheckbox} 0 -135 100% 8u "$(delete_highscores)" Pop $CHECKBOX_SCORES nsDialogs::OnClick /NOUNLOAD $CHECKBOX_SCORES $3 ${NSD_CreateCheckbox} 0 -115 100% 8u "$(delete_screenshots)" Pop $CHECKBOX_SCREENSHOTS nsDialogs::OnClick /NOUNLOAD $CHECKBOX_SCREENSHOTS $4 ${NSD_CreateCheckbox} 0 -95 100% 8u "$(delete_playlists)" Pop $CHECKBOX_PLAYLISTS nsDialogs::OnClick /NOUNLOAD $CHECKBOX_PLAYLISTS $5 ${NSD_CreateCheckbox} 0 -65 100% 18u "$(delete_songs)" Pop $CHECKBOX_SONGS nsDialogs::OnClick /NOUNLOAD $CHECKBOX_SONGS $6 nsDialogs::Show FunctionEnd Function un.DeleteAll ${NSD_GetState} $CHECKBOX_COVERS $CB_COVERS_State ${NSD_GetState} $CHECKBOX_CONFIG $CB_CONFIG_State ${NSD_GetState} $CHECKBOX_SCORES $CB_SCORES_State ${NSD_GetState} $CHECKBOX_SCORES $CB_SCREENSHOTS_State ${NSD_GetState} $CHECKBOX_SCORES $CB_PLAYLISTS_State ${NSD_GetState} $CHECKBOX_SONGS $CB_SONGS_State ${If} $CB_COVERS_State == "1" ; Remove covers RMDir /r "$INSTDIR\covers" SetShellVarContext current RMDir /r "$APPDATA\ultrastardx\covers" SetShellVarContext all ${EndIf} ${If} $CB_CONFIG_State == "1" ; Remove config SetShellVarContext current Delete "$APPDATA\ultrastardx\config.ini" SetShellVarContext all Delete "$INSTDIR\config.ini" ${EndIf} ${If} $CB_SCORES_State == "1" ; Remove highscores SetShellVarContext current Delete "$APPDATA\ultrastardx\Ultrastar.db" SetShellVarContext all Delete "$INSTDIR\Ultrastar.db" ${EndIf} ${If} $CB_SCREENSHOTS_State == "1" ; Remove screenshots RMDir /r "$INSTDIR\sreenshots" SetShellVarContext current RMDir /r "$APPDATA\ultrastardx\screenshots" SetShellVarContext all ${EndIf} ${If} $CB_SCREENSHOTS_State == "1" ; Remove playlists RMDir /r "$INSTDIR\playlists" SetShellVarContext current RMDir /r "$APPDATA\ultrastardx\playlists" SetShellVarContext all ${EndIf} ${If} $CB_SONGS_State == "1" ; Remove songs RMDir /r "$INSTDIR\songs" SetShellVarContext current RMDir /r "$APPDATA\ultrastardx\songs" SetShellVarContext all ${EndIf} FunctionEnd !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Sections Installation Routine ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ;------------------------------------ ; MAIN COMPONENTS (Section 1) ;------------------------------------ Section $(name_section1) Section1 SectionIn RO SetOutPath $INSTDIR SetOverwrite try Call DetermineUserDataDir !include "${path_settings}\files_main_install.nsh" ; Create Shortcuts: SetOutPath "$INSTDIR" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application SetShellVarContext all SetOutPath "$INSTDIR" CreateDirectory "${name}" CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(sm_shortcut).lnk" "$INSTDIR\${exe}.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(sm_website).lnk" "http://www.ultrastardeluxe.org/" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(sm_songs).lnk" "$INSTDIR\songs" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(sm_uninstall).lnk" "$INSTDIR\Uninstall.exe" !insertmacro MUI_STARTMENU_WRITE_END ; Vista Game Explorer: ; (removed due to incompatibility with Windows 7, needs rewrite) ; Create Uninstaller: WriteUninstaller "$INSTDIR\Uninstall.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${name}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\ultrastardx.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallDir" "$INSTDIR" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SetOutPath "$INSTDIR" SectionEnd ;------------------------------------ ; OPTIONAL SONGS (Section 2) ;------------------------------------ !include "${path_settings}\files_opt_songs.nsh" ;------------------------------------ ; OPTIONAL THEMES (Section 3) ;------------------------------------ ; No additional themes available ; for current version of ultrastardx ;------------------------------------ ; UNINSTALL (Section 4) ;------------------------------------ Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP !include "${path_settings}\files_main_uninstall.nsh" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" ; Unregister from Windows Vista Game Explorer ; (removed due to incompatibility with Windows 7) SectionEnd ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Section Descriptions ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1) !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1} $(DESC_Section2_sub1) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2} $(DESC_Section2_sub2) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub3} $(DESC_Section2_sub3) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub4} $(DESC_Section2_sub4) ; !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) THEMES !insertmacro MUI_DESCRIPTION_TEXT ${g2Section1} $(DESC_g2Section1) !insertmacro MUI_DESCRIPTION_TEXT ${g2Section2} $(DESC_g2Section2) !insertmacro MUI_DESCRIPTION_TEXT ${g2Section3} $(DESC_g2Section3) !insertmacro MUI_DESCRIPTION_TEXT ${g2Section4} $(DESC_g2Section4) !insertmacro MUI_DESCRIPTION_TEXT ${g2Section5} $(DESC_g2Section5) !insertmacro MUI_DESCRIPTION_TEXT ${g2Section6} $(DESC_g2Section6) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section1} $(DESC_s2_sub1_Section1) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section2} $(DESC_s2_sub1_Section2) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section3} $(DESC_s2_sub1_Section3) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section4} $(DESC_s2_sub1_Section4) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section5} $(DESC_s2_sub1_Section5) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section6} $(DESC_s2_sub1_Section6) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section7} $(DESC_s2_sub1_Section7) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section8} $(DESC_s2_sub1_Section8) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section9} $(DESC_s2_sub1_Section9) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section10} $(DESC_s2_sub1_Section10) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section11} $(DESC_s2_sub1_Section11) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section12} $(DESC_s2_sub1_Section12) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section13} $(DESC_s2_sub1_Section13) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section14} $(DESC_s2_sub1_Section14) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section15} $(DESC_s2_sub1_Section15) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section16} $(DESC_s2_sub1_Section16) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section17} $(DESC_s2_sub1_Section17) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section18} $(DESC_s2_sub1_Section18) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section19} $(DESC_s2_sub1_Section19) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section20} $(DESC_s2_sub1_Section20) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section21} $(DESC_s2_sub1_Section21) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section22} $(DESC_s2_sub1_Section22) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section23} $(DESC_s2_sub1_Section23) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub1_Section24} $(DESC_s2_sub1_Section24) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section1} $(DESC_s2_sub2_Section1) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section2} $(DESC_s2_sub2_Section2) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section3} $(DESC_s2_sub2_Section3) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section4} $(DESC_s2_sub2_Section4) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section5} $(DESC_s2_sub2_Section5) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section6} $(DESC_s2_sub2_Section6) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section7} $(DESC_s2_sub2_Section7) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section8} $(DESC_s2_sub2_Section8) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub2_Section9} $(DESC_s2_sub2_Section9) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub3_Section1} $(DESC_s2_sub3_Section1) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub3_Section2} $(DESC_s2_sub3_Section2) !insertmacro MUI_DESCRIPTION_TEXT ${s2_sub3_Section3} $(DESC_s2_sub3_Section3) !insertmacro MUI_FUNCTION_DESCRIPTION_END ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ; Language Support ; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Hungarian" !insertmacro MUI_LANGUAGE "Polish" !insertmacro MUI_RESERVEFILE_LANGDLL !include "${path_languages}\*.nsh" ;!addPluginDir "${path_plugins}\" Function bgmusic File /oname=$PLUGINSDIR\loop.wav .\dependencies\loop.wav BGImage::Sound /NOUNLOAD /LOOP $PLUGINSDIR\loop.wav FunctionEnd Function .onGUIEnd BGImage::Sound /STOP FunctionEnd Function .onInit ${UAC.I.Elevate.AdminOnly} var /GLOBAL version StrCpy $version "1.1" System::Call 'kernel32::CreateMutexA(i 0, i 0, t "USdx Installer.exe") ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION $(oninit_running) Abort ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${name}" 'DisplayVersion' ${If} $R0 == $version MessageBox MB_YESNO|MB_ICONEXCLAMATION \ "${name} v.$R0 $(oninit_alreadyinstalled). $\n$\n $(oninit_installagain)" \ IDYES continue Abort ${EndIf} ReadRegStr $R1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${name}" 'UninstallString' StrCmp $R1 "" done ${If} $R0 != $version MessageBox MB_YESNO|MB_ICONEXCLAMATION \ "${name} v.$R0 $(oninit_alreadyinstalled). $\n$\n $(oninit_updateusdx) v.$R0 -> v.${version}" \ IDYES continue Abort ${EndIf} continue: ReadRegStr $R2 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${name}" 'UninstallString' MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(oninit_uninstall)" IDNO done ExecWait '"$R2" _?=$INSTDIR' done: !insertmacro MUI_LANGDLL_DISPLAY !insertmacro INSTALLOPTIONS_EXTRACT_AS ".\settings\settings-1031.ini" "Settings-1031" !insertmacro INSTALLOPTIONS_EXTRACT_AS ".\settings\settings-1033.ini" "Settings-1033" !insertmacro INSTALLOPTIONS_EXTRACT_AS ".\settings\settings-1038.ini" "Settings-1038" !insertmacro INSTALLOPTIONS_EXTRACT_AS ".\settings\settings-1045.ini" "Settings-1045" FunctionEnd Function un.onInit ${nsProcess::FindProcess} "USdx.exe" $R0 StrCmp $R0 0 0 +2 MessageBox MB_YESNO|MB_ICONEXCLAMATION '$(oninit_closeusdx)' IDYES closeit IDNO end closeit: ${nsProcess::KillProcess} "USdx.exe" $R0 goto continue ${nsProcess::FindProcess} "ultrastardx.exe" $R0 StrCmp $R0 0 0 +2 MessageBox MB_YESNO|MB_ICONEXCLAMATION '$(oninit_closeusdx)' IDYES closeusdx IDNO end closeusdx: ${nsProcess::KillProcess} "ultrastardx.exe" $R0 goto continue end: ${nsProcess::Unload} Abort continue: !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function .onInstFailed ${UAC.Unload} FunctionEnd Function .onInstSuccess ${UAC.Unload} FunctionEnd