From 52609a58c8101a73e65df7e940b4f8c4076090ce Mon Sep 17 00:00:00 2001 From: "Jake.Stine" Date: Sun, 30 May 2010 02:00:19 +0000 Subject: [PATCH] NSIS Installer: * Add the major/minor version number to the generated exe's. * Default to using the HEAD revision for all exe's and plugins in the package, instead of versioning each one independently. * Update instructions readme to mention use of Eclipse as a NSIS editor and integrated environment. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3122 96395faa-99c1-11dd-bbfe-3dabce05a288 --- nsis/ApplyExeProps.nsh | 26 +- nsis/SectionShortcuts.nsh | 7 +- nsis/SharedBase.nsh | 116 ++++++ nsis/SharedRedtape.nsh | 234 ++++++------ nsis/SharedSettings.nsh | 52 --- nsis/nsis_instructions.txt | 28 +- nsis/pcsx2_full_install.nsi | 38 +- nsis/pcsx2_web_install.nsi | 567 +++++++++++++---------------- nsis/templates/svnrev_cdvdiso.nsh | 6 +- nsis/templates/svnrev_gsdx.nsh | 6 +- nsis/templates/svnrev_lilypad.nsh | 6 +- nsis/templates/svnrev_package.nsh | 3 + nsis/templates/svnrev_pcsx2.nsh | 9 +- nsis/templates/svnrev_plugins.nsh | 7 + nsis/templates/svnrev_spu2x.nsh | 6 +- nsis/templates/svnrev_zerogs.nsh | 6 +- nsis/templates/svnrev_zerospu2.nsh | 6 +- nsis/templates/svnrev_zzogl.nsh | 6 +- 18 files changed, 584 insertions(+), 545 deletions(-) create mode 100644 nsis/SharedBase.nsh delete mode 100644 nsis/SharedSettings.nsh create mode 100644 nsis/templates/svnrev_package.nsh create mode 100644 nsis/templates/svnrev_plugins.nsh diff --git a/nsis/ApplyExeProps.nsh b/nsis/ApplyExeProps.nsh index fc58a55bfd..31973de69c 100644 --- a/nsis/ApplyExeProps.nsh +++ b/nsis/ApplyExeProps.nsh @@ -1,13 +1,13 @@ -; ======================================================================= -; Setup.exe Properties -; ======================================================================= -; (for the professionalism!!) - - -VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}" -;VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "A test comment" -VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© 2010 PCSX2 Dev Team" -VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Installs PCSX2, a Playstation 2 Emulator for the PC" -VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}.${SVNREV}" - -VIProductVersion "${APP_VERSION}.${SVNREV}" +; ======================================================================= +; Generated-Setup.exe Properties +; ======================================================================= +; (for the professionalism!!) + + +VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}" +;VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "A test comment" +VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© 2010 PCSX2 Dev Team" +VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Installs PCSX2, a Playstation 2 Emulator for the PC." +VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}.${SVNREV_PACKAGE}" + +VIProductVersion "${APP_VERSION}.${SVNREV_PACKAGE}" diff --git a/nsis/SectionShortcuts.nsh b/nsis/SectionShortcuts.nsh index 57e0ac57cf..efe93ef2bc 100644 --- a/nsis/SectionShortcuts.nsh +++ b/nsis/SectionShortcuts.nsh @@ -11,9 +11,10 @@ Section "Start Menu Shortcuts" SEC_STARTMENU CreateShortCut "$SMPROGRAMS\PCSX2\Uninstall ${APP_NAME}.lnk" "${UNINST_EXE}" "" "${UNINST_EXE}" 0 CreateShortCut "$SMPROGRAMS\PCSX2\${APP_NAME}.lnk" "${APP_EXE}" "" "${APP_EXE}" 0 - CreateShortCut "$SMPROGRAMS\PCSX2\Readme ${APP_VERSION}.lnk" "$INSTDIR\docs\${PCSX2_README}" - ;CreateShortCut "$SMPROGRAMS\PCSX2\Timeline of PCSX2 Releases.lnk" "$INSTDIR\${PCSX2_README}.doc" - CreateShortCut "$SMPROGRAMS\PCSX2\Frequently Asked Questions ${APP_VERSION}.lnk" "$INSTDIR\docs\${PCSX2_FAQ}" + CreateShortCut "$SMPROGRAMS\PCSX2\Readme ${APP_VERSION}.lnk" "$INSTDIR\docs\${PCSX2_README}" \ + "" "" 0 "" "" "Typical usage overview and background information for PCSX2." + CreateShortCut "$SMPROGRAMS\PCSX2\Frequently Asked Questions ${APP_VERSION}.lnk" "$INSTDIR\docs\${PCSX2_FAQ}" \ + "" "" 0 "" "" "Common answers to common problems and inquiries." ;IfFileExists ..\bin\pcsx2-dev.exe 0 +2 ; CreateShortCut "PCSX2\pcsx2-dev-r${SVNREV}.lnk" "$INSTDIR\pcsx2-dev-r${SVNREV}.exe" "" "$INSTDIR\pcsx2-dev-r${SVNREV}.exe" 0 "" "" \ diff --git a/nsis/SharedBase.nsh b/nsis/SharedBase.nsh new file mode 100644 index 0000000000..e5403f74a1 --- /dev/null +++ b/nsis/SharedBase.nsh @@ -0,0 +1,116 @@ + +; ======================================================================= +; Core Includes and Defines +; ======================================================================= + +!ifndef INC_CORE + !define INC_CORE 1 +!endif + +!ifndef INC_PLUGINS + ; Set to 0 to include the core binaries only (no plugins) + !define INC_PLUGINS 1 +!endif + +!ifndef INC_LANGS + ; Set to 1 to enable inclusion of Languages folders (which are currently missing in 0.9.7) + !define INC_LANGS 0 +!endif + +!ifndef USE_PACKAGE_REV + ; When enabled, all exe and plugins use a single revision based ont he trunk/HEAD svn revision. + ; When disabled, each plugin and the main exe get their own revision number based on the actual + ; revision the component was last updated. + !define USE_PACKAGE_REV 1 +!endif + +!if ${INC_CORE} > 0 + ; FIXME: Technically we'd want to exclude plugin revisions here, but it isn't easy to do. + !system 'SubWCRev.exe ..\ templates\svnrev_package.nsh svnrev_package.nsh' +!else + ; Revision information for all plugins; used to moniker the output file when building + ; plugin-only packages. + !system 'SubWCRev.exe ..\plugins templates\svnrev_package.nsh svnrev_package.nsh' +!endif + +!system 'SubWCRev.exe ..\pcsx2 templates\svnrev_pcsx2.nsh svnrev_pcsx2.nsh' + +!include "svnrev_package.nsh" +!include "svnrev_pcsx2.nsh" + +; Notes on Uninstall Log Location (UNINSTALL_LOG) +; The name of the uninstall log determines whether or not future installers +; fall under the same single uninstall entry, or if they use multiple (separate) +; uninstall folders. + +!ifndef APP_VERSION + !define APP_VERSION "0.9.7" +!endif + +!define APP_NAME "PCSX2 ${APP_VERSION} (r${SVNREV_PACKAGE})" +!define APP_FILENAME "pcsx2-r${SVNREV_PCSX2}" +!define UNINSTALL_LOG "Uninst-pcsx2-r${SVNREV_PACKAGE}" + +!define INSTDIR_REG_ROOT "HKLM" + +XPStyle on + +; LZMA is the best, by far, so let's make sure it's always in use: +; (dictionaries larger than 24MB don't seem to help) +SetCompressor /SOLID lzma +SetCompressorDictSize 24 + + +; The name of the installer +Name "${APP_NAME}" + +OutFile "output\pcsx2-${APP_VERSION}-r${SVNREV_PACKAGE}-${OUTFILE_POSTFIX}.exe" + +; The default installation directory +InstallDir "$PROGRAMFILES\PCSX2 ${APP_VERSION}" + +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey ${INSTDIR_REG_ROOT} "Software\PCSX2" "Install_Dir_${APP_VERSION}" + +; These defines are dependent on NSIS vars assigned above. + +!define APP_EXE "$INSTDIR\${APP_FILENAME}.exe" +!define INSTDIR_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_FILENAME}" + +!define PCSX2_README "pcsx2 readme ${APP_VERSION}.doc" +!define PCSX2_FAQ "pcsx2 FAQ ${APP_VERSION}.pdf" + + +Var DirectXSetupError + +; ======================================================================= +; Vista/Win7 UAC Stuff +; ======================================================================= +; FIXME !! +; Request application privileges for Windows Vista/7; I'd love for this to be sensible about which +; execution level it requests, but UAC is breaking my mind. I included some code for User type +; detection in function IsUserAdmin, but not really using it constructively yet. (see also our +; uses of SetShellVarContext in the installer sections) + +;!include "IsUserAdmin.nsi" + +; Allow admin-rights PCSX2 users to be hardcore! +AllowRootDirInstall true + +; Just require admin for now, until we figure out a nice way to allow for casual user installs. +RequestExecutionLevel admin + +; ======================================================================= +; MUI2 and Advanced Uninstaller Basics +; ======================================================================= +!include "MUI2.nsh" +!include "AdvUninstLog.nsh" + +; This defines the Advanced Uninstaller mode of operation... +!insertmacro UNATTENDED_UNINSTALL + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "banner.bmp" +!define MUI_COMPONENTSPAGE_SMALLDESC + diff --git a/nsis/SharedRedtape.nsh b/nsis/SharedRedtape.nsh index 9c81ef7df0..eb32815822 100644 --- a/nsis/SharedRedtape.nsh +++ b/nsis/SharedRedtape.nsh @@ -1,117 +1,117 @@ - - -; ======================================================================= -; Plugin Includes -; ======================================================================= -; Note that zzOgl is disabled for now because it requires CG dependencies to be installed. - -!if ${INC_PLUGINS} > 0 - !system 'SubWCRev.exe ..\plugins\gsdx templates\svnrev_gsdx.nsh svnrev_gsdx.nsh' - !system 'SubWCRev.exe ..\plugins\spu2-x templates\svnrev_spu2x.nsh svnrev_spu2x.nsh' - !system 'SubWCRev.exe ..\plugins\cdvdiso templates\svnrev_cdvdiso.nsh svnrev_cdvdiso.nsh' - !system 'SubWCRev.exe ..\plugins\lilypad templates\svnrev_lilypad.nsh svnrev_lilypad.nsh' - !system 'SubWCRev.exe ..\plugins\zerogs\dx templates\svnrev_zerogs.nsh svnrev_zerogs.nsh' - ;!system 'SubWCRev.exe ..\plugins\zzogl-pg templates\svnrev_zzogl.nsh svnrev_zzogl.nsh' - !system 'SubWCRev.exe ..\plugins\zerospu2 templates\svnrev_zerospu2.nsh svnrev_zerospu2.nsh' - - !include "svnrev_gsdx.nsh" - !include "svnrev_spu2x.nsh" - !include "svnrev_cdvdiso.nsh" - !include "svnrev_lilypad.nsh" - !include "svnrev_zerogs.nsh" - ;!include "svnrev_zzogl.nsh" - !include "svnrev_zerospu2.nsh" -!endif - -; ======================================================================= -; Shared Install Functions -; ======================================================================= - -; ================================================================================== - -Function .onInit - - ;prepare Advanced Uninstall log always within .onInit function - !insertmacro UNINSTALL.LOG_PREPARE_INSTALL - - ; MORE UAC HELL ---------- > - call IsUserAdmin - -FunctionEnd - - -Function .onInstSuccess - - ;create/update log always within .onInstSuccess function - !insertmacro UNINSTALL.LOG_UPDATE_INSTALL - -FunctionEnd - - -; ======================================================================= -; Shared Uninstall Functions -; ======================================================================= - -; Safe directory deletion code. :) -; -Function un.DeleteDirIfEmpty - - ; Use $TEMP as the out dir when removing directories, since NSIS won't let us remove the - ; "current" directory. - SetOutPath "$TEMP" - - 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 - - -; ================================================================================== -Function un.removeShorties - - ; Remove shortcuts, if any - - Delete "$DESKTOP\${APP_NAME}.lnk" - - Delete "$SMPROGRAMS\PCSX2\Uninstall ${APP_NAME}.lnk" - Delete "$SMPROGRAMS\PCSX2\${APP_NAME}.lnk" - ;Delete "$SMPROGRAMS\PCSX2\pcsx2-dev-r${SVNREV}.lnk" - - Delete "$SMPROGRAMS\PCSX2\Readme ${APP_VERSION}.lnk" - Delete "$SMPROGRAMS\PCSX2\Frequently Asked Questions ${APP_VERSION}.lnk" - - StrCpy $0 "$SMPROGRAMS\PCSX2" - Call un.DeleteDirIfEmpty - -FunctionEnd - -; begin uninstall, could be added on top of uninstall section instead -Function un.onInit - !insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL -FunctionEnd - - -Function un.onUninstSuccess - !insertmacro UNINSTALL.LOG_END_UNINSTALL - - ; And remove the various install dir(s) but only if they're clean of user content: - - StrCpy $0 "$INSTDIR\langs" - Call un.DeleteDirIfEmpty - - StrCpy $0 "$INSTDIR\plugins" - Call un.DeleteDirIfEmpty - - StrCpy $0 "$INSTDIR" - Call un.DeleteDirIfEmpty -FunctionEnd - + +; ======================================================================= +; Plugin Includes +; ======================================================================= +; Note that zzOgl is disabled for now because it requires CG dependencies to be installed. + +!if ${INC_PLUGINS} > 0 + !system 'SubWCRev.exe ..\plugins\gsdx templates\svnrev_gsdx.nsh svnrev_gsdx.nsh' + !system 'SubWCRev.exe ..\plugins\spu2-x templates\svnrev_spu2x.nsh svnrev_spu2x.nsh' + !system 'SubWCRev.exe ..\plugins\cdvdiso templates\svnrev_cdvdiso.nsh svnrev_cdvdiso.nsh' + !system 'SubWCRev.exe ..\plugins\lilypad templates\svnrev_lilypad.nsh svnrev_lilypad.nsh' + !system 'SubWCRev.exe ..\plugins\zerogs\dx templates\svnrev_zerogs.nsh svnrev_zerogs.nsh' + ;!system 'SubWCRev.exe ..\plugins\zzogl-pg templates\svnrev_zzogl.nsh svnrev_zzogl.nsh' + !system 'SubWCRev.exe ..\plugins\zerospu2 templates\svnrev_zerospu2.nsh svnrev_zerospu2.nsh' + + !include "svnrev_gsdx.nsh" + !include "svnrev_spu2x.nsh" + !include "svnrev_cdvdiso.nsh" + !include "svnrev_lilypad.nsh" + !include "svnrev_zerogs.nsh" + ;!include "svnrev_zzogl.nsh" + !include "svnrev_zerospu2.nsh" +!endif + +; ======================================================================= +; Shared Install Functions +; ======================================================================= + +Function .onInit + + ;prepare Advanced Uninstall log always within .onInit function + !insertmacro UNINSTALL.LOG_PREPARE_INSTALL + + ; MORE UAC HELL ---------- > + ;call IsUserAdmin + +FunctionEnd + + +Function .onInstSuccess + + ;create/update log always within .onInstSuccess function + !insertmacro UNINSTALL.LOG_UPDATE_INSTALL + +FunctionEnd + + +; ======================================================================= +; Shared Uninstall Functions +; ======================================================================= + +; Safe directory deletion code. :) +; +Function un.DeleteDirIfEmpty + + ; Use $TEMP as the out dir when removing directories, since NSIS won't let us remove the + ; "current" directory. + SetOutPath "$TEMP" + + 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 + + +; ================================================================================== +Function un.removeShorties + + ; Remove shortcuts, if any + + Delete "$DESKTOP\${APP_NAME}.lnk" + + Delete "$SMPROGRAMS\PCSX2\Uninstall ${APP_NAME}.lnk" + Delete "$SMPROGRAMS\PCSX2\${APP_NAME}.lnk" + ;Delete "$SMPROGRAMS\PCSX2\pcsx2-dev-r${SVNREV}.lnk" + + Delete "$SMPROGRAMS\PCSX2\Readme ${APP_VERSION}.lnk" + Delete "$SMPROGRAMS\PCSX2\Frequently Asked Questions ${APP_VERSION}.lnk" + + StrCpy $0 "$SMPROGRAMS\PCSX2" + Call un.DeleteDirIfEmpty + +FunctionEnd + +; begin uninstall, could be added on top of uninstall section instead +Function un.onInit + !insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL +FunctionEnd + + +Function un.onUninstSuccess + !insertmacro UNINSTALL.LOG_END_UNINSTALL + + ; And remove the various install dir(s) but only if they're clean of user content: + + StrCpy $0 "$INSTDIR\langs" + Call un.DeleteDirIfEmpty + + StrCpy $0 "$INSTDIR\plugins" + Call un.DeleteDirIfEmpty + + StrCpy $0 "$INSTDIR\docs" + Call un.DeleteDirIfEmpty + + StrCpy $0 "$INSTDIR" + Call un.DeleteDirIfEmpty +FunctionEnd + diff --git a/nsis/SharedSettings.nsh b/nsis/SharedSettings.nsh deleted file mode 100644 index 8814e32760..0000000000 --- a/nsis/SharedSettings.nsh +++ /dev/null @@ -1,52 +0,0 @@ - -; ======================================================================= -; Core Includes and Defines -; ======================================================================= - -; Notes on Uninstall Log Location (UNINSTALL_LOG) -; The name of the uninstall log determines whether or not future installers -; fall under the same single uninstall entry, or if they use multiple (separate) -; uninstall folders. - -!system 'SubWCRev.exe ..\pcsx2 templates\svnrev_pcsx2.nsh svnrev_pcsx2.nsh' -!include "svnrev_pcsx2.nsh" - -!ifndef APP_VERSION - !define APP_VERSION "0.9.7" -!endif - -!define APP_NAME "PCSX2 ${APP_VERSION} (r${SVNREV})" -!define APP_FILENAME "pcsx2-r${SVNREV}" -!define UNINSTALL_LOG "Uninst-${APP_FILENAME}" - -!define INSTDIR_REG_ROOT "HKLM" - -XPStyle on - -; LZMA is the best, by far, so let's make sure it's always in use: -; (dictionaries larger than 24MB don't seem to help) -SetCompressor /SOLID lzma -SetCompressorDictSize 24 - - -; The name of the installer -Name "${APP_NAME}" - -OutFile "${APP_FILENAME}-${OUTFILE_POSTFIX}.exe" - -; The default installation directory -InstallDir "$PROGRAMFILES\PCSX2 ${APP_VERSION}" - -; Registry key to check for directory (so if you install again, it will -; overwrite the old one automatically) -InstallDirRegKey ${INSTDIR_REG_ROOT} "Software\PCSX2" "Install_Dir_${APP_VERSION}" - -; These defines are dependent on NSIS vars assigned above. - -!define APP_EXE "$INSTDIR\${APP_FILENAME}.exe" -!define INSTDIR_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_FILENAME}" - -!define PCSX2_README "pcsx2 readme ${APP_VERSION}.doc" -!define PCSX2_FAQ "pcsx2 FAQ ${APP_VERSION}.pdf" - -Var DirectXSetupError diff --git a/nsis/nsis_instructions.txt b/nsis/nsis_instructions.txt index 3ab90cc7f8..df6a0af696 100644 --- a/nsis/nsis_instructions.txt +++ b/nsis/nsis_instructions.txt @@ -8,7 +8,7 @@ * Download the Visual C++ 2008 SP1 Redistributable and save it to this nsis/ folder under the name: vcredist_2008_sp1_x86.exe - * Download the Visual C++ 2010 Redistributable and save it to this nsis/ folder. + * Download the Visual C++ 2010 Redistributable and save it to this nsis/ folder. vcredist_2010_x86.exe [both files can be obtained from Microsoft's website, just google for them] @@ -26,25 +26,35 @@ You may selectively unload plugins you do not wish to package prior to running the NSIS script. - * Compile script, and Enjoy :) + * Compile script! Output executable will be generated to the output/ folder. -------------------------------------------- Compilation Targets and Plugin Inclusion -------------------------------------------- -pcsx2-dev.exe is included into the installer as well *if* present (but is not required). -The Release mode (without -dev) is required, and the script errors if it's missing. - -To include non-NULL plugins into the installer you must specify /DINC_PLUGINS on the command -line when compiling the script. The installer will include plugins only if they are present. -If you do not build plugins, or remove some (or all) plugins before running the nsis script, -only PCSX2 and whatever remaining plugins will be packaged. +The installer will include plugins only if they are present. If you do not build plugins, or +remove some (or all) plugins before running the nsis script, only PCSX2 and whatever remaining +plugins will be packaged. GSdx SSE2, SSSE3, and SSE4 versions are all included into the installer *if* they are present. You will need to follow the above instructions and compile all release targets to get all the GSdx DLLs. + +-------------------------------------------- + Recommendations to Developers +-------------------------------------------- + +From Air: I use Eclipse to edit NSIS scripts. Do a google search for 'nsis eclipse' and it +should take you to the NSIS wiki with instructions on how to set up a NSIS environment in +Eclipse. This typically only takes me a few minutes (yes it's really that painless). Via +Eclipse you can use F2 and F3 for online help and context help on NSIS commands, and the syntax +highlighting is very clean and NSIS-specific. Additionally it'll give you Visual Studio-style +hyperlinks for errors during compilation, so that you can simply click on an error and be taken +right to the offending line of code. Highly recommended! :) + + -------------------------------------------- TODO / Wish List!! -------------------------------------------- diff --git a/nsis/pcsx2_full_install.nsi b/nsis/pcsx2_full_install.nsi index 574eb51971..2f88f6269a 100644 --- a/nsis/pcsx2_full_install.nsi +++ b/nsis/pcsx2_full_install.nsi @@ -5,12 +5,6 @@ ; Copyright 2009-2010 PCSX2 Dev Team ; - -!ifndef INC_PLUGINS - ; Set to 0 to include the core binaries only (no plugins) - !define INC_PLUGINS 1 -!endif - !ifndef INC_CRT_2008 ; Set to 0 to disable inclusion of Visual Studio 2008 SP1 CRT Redists !define INC_CRT_2008 1 @@ -21,44 +15,14 @@ !define INC_CRT_2010 1 !endif -!ifndef INC_LANGS - ; Set to 1 to enable inclusion of Languages folders (which are currently missing in 0.9.7) - !define INC_LANGS 0 -!endif - !define OUTFILE_POSTFIX "setup" -!include "SharedSettings.nsh" -!include "MUI2.nsh" -!include "AdvUninstLog.nsh" - -; ======================================================================= -; Vista/Win7 UAC Stuff -; ======================================================================= - -!include "IsUserAdmin.nsi" +!include "SharedBase.nsh" ; Reserve features for improved performance with solid archiving. ; (uncomment if we add our own install options ini files) ;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;!insertmacro MUI_RESERVEFILE_LANGDLL -; Allow admin-rights PCSX2 users to be hardcore! -AllowRootDirInstall true - -; FIXME !! -; Request application privileges for Windows Vista/7; I'd love for this to be sensible about which -; execution level it requests, but UAC is breaking my mind. I included some code for User type -; detection in function IsUserAdmin, but not really using it constructively yet. (see also our -; uses of SetShellVarContext in the installer sections) -RequestExecutionLevel admin - -; This defines the Advanced Uninstaller mode of operation... -!insertmacro UNATTENDED_UNINSTALL - -!define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP "banner.bmp" -!define MUI_COMPONENTSPAGE_SMALLDESC - !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES diff --git a/nsis/pcsx2_web_install.nsi b/nsis/pcsx2_web_install.nsi index 81929a16c4..28f803ae43 100644 --- a/nsis/pcsx2_web_install.nsi +++ b/nsis/pcsx2_web_install.nsi @@ -1,305 +1,262 @@ - -; PCSX2 Web-based Install Package! -; (a NSIS installer script) -; -; Copyright 2009-2010 PCSX2 Dev Team -; -; The installer generated by this script will download all relevant components for -; PCSX2 from a variety of mirror hosts. Packages are only downloaded on an as-needed -; basis; this most importantly applies to the very bulky VS 2008 and VS2010 packages. - -!ifndef INC_PLUGINS - ; Set to 0 to include the core binaries only (no plugins) - !define INC_PLUGINS 1 -!endif - -!ifndef INC_ZZOGL - ; Includes ZZOGL and CG Toolkit (via web install). Currently not supported (work in progress) - !define INC_ZZOGL 0 -!endif - -!ifndef INC_LANGS - ; Set to 1 to enable inclusion of Languages folders (which are currently missing in 0.9.7) - !define INC_LANGS 0 -!endif - -!define OUTFILE_POSTFIX "websetup" -!include "SharedSettings.nsh" - -!include "MUI2.nsh" -!include "AdvUninstLog.nsh" - -; Reserve features for improved performance with solid archiving. -; (uncomment if we add our own install options ini files) -;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS -;!insertmacro MUI_RESERVEFILE_LANGDLL - -; ======================================================================= -; Vista/Win7 UAC Stuff -; ======================================================================= - -!include "IsUserAdmin.nsi" - -; Allow admin-rights PCSX2 users to be hardcore! -AllowRootDirInstall true - -; FIXME !! -; Request application privileges for Windows Vista/7; I'd love for this to be sensible about which -; execution level it requests, but UAC is breaking my mind. I included some code for User type -; detection in function IsUserAdmin, but not really using it constructively yet. (see also our -; uses of SetShellVarContext in the installer sections) -RequestExecutionLevel admin - -; This defines the Advanced Uninstaller mode of operation... -!insertmacro UNATTENDED_UNINSTALL - -!define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP "banner.bmp" -;!define MUI_COMPONENTSPAGE_NODESC -!define MUI_COMPONENTSPAGE_SMALLDESC - -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES - -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_COMPONENTS -!insertmacro MUI_UNPAGE_INSTFILES - -!insertmacro MUI_LANGUAGE "English" - -!include "ApplyExeProps.nsh" -!include "SharedRedtape.nsh" - -; ======================================================================= -; Installer Sections -; ======================================================================= - -; ----------------------------------------------------------------------- -; Basic section (emulation proper) -Section "!${APP_NAME} (required)" SEC_CORE - - SectionIn RO - -!include "SectionCoreReqs.nsh" - - ; ------------------------------------------ - ; -- Plugins Section -- - ; ------------------------------------------ - -!if ${INC_PLUGINS} > 0 - - ; [TODO] : Eventually the 'latest' plugin packages should be downloaded from one - ; of our mirrors. For now plugins are included in the web installer. - - SetOutPath "$INSTDIR\Plugins" - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - - File /nonfatal /oname=gsdx-sse2-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-sse2.dll - File /nonfatal /oname=gsdx-ssse3-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-ssse3.dll - File /nonfatal /oname=gsdx-sse4-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-sse4.dll - File /nonfatal /oname=zerogs-r${SVNREV_ZEROGS}.dll ..\bin\Plugins\zerogs.dll - - File /nonfatal /oname=spu2-x-r${SVNREV_SPU2X}.dll ..\bin\Plugins\spu2-x.dll - File /nonfatal /oname=zerospu2-r${SVNREV_ZEROSPU2}.dll ..\bin\Plugins\zerospu2.dll - - File /nonfatal /oname=cdvdiso-r${SVNREV_CDVDISO}.dll ..\bin\Plugins\cdvdiso.dll - File ..\bin\Plugins\cdvdGigaherz.dll - - File /nonfatal /oname=lilypad-r${SVNREV_LILYPAD}.dll ..\bin\Plugins\lilypad.dll - File ..\bin\Plugins\PadSSSPSX.dll - - ;File ..\bin\Plugins\FWlinuz.dll - - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - -!endif - -SectionEnd - -!if ${INC_ZZOGL} > 0 -Section "ZZogl Plugin (requires OpenGL)" - - SetOutPath "$INSTDIR\Plugins" - !insertmacro UNINSTALL.LOG_OPEN_INSTALL - File /oname=zzogl-pg-r${SVNREV_ZZOGL}.dll ..\bin\Plugins\zzogl-pg.dll - !insertmacro UNINSTALL.LOG_CLOSE_INSTALL - -SectionEnd - -Section "Nvidia's CG Toolkit" - - ; This section is required by anything using OpenGL, typically. - ; It should be automatically checked when ZZogl is enabled. - - ; CG Toolkit would be downloaded from here: - ; http://developer.download.nvidia.com/cg/Cg_2.2/Cg-2.2_February2010_Setup.exe - -SectionEnd -!endif - -!include "SectionShortcuts.nsh" - -; ----------------------------------------------------------------------- -; MSVC Redistributable - required if the user does not already have it -; Note: if your NSIS generates an error here it means you need to download the latest -; visual studio redist package from microsoft. Any redist 2008/SP1 or newer will do. -; -; IMPORTANT: Online references for how to detect the presence of the VS2008 redists LIE. -; None of the methods are reliable, because the registry keys placed by the MSI installer -; vary depending on operating system *and* MSI installer version (youch). -; -Section "Microsoft Visual C++ 2008 SP1 Redist (required)" SEC_CRT2008 - - ;SectionIn RO - - ; Downloaded from: - ; http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe - - SetOutPath "$TEMP" - - DetailPrint "Downloading Visual C++ 2008 SP1 Redistributable Setup..." - DetailPrint "Contacting Microsoft.com..." - NSISdl::download /TIMEOUT=15000 "http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe" "vcredist_2008_sp1_x86.exe" - - Pop $R0 ;Get the return value - StrCmp $R0 "success" OnSuccess - DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" - DetailPrint "Contacting Googlecode.com..." - NSISdl::download /TIMEOUT=20000 "http://pcsx2.googlecode.com/files/vcredist_2008_sp1_x86.exe" "vcredist_2008_sp1_x86.exe" - - ; [TODO] Provide a mirror for this file hosted from pcsx2.net .. ? or emudev.net .. ? - ;Pop $R0 ;Get the return value - ;StrCmp $R0 "success" +2 - ;NSISdl::download /TIMEOUT=15000 "http://www.pcsx2.net/vcredist_x86.exe" "vcredist_2008_sp1_x86.exe" - - Pop $R0 ;Get the return value - StrCmp $R0 "success" +2 - MessageBox MB_OK "Could not download Visual Studio 2008 Redist; none of the mirrors appear to be functional." - Goto done - -OnSuccess: - DetailPrint "Running Visual C++ 2008 SP1 Redistributable Setup..." - ExecWait '"$TEMP\vcredist_2008_sp1_x86.exe" /qb' - DetailPrint "Finished Visual C++ 2008 SP1 Redistributable Setup" - Delete "$TEMP\vcredist_2008_sp1_x86.exe" - -done: -SectionEnd - -Section "Microsoft Visual C++ 2010 Redist (required)" SEC_CRT2010 - - ; Make this required on the web installer, since it has a fully reliable check to - ; see if it needs to be downloaded and installed or not. - SectionIn RO - - ; Detection made easy: Unlike previous redists, VC2010 now generates a platform - ; independent key for checking availability. - - ; Downloaded from: - ; http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe - - ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86" "Installed" - IfErrors done - StrCmp $R0 "1" done - - SetOutPath "$TEMP" - - DetailPrint "Downloading Visual C++ 2010 Redistributable Setup..." - DetailPrint "Contacting Microsoft.com..." - NSISdl::download /TIMEOUT=15000 "http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe" "vcredist_2010_x86.exe" - - Pop $R0 ;Get the return value - StrCmp $R0 "success" OnSuccess - DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" - DetailPrint "Contacting Googlecode.com..." - NSISdl::download /TIMEOUT=20000 "http://pcsx2.googlecode.com/files/vcredist_2010_x86.exe" "vcredist_2010_x86.exe" - - ; [TODO] Provide a mirror for this file hosted from pcsx2.net .. ? or emudev.net .. ? - ;Pop $R0 ;Get the return value - ;StrCmp $R0 "success" +2 - ;NSISdl::download /TIMEOUT=30000 "http://www.pcsx2.net/vcredist_x86.exe" "vcredist_2010_x86.exe" - - Pop $R0 ;Get the return value - StrCmp $R0 "success" +2 - MessageBox MB_OK "Could not download Visual Studio 2010 Redist; none of the mirrors appear to be functional." - Goto done - -OnSuccess: - DetailPrint "Running Visual C++ 2010 SP1 Redistributable Setup..." - ExecWait '"$TEMP\vcredist_2010_x86.exe" /qb' - DetailPrint "Finished Visual C++ 2010 SP1 Redistributable Setup" - - Delete "$TEMP\vcredist_2010_x86.exe" - -done: -SectionEnd - -; ----------------------------------------------------------------------- -; This section needs to be last, so that in case it fails, the rest of the program will -; be installed cleanly. -; -; This section could be optional, but why not? It's pretty painless to double-check that -; all the libraries are up-to-date. -; -Section "DirectX Web Setup (recommended)" SEC_DIRECTX - - ;SectionIn RO - - SetOutPath "$TEMP" - - DetailPrint "Downloading DirectX Web Setup..." - DetailPrint "Contacting Microsoft.com..." - NSISdl::download /TIMEOUT=15000 "http://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe" dxwebsetup.exe - - ; No mirrors provided for the dx web setup. Either we get it from Microsoft, or we don't bother. - ; (this is done because there's a good chance the dxwebsetup we provide won't work anyway, if Microsoft - ; has in fact re-arranged their website (again)). - - ;Pop $R0 ;Get the return value - ;StrCmp $R0 "success" OnSuccess - ;DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" - ;DetailPrint "Contacting Googlecode.com..." - ;NSISdl::download /TIMEOUT=20000 "http://code.google.com/dxwebsetup01.exe" "dxwebsetup.exe" - - Pop $R0 ;Get the return value - StrCmp $R0 "success" OnSuccess - DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" - MessageBox MB_OK "Could not download the DirectX Web Setup. Microsoft probably rearranged their website. Please do an internet search for 'DirectX Setup' and download and install it yourself after this installer has finished." - Goto done - - ;Pop $R0 ;Get the return value - ;StrCmp $R0 "success" +2 - ;NSISdl::download /TIMEOUT=30000 "http://www.pcsx2.net/dxwebsetup.exe" "dxwebsetup.exe" - -OnSuccess: - DetailPrint "Running DirectX Web Setup..." - ExecWait '"$TEMP\dxwebsetup.exe" /Q' $DirectXSetupError - DetailPrint "Finished DirectX Web Setup" - Delete "$TEMP\dxwebsetup.exe" - -done: - -SectionEnd - -!include "SectionUninstaller.nsh" - - -LangString DESC_CORE ${LANG_ENGLISH} "Core components (binaries, plugins, languages, etc)." - -LangString DESC_STARTMENU ${LANG_ENGLISH} "Adds shortcuts for PCSX2 to the start menu (all users)." -LangString DESC_DESKTOP ${LANG_ENGLISH} "Adds a shortcut for PCSX2 to the desktop (all users)." - -LangString DESC_CRT2008 ${LANG_ENGLISH} "Required! Only uncheck if you are certain this component is already installed." -LangString DESC_CRT2010 ${LANG_ENGLISH} "Will only be downloaded if you don't already have it installed." -LangString DESC_DIRECTX ${LANG_ENGLISH} "Only uncheck this if you are quite certain your Direct3D runtimes are up to date." - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CORE} $(DESC_CORE) - !insertmacro MUI_DESCRIPTION_TEXT ${SEC_STARTMENU} $(DESC_STARTMENU) - !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $(DESC_DESKTOP) - - !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CRT2008} $(DESC_CRT2008) - !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CRT2010} $(DESC_CRT2010) - !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DIRECTX} $(DESC_DIRECTX) -!insertmacro MUI_FUNCTION_DESCRIPTION_END + +; PCSX2 Web-based Install Package! +; (a NSIS installer script) +; +; Copyright 2009-2010 PCSX2 Dev Team +; +; The installer generated by this script will download all relevant components for +; PCSX2 from a variety of mirror hosts. Packages are only downloaded on an as-needed +; basis; this most importantly applies to the very bulky VS 2008 and VS2010 packages. + +!ifndef INC_ZZOGL + ; Includes ZZOGL and CG Toolkit (via web install). Currently not supported (work in progress) + !define INC_ZZOGL 0 +!endif + +!define OUTFILE_POSTFIX "websetup" +!include "SharedBase.nsh" + +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_COMPONENTS +!insertmacro MUI_UNPAGE_INSTFILES + +!insertmacro MUI_LANGUAGE "English" + +!include "ApplyExeProps.nsh" +!include "SharedRedtape.nsh" + +; ======================================================================= +; Installer Sections +; ======================================================================= + +; ----------------------------------------------------------------------- +; Basic section (emulation proper) +Section "!${APP_NAME} (required)" SEC_CORE + + SectionIn RO + +!include "SectionCoreReqs.nsh" + + ; ------------------------------------------ + ; -- Plugins Section -- + ; ------------------------------------------ + +!if ${INC_PLUGINS} > 0 + + ; [TODO] : Eventually the 'latest' plugin packages should be downloaded from one + ; of our mirrors. For now plugins are included in the web installer. + + SetOutPath "$INSTDIR\Plugins" + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + + File /nonfatal /oname=gsdx-sse2-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-sse2.dll + File /nonfatal /oname=gsdx-ssse3-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-ssse3.dll + File /nonfatal /oname=gsdx-sse4-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-sse4.dll + File /nonfatal /oname=zerogs-r${SVNREV_ZEROGS}.dll ..\bin\Plugins\zerogs.dll + + File /nonfatal /oname=spu2-x-r${SVNREV_SPU2X}.dll ..\bin\Plugins\spu2-x.dll + File /nonfatal /oname=zerospu2-r${SVNREV_ZEROSPU2}.dll ..\bin\Plugins\zerospu2.dll + + File /nonfatal /oname=cdvdiso-r${SVNREV_CDVDISO}.dll ..\bin\Plugins\cdvdiso.dll + File ..\bin\Plugins\cdvdGigaherz.dll + + File /nonfatal /oname=lilypad-r${SVNREV_LILYPAD}.dll ..\bin\Plugins\lilypad.dll + File ..\bin\Plugins\PadSSSPSX.dll + + ;File ..\bin\Plugins\FWlinuz.dll + + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + +!endif + +SectionEnd + +!include "SectionShortcuts.nsh" + +!if ${INC_ZZOGL} > 0 +Section "ZZogl Plugin (requires OpenGL)" + + SetOutPath "$INSTDIR\Plugins" + !insertmacro UNINSTALL.LOG_OPEN_INSTALL + File /oname=zzogl-pg-r${SVNREV_ZZOGL}.dll ..\bin\Plugins\zzogl-pg.dll + !insertmacro UNINSTALL.LOG_CLOSE_INSTALL + +SectionEnd + +Section "Nvidia's CG Toolkit" + + ; This section is required by anything using OpenGL, typically. + ; It should be automatically checked when ZZogl is enabled. + + ; CG Toolkit would be downloaded from here: + ; http://developer.download.nvidia.com/cg/Cg_2.2/Cg-2.2_February2010_Setup.exe + +SectionEnd +!endif + +; ----------------------------------------------------------------------- +; MSVC Redistributable - required if the user does not already have it +; Note: if your NSIS generates an error here it means you need to download the latest +; visual studio redist package from microsoft. Any redist 2008/SP1 or newer will do. +; +; IMPORTANT: Online references for how to detect the presence of the VS2008 redists LIE. +; None of the methods are reliable, because the registry keys placed by the MSI installer +; vary depending on operating system *and* MSI installer version (youch). +; +Section "Microsoft Visual C++ 2008 SP1 Redist (required)" SEC_CRT2008 + + ;SectionIn RO + + ; Downloaded from: + ; http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe + + SetOutPath "$TEMP" + + DetailPrint "Downloading Visual C++ 2008 SP1 Redistributable Setup..." + DetailPrint "Contacting Microsoft.com..." + NSISdl::download /TIMEOUT=15000 "http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe" "vcredist_2008_sp1_x86.exe" + + Pop $R0 ;Get the return value + StrCmp $R0 "success" OnSuccess + DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" + DetailPrint "Contacting Googlecode.com..." + NSISdl::download /TIMEOUT=20000 "http://pcsx2.googlecode.com/files/vcredist_2008_sp1_x86.exe" "vcredist_2008_sp1_x86.exe" + + ; [TODO] Provide a mirror for this file hosted from pcsx2.net .. ? or emudev.net .. ? + ;Pop $R0 ;Get the return value + ;StrCmp $R0 "success" +2 + ;NSISdl::download /TIMEOUT=15000 "http://www.pcsx2.net/vcredist_x86.exe" "vcredist_2008_sp1_x86.exe" + + Pop $R0 ;Get the return value + StrCmp $R0 "success" +2 + MessageBox MB_OK "Could not download Visual Studio 2008 Redist; none of the mirrors appear to be functional." + Goto done + +OnSuccess: + DetailPrint "Running Visual C++ 2008 SP1 Redistributable Setup..." + ExecWait '"$TEMP\vcredist_2008_sp1_x86.exe" /qb' + DetailPrint "Finished Visual C++ 2008 SP1 Redistributable Setup" + Delete "$TEMP\vcredist_2008_sp1_x86.exe" + +done: +SectionEnd + +Section "Microsoft Visual C++ 2010 Redist (required)" SEC_CRT2010 + + ; Make this required on the web installer, since it has a fully reliable check to + ; see if it needs to be downloaded and installed or not. + SectionIn RO + + ; Detection made easy: Unlike previous redists, VC2010 now generates a platform + ; independent key for checking availability. + + ; Downloaded from: + ; http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe + + ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86" "Installed" + IfErrors done + StrCmp $R0 "1" done + + SetOutPath "$TEMP" + + DetailPrint "Downloading Visual C++ 2010 Redistributable Setup..." + DetailPrint "Contacting Microsoft.com..." + NSISdl::download /TIMEOUT=15000 "http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe" "vcredist_2010_x86.exe" + + Pop $R0 ;Get the return value + StrCmp $R0 "success" OnSuccess + DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" + DetailPrint "Contacting Googlecode.com..." + NSISdl::download /TIMEOUT=20000 "http://pcsx2.googlecode.com/files/vcredist_2010_x86.exe" "vcredist_2010_x86.exe" + + ; [TODO] Provide a mirror for this file hosted from pcsx2.net .. ? or emudev.net .. ? + ;Pop $R0 ;Get the return value + ;StrCmp $R0 "success" +2 + ;NSISdl::download /TIMEOUT=30000 "http://www.pcsx2.net/vcredist_x86.exe" "vcredist_2010_x86.exe" + + Pop $R0 ;Get the return value + StrCmp $R0 "success" +2 + MessageBox MB_OK "Could not download Visual Studio 2010 Redist; none of the mirrors appear to be functional." + Goto done + +OnSuccess: + DetailPrint "Running Visual C++ 2010 SP1 Redistributable Setup..." + ExecWait '"$TEMP\vcredist_2010_x86.exe" /qb' + DetailPrint "Finished Visual C++ 2010 SP1 Redistributable Setup" + + Delete "$TEMP\vcredist_2010_x86.exe" + +done: +SectionEnd + +; ----------------------------------------------------------------------- +; This section needs to be last, so that in case it fails, the rest of the program will +; be installed cleanly. +; +; This section could be optional, but why not? It's pretty painless to double-check that +; all the libraries are up-to-date. +; +Section "DirectX Web Setup (recommended)" SEC_DIRECTX + + ;SectionIn RO + + SetOutPath "$TEMP" + + DetailPrint "Downloading DirectX Web Setup..." + DetailPrint "Contacting Microsoft.com..." + NSISdl::download /TIMEOUT=15000 "http://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe" dxwebsetup.exe + + ; No mirrors provided for the dx web setup. Either we get it from Microsoft, or we don't bother. + ; (this is done because there's a good chance the dxwebsetup we provide won't work anyway, if Microsoft + ; has in fact re-arranged their website (again)). + + ;Pop $R0 ;Get the return value + ;StrCmp $R0 "success" OnSuccess + ;DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" + ;DetailPrint "Contacting Googlecode.com..." + ;NSISdl::download /TIMEOUT=20000 "http://code.google.com/dxwebsetup01.exe" "dxwebsetup.exe" + + Pop $R0 ;Get the return value + StrCmp $R0 "success" OnSuccess + DetailPrint "Cound not contact Microsoft.com, or the file has been (re)moved!" + MessageBox MB_OK "Could not download the DirectX Web Setup. Microsoft probably rearranged their website. Please do an internet search for 'DirectX Setup' and download and install it yourself after this installer has finished." + Goto done + + ;Pop $R0 ;Get the return value + ;StrCmp $R0 "success" +2 + ;NSISdl::download /TIMEOUT=30000 "http://www.pcsx2.net/dxwebsetup.exe" "dxwebsetup.exe" + +OnSuccess: + DetailPrint "Running DirectX Web Setup..." + ExecWait '"$TEMP\dxwebsetup.exe" /Q' $DirectXSetupError + DetailPrint "Finished DirectX Web Setup" + Delete "$TEMP\dxwebsetup.exe" + +done: + +SectionEnd + +!include "SectionUninstaller.nsh" + +LangString DESC_CORE ${LANG_ENGLISH} "Core components (binaries, plugins, languages, etc)." + +LangString DESC_STARTMENU ${LANG_ENGLISH} "Adds shortcuts for PCSX2 to the start menu (all users)." +LangString DESC_DESKTOP ${LANG_ENGLISH} "Adds a shortcut for PCSX2 to the desktop (all users)." + +LangString DESC_CRT2008 ${LANG_ENGLISH} "Required! Only uncheck if you are certain this component is already installed." +LangString DESC_CRT2010 ${LANG_ENGLISH} "Will only be downloaded if you don't already have it installed." +LangString DESC_DIRECTX ${LANG_ENGLISH} "Only uncheck this if you are quite certain your Direct3D runtimes are up to date." + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CORE} $(DESC_CORE) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_STARTMENU} $(DESC_STARTMENU) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $(DESC_DESKTOP) + + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CRT2008} $(DESC_CRT2008) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CRT2010} $(DESC_CRT2010) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DIRECTX} $(DESC_DIRECTX) +!insertmacro MUI_FUNCTION_DESCRIPTION_END diff --git a/nsis/templates/svnrev_cdvdiso.nsh b/nsis/templates/svnrev_cdvdiso.nsh index cf0d8ac873..e7c969522c 100644 --- a/nsis/templates/svnrev_cdvdiso.nsh +++ b/nsis/templates/svnrev_cdvdiso.nsh @@ -1 +1,5 @@ -!define SVNREV_CDVDISO $WCREV$ \ No newline at end of file +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_CDVDISO $WCREV$ +!else + !define SVNREV_CDVDISO ${SVNREV_PACKAGE} +!endif diff --git a/nsis/templates/svnrev_gsdx.nsh b/nsis/templates/svnrev_gsdx.nsh index 717e0a7fb2..86e16febaf 100644 --- a/nsis/templates/svnrev_gsdx.nsh +++ b/nsis/templates/svnrev_gsdx.nsh @@ -1 +1,5 @@ -!define SVNREV_GSDX $WCREV$ +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_GSDX $WCREV$ +!else + !define SVNREV_GSDX ${SVNREV_PACKAGE} +!endif diff --git a/nsis/templates/svnrev_lilypad.nsh b/nsis/templates/svnrev_lilypad.nsh index 383e8131d2..4df620fc51 100644 --- a/nsis/templates/svnrev_lilypad.nsh +++ b/nsis/templates/svnrev_lilypad.nsh @@ -1 +1,5 @@ -!define SVNREV_LILYPAD $WCREV$ \ No newline at end of file +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_LILYPAD $WCREV$ +!else + !define SVNREV_LILYPAD ${SVNREV_PACKAGE} +!endif \ No newline at end of file diff --git a/nsis/templates/svnrev_package.nsh b/nsis/templates/svnrev_package.nsh new file mode 100644 index 0000000000..a3446d9fee --- /dev/null +++ b/nsis/templates/svnrev_package.nsh @@ -0,0 +1,3 @@ + +!define SVNREV_PACKAGE $WCREV$ +!define SVNMOD_PACKAGE $WCMODS?1:0$ \ No newline at end of file diff --git a/nsis/templates/svnrev_pcsx2.nsh b/nsis/templates/svnrev_pcsx2.nsh index 97cabb27fc..396774dd1d 100644 --- a/nsis/templates/svnrev_pcsx2.nsh +++ b/nsis/templates/svnrev_pcsx2.nsh @@ -1,3 +1,8 @@ +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_PCSX2 $WCREV$ + !define SVNMOD_PCSX2 $WCMODS?1:0$ +!else + !define SVNREV_PCSX2 ${SVNREV_PACKAGE} + !define SVNMOD_PCSX2 ${SVMOD_PACKAGE} +!endif -!define SVNREV $WCREV$ -!define SVN_MODS $WCMODS?1:0$ \ No newline at end of file diff --git a/nsis/templates/svnrev_plugins.nsh b/nsis/templates/svnrev_plugins.nsh new file mode 100644 index 0000000000..bd8be6da71 --- /dev/null +++ b/nsis/templates/svnrev_plugins.nsh @@ -0,0 +1,7 @@ +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_PLUGINS $WCREV$ + !define SVNMOD_PLUGINS $WCMODS?1:0$ +!else + !define SVNREV_PLUGINS ${SVNREV_PACKAGE} + !define SVNMOD_PLUGINS ${SVMOD_PACKAGE} +!endif diff --git a/nsis/templates/svnrev_spu2x.nsh b/nsis/templates/svnrev_spu2x.nsh index f24947e1d5..9b15af3760 100644 --- a/nsis/templates/svnrev_spu2x.nsh +++ b/nsis/templates/svnrev_spu2x.nsh @@ -1 +1,5 @@ -!define SVNREV_SPU2X $WCREV$ \ No newline at end of file +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_SPU2X $WCREV$ +!else + !define SVNREV_SPU2X ${SVNREV_PACKAGE} +!endif \ No newline at end of file diff --git a/nsis/templates/svnrev_zerogs.nsh b/nsis/templates/svnrev_zerogs.nsh index 4662beb378..8985f9f10d 100644 --- a/nsis/templates/svnrev_zerogs.nsh +++ b/nsis/templates/svnrev_zerogs.nsh @@ -1 +1,5 @@ -!define SVNREV_ZEROGS $WCREV$ \ No newline at end of file +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_ZEROGS $WCREV$ +!else + !define SVNREV_ZEROGS ${SVNREV_PACKAGE} +!endif \ No newline at end of file diff --git a/nsis/templates/svnrev_zerospu2.nsh b/nsis/templates/svnrev_zerospu2.nsh index 2b35a869ae..109c18281e 100644 --- a/nsis/templates/svnrev_zerospu2.nsh +++ b/nsis/templates/svnrev_zerospu2.nsh @@ -1 +1,5 @@ -!define SVNREV_ZEROSPU2 $WCREV$ \ No newline at end of file +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_ZEROSPU2 $WCREV$ +!else + !define SVNREV_ZEROSPU2 ${SVNREV_PACKAGE} +!endif \ No newline at end of file diff --git a/nsis/templates/svnrev_zzogl.nsh b/nsis/templates/svnrev_zzogl.nsh index 918f5a78d5..feb04d0a52 100644 --- a/nsis/templates/svnrev_zzogl.nsh +++ b/nsis/templates/svnrev_zzogl.nsh @@ -1 +1,5 @@ -!define SVNREV_ZZOGL $WCREV$ \ No newline at end of file +!if ${USE_PACKAGE_REV} == 0 + !define SVNREV_ZZOGL $WCREV$ +!else + !define SVNREV_ZZOGL ${SVNREV_PACKAGE} +!endif \ No newline at end of file