From 5ec274ca0a2df5420236afef83d25da0ac026e14 Mon Sep 17 00:00:00 2001 From: "Jake.Stine" Date: Sat, 15 May 2010 13:13:55 +0000 Subject: [PATCH] NSIS Installer: * Added banner image * (UAC) Re-enabled forced-admin mode for now * Fixed a bug in the vc redist installer. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3016 96395faa-99c1-11dd-bbfe-3dabce05a288 --- nsis/IsUserAdmin.nsi | 97 ++++---- nsis/banner.bmp | Bin 0 -> 27414 bytes nsis/pcsx2_installer_script.nsi | 426 +++++++++++++++++--------------- nsis/templates/svnrev_zzogl.nsh | 1 + 4 files changed, 281 insertions(+), 243 deletions(-) create mode 100644 nsis/banner.bmp create mode 100644 nsis/templates/svnrev_zzogl.nsh diff --git a/nsis/IsUserAdmin.nsi b/nsis/IsUserAdmin.nsi index fee1c81eb..698beeff1 100644 --- a/nsis/IsUserAdmin.nsi +++ b/nsis/IsUserAdmin.nsi @@ -1,53 +1,60 @@ -; Author: Lilla (lilla@earthlink.net) 2003-06-13 -; function IsUserAdmin uses plugin \NSIS\PlusgIns\UserInfo.dll -; This function is based upon code in \NSIS\Contrib\UserInfo\UserInfo.nsi -; This function was tested under NSIS 2 beta 4 (latest CVS as of this writing). -; -; Usage: -; Call IsUserAdmin -; Pop $R0 ; at this point $R0 is "true" or "false" -; + Function IsUserAdmin - Push $R0 - Push $R1 - Push $R2 - + ClearErrors UserInfo::GetName IfErrors Win9x - Pop $R1 - UserInfo::GetAccountType - Pop $R2 - - StrCmp $R2 "Admin" 0 Continue - ; Observation: I get here when running Win98SE. (Lilla) - ; The functions UserInfo.dll looks for are there on Win98 too, - ; but just don't work. So UserInfo.dll, knowing that admin isn't required - ; on Win98, returns admin anyway. (per kichik) - ; MessageBox MB_OK 'User "$R1" is in the Administrators group' - StrCpy $R0 "true" - Goto Done + Pop $0 + UserInfo::GetAccountType + Pop $1 - Continue: - ; You should still check for an empty string because the functions - ; UserInfo.dll looks for may not be present on Windows 95. (per kichik) - StrCmp $R2 "" Win9x - StrCpy $R0 "false" - ;MessageBox MB_OK 'User "$R1" is in the "$R2" group' - Goto Done + # GetOriginalAccountType will check the tokens of the original user of the + # current thread/process. If the user tokens were elevated or limited for + # this process, GetOriginalAccountType will return the non-restricted + # account type. + # On Vista with UAC, for example, this is not the same value when running + # with `RequestExecutionLevel user`. GetOriginalAccountType will return + # "admin" while GetAccountType will return "user". + UserInfo::GetOriginalAccountType + Pop $2 + + ; Windows9x can sometimes return empty strings... + StrCmp $1 "" 0 +2 + Goto Win9x + + StrCmp $1 "Admin" 0 +3 + DetailPrint '(UAC) User "$0" is in the Administrators group' + Goto done + + StrCmp $1 "Power" 0 +3 + DetailPrint '(UAC) User "$0" is in the Power Users group' + Goto done + + StrCmp $1 "User" 0 +3 + DetailPrint '(UAC) User "$0" is just a regular user' + Goto done + + StrCmp $1 "Guest" 0 +3 + ; Guest account? Probably doomed to failure, but might as well try, just in case some shit + ; is being mis-reported. + DetailPrint '(UAC) User "$0" is a guest -- this installer is probably going to fail. Good luck.' + Goto done + + ;MessageBox MB_OK "Unknown error while trying to detect " + DetailPrint "(UAC) Unknown error while trying to detect account type; assuming USER mode." + StrCpy $1 "User" + Goto done + +Win9x: + # This one means you don't need to care about admin or + # not admin because Windows 9x doesn't either + MessageBox MB_OK "Error! PCSX2 requires Windows 2000 or newer to install and run!" + Quit + +done: + + ; How to return the admin modeas a variable? NSIS confuses me -- air + ;Exch $R0 - Win9x: - ; comment/message below is by UserInfo.nsi author: - ; This one means you don't need to care about admin or - ; not admin because Windows 9x doesn't either - ;MessageBox MB_OK "Error! This DLL can't run under Windows 9x!" - StrCpy $R0 "true" - - Done: - ;MessageBox MB_OK 'User= "$R1" AccountType= "$R2" IsUserAdmin= "$R0"' - - Pop $R2 - Pop $R1 - Exch $R0 FunctionEnd \ No newline at end of file diff --git a/nsis/banner.bmp b/nsis/banner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2a288f9fc750130403117cc229887801ed73d3e3 GIT binary patch literal 27414 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 + call IsUserAdmin FunctionEnd Function .onInstSuccess - ;create/update log always within .onInstSuccess function - !insertmacro UNINSTALL.LOG_UPDATE_INSTALL + ;create/update log always within .onInstSuccess function + !insertmacro UNINSTALL.LOG_UPDATE_INSTALL FunctionEnd -; --------------------------------------------------- -; Uninstaller Section -; --------------------------------------------------- +; ======================================================================= +; Un.Installer Sections +; ======================================================================= -; ------------------------------------- ; 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 @@ -311,60 +362,63 @@ FunctionEnd Function un.removeShorties - ; Remove shortcuts, if any + ; Remove shortcuts, if any - Delete "$DESKTOP\${APP_NAME}.lnk" + 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" - - StrCpy $0 "$SMPROGRAMS\PCSX2" - Call un.DeleteDirIfEmpty + Delete "$SMPROGRAMS\PCSX2\Uninstall ${APP_NAME}.lnk" + Delete "$SMPROGRAMS\PCSX2\${APP_NAME}.lnk" + ;Delete "$SMPROGRAMS\PCSX2\pcsx2-dev-r${SVNREV}.lnk" + + StrCpy $0 "$SMPROGRAMS\PCSX2" + Call un.DeleteDirIfEmpty FunctionEnd -; Languages, patches, and null plugins should only be removed if all previous versions of -; PCSX2 have been uninstalled. And we know that's happened when the pcsx2\versions registry -; key is empty. -Function un.removeSharedJunk - !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Langs" - !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Patches" +; ----------------------------------------------------------------------- +Section "Un.Core Executables ${APP_NAME}" - Delete "$INSTDIR\Plugins\GSnull.dll" - ;Delete "$INSTDIR\Plugins\SPU2null.dll" - Delete "$INSTDIR\Plugins\USBnull.dll" - Delete "$INSTDIR\Plugins\DEV9null.dll" - Delete "$INSTDIR\Plugins\FWnull.dll" - Delete "$INSTDIR\Plugins\CDVDnull.dll" -FunctionEnd - - -Section "Un.Basic Removal (removes only files installed by this package) ${APP_NAME}" + SetShellVarContext all !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR" - MessageBox MB_YESNO "Also remove plugins that were installed with this package?" IDYES true IDNO false - true: - !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Plugins" - false: - !insertmacro UNINSTALL.LOG_END_UNINSTALL - ; Remove registry keys (but only the ones related to the installer -- user options remain) DeleteRegKey HKLM "${INSTDIR_REG_KEY}" DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" Call un.removeShorties - ; Use $TEMP as the out dir when removing directories, since NSIS won't let us remove the - ; "current" directory. +SectionEnd - SetOutPath "$TEMP" +; ----------------------------------------------------------------------- +Section "Un.Shared Components (DLLs, Languages, etc)" + + MessageBox MB_YESNO "WARNING! If you have multiple versions of PCSX2 installed, removing all shared files will probably break them. Are you sure you want to proceed?" \ + IDYES true IDNO false + + true: + !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Langs" + !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Plugins" + + ; Kill the entire PCSX2 registry key. + DeleteRegKey HKLM Software\PCSX2 + + false: + ; User cancelled -- do nothing!! + +SectionEnd + +; 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\patches" - Call un.DeleteDirIfEmpty - + StrCpy $0 "$INSTDIR\langs" Call un.DeleteDirIfEmpty @@ -373,29 +427,5 @@ Section "Un.Basic Removal (removes only files installed by this package) ${APP_N StrCpy $0 "$INSTDIR" Call un.DeleteDirIfEmpty - -SectionEnd - -Section "Un.Full Removal (completely removes all PCSX2 program files and folders)" - - MessageBox MB_YESNO "WARNING! This will remove *all* files in $INSTDIR. If you have multiple versions of PCSX2 installed, this *will* break them all! Are you sure you want to proceed?" IDYES true IDNO false - true: - - RMDir /r "$INSTDIR" - Call un.removeShorties - - ; Kill the entire PCSX2 registry key, along with installer junk. - DeleteRegKey HKLM Software\PCSX2 - DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" - - false: -SectionEnd - -; -------------------------------------- -Function un.onInit - - ;begin uninstall, could be added on top of uninstall section instead - !insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL - FunctionEnd diff --git a/nsis/templates/svnrev_zzogl.nsh b/nsis/templates/svnrev_zzogl.nsh new file mode 100644 index 000000000..918f5a78d --- /dev/null +++ b/nsis/templates/svnrev_zzogl.nsh @@ -0,0 +1 @@ +!define SVNREV_ZZOGL $WCREV$ \ No newline at end of file