From 392718a615f10c62e710eca46a095cb37928fe1b Mon Sep 17 00:00:00 2001 From: canni0 Date: Tue, 30 Sep 2008 10:33:47 +0000 Subject: - New installer source for v.1.1 - Added new demo song git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1427 b956fd51-792f-4845-bead-9b4dfca2ff2c --- installer/settings/GameExplorer.nsh | 198 ++++++++++++++++++++++++++++ installer/settings/files_main_install.nsh | 4 + installer/settings/files_main_uninstall.nsh | 4 + installer/settings/files_opt_uninstall.nsh | 4 + installer/settings/functions.nsh | 79 +++++++++++ installer/settings/variables.nsh | 46 +++++++ 6 files changed, 335 insertions(+) create mode 100644 installer/settings/GameExplorer.nsh create mode 100644 installer/settings/files_main_install.nsh create mode 100644 installer/settings/files_main_uninstall.nsh create mode 100644 installer/settings/files_opt_uninstall.nsh create mode 100644 installer/settings/functions.nsh create mode 100644 installer/settings/variables.nsh (limited to 'installer/settings') diff --git a/installer/settings/GameExplorer.nsh b/installer/settings/GameExplorer.nsh new file mode 100644 index 00000000..d5056661 --- /dev/null +++ b/installer/settings/GameExplorer.nsh @@ -0,0 +1,198 @@ +# user interface + +!define GameExplorer_GenerateGUID '!insertmacro GameExplorer_GenerateGUID' +!define GameExplorer_AddGame '!insertmacro GameExplorer_AddGame' +!define GameExplorer_UpdateGame '!insertmacro GameExplorer_UpdateGame' +!define GameExplorer_RemoveGame '!insertmacro GameExplorer_RemoveGame' + +# internal stuff + +!define CLSCTX_INPROC_SERVER 1 +!define IID_IGameExplorer {E7B2FB72-D728-49B3-A5F2-18EBF5F1349E} +!define CLSID_GameExplorer {9A5EA990-3034-4D6F-9128-01F3C61022BC} + +!define GIS_CURRENT_USER 2 +!define GIS_ALL_USERS 3 + +!define IGameExplorer_QueryInterface 0 +!define IGameExplorer_AddRef 1 +!define IGameExplorer_Release 2 +!define IGameExplorer_AddGame 3 +!define IGameExplorer_RemoveGame 4 +!define IGameExplorer_UpdateGame 5 +!define IGameExplorer_VerifyAccess 6 + +# includes + +!include LogicLib.nsh + +# the actual code + +!macro GameExplorer_GenerateGUID + + System::Call 'ole32::CoCreateGuid(g .s)' + +!macroend + +!macro GameExplorer_AddGame CONTEXT GDF INSTDIR EXE GUID + + !define __GAME_EXPLORER_UNIQUE "${__LINE__}${__FILE__}" + + Push $0 + Push $1 + + Push $R0 + Push $R1 + Push $R2 + Push $R3 + + Push "${EXE}" + Push "${GUID}" + Push "${INSTDIR}" + Push "${GDF}" + + Pop $R0 # == ${GDF} + Pop $R1 # == ${INSTDIR} + Pop $R2 # == ${GUID} + Pop $R3 # == ${EXE} + + ClearErrors + + System::Call "ole32::CoCreateInstance( \ + g '${CLSID_GameExplorer}', i 0, \ + i ${CLSCTX_INPROC_SERVER}, \ + g '${IID_IGameExplorer}', *i .r1) i .r0" + + ${If} $0 != 0 # S_OK + + SetErrors + Goto "done_${__GAME_EXPLORER_UNIQUE}" + + ${EndIf} + + !if ${CONTEXT} == all + + System::Call "$1->${IGameExplorer_AddGame}(w R0, w R1, i ${GIS_ALL_USERS}, g R2) i .r0" + + !else if ${CONTEXT} == user + + System::Call "$1->${IGameExplorer_AddGame}(w R1, w R0, i ${GIS_CURRENT_USER}, g R2) i .r0" + + !else + + !error "Invalid CONTEXT passed to GameExplorer_AddGame! Must be `user` or `all`." + + !endif + + ${If} $0 != 0 # S_OK + + SetErrors + + ${Else} + + # Create play task + + !if ${CONTEXT} == all + + SetShellVarContext all + + !else if if ${CONTEXT} == user + + SetShellVarContext user + + !endif + + CreateDirectory $APPDATA\Microsoft\Windows\GameExplorer\$R2\PlayTasks\0 + CreateShortcut $APPDATA\Microsoft\Windows\GameExplorer\$R2\PlayTasks\0\Play.lnk $R3 + + ${EndIf} + + System::Call "$1->${IGameExplorer_Release}()" + + "done_${__GAME_EXPLORER_UNIQUE}:" + + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + + Pop $1 + Pop $0 + + !undef __GAME_EXPLORER_UNIQUE + +!macroend + +!macro _GameExplorer_GUID_Function Function GUID + + !define __GAME_EXPLORER_UNIQUE "${__LINE__}${__FILE__}" + + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + + Push $R0 + + Push "${GUID}" + + Pop $R0 # == ${GUID} + + System::Alloc 16 + Exch $R0 + System::Call "ole32::CLSIDFromString(w s, i R0)" + System::Call "*$R0(i .r2, i .r3, i .r4, i .r5)" + System::Free $R0 + + ClearErrors + + System::Call "ole32::CoCreateInstance( \ + g '${CLSID_GameExplorer}', i 0, \ + i ${CLSCTX_INPROC_SERVER}, \ + g '${IID_IGameExplorer}', *i .r1) i .r0" + + ${If} $0 != 0 # S_OK + + SetErrors + Goto "done_${__GAME_EXPLORER_UNIQUE}" + + ${EndIf} + + System::Call "$1->${Function}(i r2, i r3, i r4, i r5) i .r0" + + ${If} $0 != 0 # S_OK + + SetErrors + + ${EndIf} + + System::Call "$1->${IGameExplorer_Release}()" + + "done_${__GAME_EXPLORER_UNIQUE}:" + + Pop $R0 + + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !undef __GAME_EXPLORER_UNIQUE + +!macroend + +!macro GameExplorer_UpdateGame GUID + + !insertmacro _GameExplorer_GUID_Function ${IGameExplorer_UpdateGame} "${GUID}" + +!macroend + +!macro GameExplorer_RemoveGame GUID + + !insertmacro _GameExplorer_GUID_Function ${IGameExplorer_RemoveGame} "${GUID}" + +!macroend \ No newline at end of file diff --git a/installer/settings/files_main_install.nsh b/installer/settings/files_main_install.nsh new file mode 100644 index 00000000..f6f4a1c8 --- /dev/null +++ b/installer/settings/files_main_install.nsh @@ -0,0 +1,4 @@ +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ +; UltraStar Deluxe Installer - Version 1.1: Main components +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ + diff --git a/installer/settings/files_main_uninstall.nsh b/installer/settings/files_main_uninstall.nsh new file mode 100644 index 00000000..f6f4a1c8 --- /dev/null +++ b/installer/settings/files_main_uninstall.nsh @@ -0,0 +1,4 @@ +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ +; UltraStar Deluxe Installer - Version 1.1: Main components +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ + diff --git a/installer/settings/files_opt_uninstall.nsh b/installer/settings/files_opt_uninstall.nsh new file mode 100644 index 00000000..f6f4a1c8 --- /dev/null +++ b/installer/settings/files_opt_uninstall.nsh @@ -0,0 +1,4 @@ +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ +; UltraStar Deluxe Installer - Version 1.1: Main components +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ + diff --git a/installer/settings/functions.nsh b/installer/settings/functions.nsh new file mode 100644 index 00000000..386def41 --- /dev/null +++ b/installer/settings/functions.nsh @@ -0,0 +1,79 @@ +!define exe2 "USdx" + +; Creates Desktop Shortcut(s) if +; checked on Finish Page + +Function CreateDesktopShortCuts + +SetOutPath "$INSTDIR" + +CreateShortcut "$Desktop\$(sm_shortcut).lnk" "$INSTDIR\${exe2}.exe" + +FunctionEnd + +; Deletes only empty dirs which are +; at the top of the stack. + +Function un.DeleteIfEmpty + FindFirst $R0 $R1 "$0\*.*" + strcmp $R1 "." 0 NoDelete + FindNext $R0 $R1 + strcmp $R1 ".." 0 NoDelete + ClearErrors + FindNext $R0 $R1 + IfErrors 0 NoDelete + FindClose $R0 + Sleep 1000 + RMDir "$0" + NoDelete: + FindClose $R0 +FunctionEnd + +; This is used to write a +; string to config.ini + +Function WriteToConfig + Exch $0 + Exch + Exch $1 + + FileOpen $0 $0 a + FileSeek $0 0 END + FileWrite $0 $1 + FileClose $0 + + Pop $1 + Pop $0 +FunctionEnd + +!macro WriteToConfig String File + Push "${String}" + Push "${File}" + Call WriteToConfig +!macroend +!define WriteToConfig "!insertmacro WriteToConfig" + +; Finds UltraStar Deluxe process +; + +!define nsProcess::FindProcess `!insertmacro nsProcess::FindProcess` + +!macro nsProcess::FindProcess _FILE _ERR + nsProcess::_FindProcess /NOUNLOAD `${_FILE}` + Pop ${_ERR} +!macroend + + +!define nsProcess::KillProcess `!insertmacro nsProcess::KillProcess` + +!macro nsProcess::KillProcess _FILE _ERR + nsProcess::_KillProcess /NOUNLOAD `${_FILE}` + Pop ${_ERR} +!macroend + + +!define nsProcess::Unload `!insertmacro nsProcess::Unload` + +!macro nsProcess::Unload + nsProcess::_Unload +!macroend \ No newline at end of file diff --git a/installer/settings/variables.nsh b/installer/settings/variables.nsh new file mode 100644 index 00000000..f82bf88b --- /dev/null +++ b/installer/settings/variables.nsh @@ -0,0 +1,46 @@ +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ +; UltraStar Deluxe Installer - Version 1.1: Variables +; ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ ~+~ + +; Product Information: + +!define version "1.1 Alpha" + +!define name "UltraStar Deluxe" +!define publisher "USDX Team" +!define homepage "http://www.ultrastardeluxe.org" +!define forum "http://forum.ultrastardeluxe.org" + +!define exe "USdx" + +!define license "license.txt" + +; Icons + +!define img_install "install.ico" +!define img_uninstall "uninstall.ico" + +; Header Images + +!define img_header "header.bmp" ; Header image (150x57) +!define img_side "side.bmp" ; Side image (162x314) + +; Registry for Start menu entries: + +!define PRODUCT_VERSION "${version}" +!define PRODUCT_PUBLISHER "${publisher}" +!define PRODUCT_WEB_SITE "${homepage}" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${name}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" +!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" + +; Download URLs for Songs and Themes: + +!define download_song1 "http://downloads.sourceforge.net/ultrastardx/usdx_song-dead_smiling_pirates_-_i_18.zip" +!define download_song2 "http://downloads.sourceforge.net/ultrastardx/usdx_song-joshua_morin_-_on_the_run.zip" +!define download_song3 "http://downloads.sourceforge.net/ultrastardx/usdx_song-pornophonique_-_space_-_invaders.zip" +!define download_song4 "http://downloads.sourceforge.net/ultrastardx/usdx_song-steven_dunston_-_northern_star.zip" + +!define download_theme1 "http://downloads.sourceforge.net/ultrastardx/usdx_skin-orange_by_Skar.zip" +!define download_theme2 "http://downloads.sourceforge.net/ultrastardx/usdx_skin-Streetlight_by_Skar.zip" +!define download_theme3 "http://downloads.sourceforge.net/ultrastardx/usdx_skin-Vistar_by_Skar.zip" \ No newline at end of file -- cgit v1.2.3