diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2017-12-31 12:34:43 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-02-18 10:22:51 +0100 |
commit | e803a1be814ccffbed19072f77425c7252b5e19e (patch) | |
tree | cb5b3a204b49f56253bade507ffbe3b7544778c3 /browser/installer/windows/nsis | |
parent | 6f5c57ae74045228c2cbe4b797fe228f03274e6c (diff) | |
download | UXP-e803a1be814ccffbed19072f77425c7252b5e19e.tar UXP-e803a1be814ccffbed19072f77425c7252b5e19e.tar.gz UXP-e803a1be814ccffbed19072f77425c7252b5e19e.tar.lz UXP-e803a1be814ccffbed19072f77425c7252b5e19e.tar.xz UXP-e803a1be814ccffbed19072f77425c7252b5e19e.zip |
Change format handlers to Basilisk.
Diffstat (limited to 'browser/installer/windows/nsis')
-rw-r--r-- | browser/installer/windows/nsis/oneoff_en-US.nsh | 12 | ||||
-rwxr-xr-x | browser/installer/windows/nsis/shared.nsh | 100 | ||||
-rw-r--r-- | browser/installer/windows/nsis/stub.nsi | 438 | ||||
-rwxr-xr-x | browser/installer/windows/nsis/uninstaller.nsi | 6 |
4 files changed, 325 insertions, 231 deletions
diff --git a/browser/installer/windows/nsis/oneoff_en-US.nsh b/browser/installer/windows/nsis/oneoff_en-US.nsh deleted file mode 100644 index 62d95ade9..000000000 --- a/browser/installer/windows/nsis/oneoff_en-US.nsh +++ /dev/null @@ -1,12 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -; Custom strings for en-US. This is not in the locale directory so these strings -; aren't translated. -!define INDENT " " -!define INTRO_BLURB "Thanks for choosing $BrandFullName. We’re not just designed to be different, we’re different by design." -!define INSTALL_BLURB1 "You're about to enjoy the very latest in speed, flexibility and security so you're always in control." -!define INSTALL_BLURB2 "And you're joining a global community of users, contributors and developers working to make the best browser in the world." -!define INSTALL_BLURB3 "You even get a haiku:$\n${INDENT}Proudly non-profit$\n${INDENT}Free to innovate for you$\n${INDENT}And a better Web" -!undef INDENT diff --git a/browser/installer/windows/nsis/shared.nsh b/browser/installer/windows/nsis/shared.nsh index 8d7eea618..fb2239d24 100755 --- a/browser/installer/windows/nsis/shared.nsh +++ b/browser/installer/windows/nsis/shared.nsh @@ -10,12 +10,12 @@ System::Call "kernel32::ProcessIdToSessionId(i $0, *i ${NSIS_MAX_STRLEN} r9)" ; Determine if we're the protected UserChoice default or not. If so fix the - ; start menu tile. In case there are 2 Firefox installations, we only do + ; start menu tile. In case there are 2 Basilisk installations, we only do ; this if the application being updated is the default. ReadRegStr $0 HKCU "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice" "ProgId" - ${If} $0 == "FirefoxURL" + ${If} $0 == "BasiliskURL" ${AndIf} $9 != 0 ; We're not running in session 0 - ReadRegStr $0 HKCU "Software\Classes\FirefoxURL\shell\open\command" "" + ReadRegStr $0 HKCU "Software\Classes\BasiliskURL\shell\open\command" "" ${GetPathFromString} "$0" $0 ${GetParent} "$0" $0 ${If} ${FileExists} "$0" @@ -327,13 +327,13 @@ ClearErrors EnumRegKey $7 HKCR "${FILE_TYPE}" 0 ${If} ${Errors} - WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}" "" "FirefoxHTML" + WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}" "" "BasiliskHTML" ${EndIf} - WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}\OpenWithProgids" "FirefoxHTML" "" + WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}\OpenWithProgids" "BasiliskHTML" "" !macroend !define AddAssociationIfNoneExist "!insertmacro AddAssociationIfNoneExist" -; Adds the protocol and file handler registry entries for making Firefox the +; Adds the protocol and file handler registry entries for making Basilisk the ; default handler (uses SHCTX). !macro SetHandlers ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 @@ -341,30 +341,30 @@ StrCpy $0 "SOFTWARE\Classes" StrCpy $2 "$\"$8$\" -osint -url $\"%1$\"" - ; Associate the file handlers with FirefoxHTML + ; Associate the file handlers with BasiliskHTML ReadRegStr $6 SHCTX "$0\.htm" "" - ${If} "$6" != "FirefoxHTML" - WriteRegStr SHCTX "$0\.htm" "" "FirefoxHTML" + ${If} "$6" != "BasiliskHTML" + WriteRegStr SHCTX "$0\.htm" "" "BasiliskHTML" ${EndIf} ReadRegStr $6 SHCTX "$0\.html" "" - ${If} "$6" != "FirefoxHTML" - WriteRegStr SHCTX "$0\.html" "" "FirefoxHTML" + ${If} "$6" != "BasiliskHTML" + WriteRegStr SHCTX "$0\.html" "" "BasiliskHTML" ${EndIf} ReadRegStr $6 SHCTX "$0\.shtml" "" - ${If} "$6" != "FirefoxHTML" - WriteRegStr SHCTX "$0\.shtml" "" "FirefoxHTML" + ${If} "$6" != "BasiliskHTML" + WriteRegStr SHCTX "$0\.shtml" "" "BasiliskHTML" ${EndIf} ReadRegStr $6 SHCTX "$0\.xht" "" - ${If} "$6" != "FirefoxHTML" - WriteRegStr SHCTX "$0\.xht" "" "FirefoxHTML" + ${If} "$6" != "BasiliskHTML" + WriteRegStr SHCTX "$0\.xht" "" "BasiliskHTML" ${EndIf} ReadRegStr $6 SHCTX "$0\.xhtml" "" - ${If} "$6" != "FirefoxHTML" - WriteRegStr SHCTX "$0\.xhtml" "" "FirefoxHTML" + ${If} "$6" != "BasiliskHTML" + WriteRegStr SHCTX "$0\.xhtml" "" "BasiliskHTML" ${EndIf} ${AddAssociationIfNoneExist} ".pdf" @@ -374,12 +374,12 @@ ${AddAssociationIfNoneExist} ".pdf" ${AddAssociationIfNoneExist} ".webm" - ; An empty string is used for the 5th param because FirefoxHTML is not a + ; An empty string is used for the 5th param because BasiliskHTML is not a ; protocol handler - ${AddDisabledDDEHandlerValues} "FirefoxHTML" "$2" "$8,1" \ + ${AddDisabledDDEHandlerValues} "BasiliskHTML" "$2" "$8,1" \ "${AppRegName} HTML Document" "" - ${AddDisabledDDEHandlerValues} "FirefoxURL" "$2" "$8,1" "${AppRegName} URL" \ + ${AddDisabledDDEHandlerValues} "BasiliskURL" "$2" "$8,1" "${AppRegName} URL" \ "true" ; An empty string is used for the 4th & 5th params because the following ; protocol handlers already have a display name and the additional keys @@ -449,35 +449,35 @@ WriteRegStr ${RegKey} "$0\Capabilities" "ApplicationIcon" "$8,0" WriteRegStr ${RegKey} "$0\Capabilities" "ApplicationName" "${BrandShortName}" - WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".htm" "FirefoxHTML" - WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".html" "FirefoxHTML" - WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".shtml" "FirefoxHTML" - WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".xht" "FirefoxHTML" - WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".xhtml" "FirefoxHTML" + WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".htm" "BasiliskHTML" + WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".html" "BasiliskHTML" + WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".shtml" "BasiliskHTML" + WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".xht" "BasiliskHTML" + WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".xhtml" "BasiliskHTML" WriteRegStr ${RegKey} "$0\Capabilities\StartMenu" "StartMenuInternet" "$R9" - WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "ftp" "FirefoxURL" - WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "http" "FirefoxURL" - WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "https" "FirefoxURL" + WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "ftp" "BasiliskURL" + WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "http" "BasiliskURL" + WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "https" "BasiliskURL" ; Vista Registered Application WriteRegStr ${RegKey} "Software\RegisteredApplications" "${AppRegName}" "$0\Capabilities" !macroend !define SetStartMenuInternet "!insertmacro SetStartMenuInternet" -; The IconHandler reference for FirefoxHTML can end up in an inconsistent state +; The IconHandler reference for BasiliskHTML can end up in an inconsistent state ; due to changes not being detected by the IconHandler for side by side ; installs (see bug 268512). The symptoms can be either an incorrect icon or no -; icon being displayed for files associated with Firefox (does not use SHCTX). +; icon being displayed for files associated with Basilisk (does not use SHCTX). !macro FixShellIconHandler RegKey ClearErrors - ReadRegStr $1 ${RegKey} "Software\Classes\FirefoxHTML\ShellEx\IconHandler" "" + ReadRegStr $1 ${RegKey} "Software\Classes\BasiliskHTML\ShellEx\IconHandler" "" ${Unless} ${Errors} - ReadRegStr $1 ${RegKey} "Software\Classes\FirefoxHTML\DefaultIcon" "" + ReadRegStr $1 ${RegKey} "Software\Classes\BasiliskHTML\DefaultIcon" "" ${GetLongPath} "$INSTDIR\${FileMainEXE}" $2 ${If} "$1" != "$2,1" - WriteRegStr ${RegKey} "Software\Classes\FirefoxHTML\DefaultIcon" "" "$2,1" + WriteRegStr ${RegKey} "Software\Classes\BasiliskHTML\DefaultIcon" "" "$2,1" ${EndIf} ${EndUnless} !macroend @@ -612,7 +612,7 @@ ; HKCU Software\Classes keys when associating handlers. The fix uses the merged ; view in HKCR to check for existance of an existing association. This macro ; cleans affected installations by removing the HKLM and HKCU value if it is set -; to FirefoxHTML when there is a value for PersistentHandler or by removing the +; to BasiliskHTML when there is a value for PersistentHandler or by removing the ; HKCU value when the HKLM value has a value other than an empty string. !macro FixBadFileAssociation FILE_TYPE ; Only delete the default value in case the key has values for OpenWithList, @@ -621,16 +621,16 @@ ReadRegStr $1 HKLM "Software\Classes\${FILE_TYPE}" "" ReadRegStr $2 HKCR "${FILE_TYPE}\PersistentHandler" "" ${If} "$2" != "" - ; Since there is a persistent handler remove FirefoxHTML as the default - ; value from both HKCU and HKLM if it set to FirefoxHTML. - ${If} "$0" == "FirefoxHTML" + ; Since there is a persistent handler remove BasiliskHTML as the default + ; value from both HKCU and HKLM if it set to BasiliskHTML. + ${If} "$0" == "BasiliskHTML" DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" "" ${EndIf} - ${If} "$1" == "FirefoxHTML" + ${If} "$1" == "BasiliskHTML" DeleteRegValue HKLM "Software\Classes\${FILE_TYPE}" "" ${EndIf} - ${ElseIf} "$0" == "FirefoxHTML" - ; Since KHCU is set to FirefoxHTML remove FirefoxHTML as the default value + ${ElseIf} "$0" == "BasiliskHTML" + ; Since KHCU is set to BasiliskHTML remove BasiliskHTML as the default value ; from HKCU if HKLM is set to a value other than an empty string. ${If} "$1" != "" DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" "" @@ -686,17 +686,17 @@ ; Only set the file and protocol handlers if the existing one under HKCR is ; for this install location. - ${IsHandlerForInstallDir} "FirefoxHTML" $R9 + ${IsHandlerForInstallDir} "BasiliskHTML" $R9 ${If} "$R9" == "true" - ; An empty string is used for the 5th param because FirefoxHTML is not a + ; An empty string is used for the 5th param because BasiliskHTML is not a ; protocol handler. - ${AddDisabledDDEHandlerValues} "FirefoxHTML" "$2" "$8,1" \ + ${AddDisabledDDEHandlerValues} "BasiliskHTML" "$2" "$8,1" \ "${AppRegName} HTML Document" "" ${EndIf} - ${IsHandlerForInstallDir} "FirefoxURL" $R9 + ${IsHandlerForInstallDir} "BasiliskURL" $R9 ${If} "$R9" == "true" - ${AddDisabledDDEHandlerValues} "FirefoxURL" "$2" "$8,1" \ + ${AddDisabledDDEHandlerValues} "BasiliskURL" "$2" "$8,1" \ "${AppRegName} URL" "true" ${EndIf} @@ -780,8 +780,8 @@ ${RegCleanAppHandler} "chrome" ; Remove protocol handler registry keys added by the MS shim - DeleteRegKey HKLM "Software\Classes\Firefox.URL" - DeleteRegKey HKCU "Software\Classes\Firefox.URL" + DeleteRegKey HKLM "Software\Classes\Basilisk.URL" + DeleteRegKey HKCU "Software\Classes\Basilisk.URL" ; Delete gopher from Capabilities\URLAssociations if it is present. ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 @@ -792,10 +792,10 @@ DeleteRegValue HKLM "$0\Capabilities\URLAssociations" "gopher" ${EndUnless} - ; Delete gopher from the user's UrlAssociations if it points to FirefoxURL. + ; Delete gopher from the user's UrlAssociations if it points to BasiliskURL. StrCpy $0 "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\gopher" ReadRegStr $2 HKCU "$0\UserChoice" "Progid" - ${If} "$2" == "FirefoxURL" + ${If} "$2" == "BasiliskURL" DeleteRegKey HKCU "$0" ${EndIf} !macroend @@ -943,7 +943,7 @@ ${If} $AddTaskbarSC == "" ; No need to check the default on Win8 and later ${If} ${AtMostWin2008R2} - ; Check if the Firefox is the http handler for this user + ; Check if the Basilisk is the http handler for this user SetShellVarContext current ; Set SHCTX to the current user ${IsHandlerForInstallDir} "http" $R9 ${If} $TmpVal == "HKLM" diff --git a/browser/installer/windows/nsis/stub.nsi b/browser/installer/windows/nsis/stub.nsi index 5c19c10fe..999ffa154 100644 --- a/browser/installer/windows/nsis/stub.nsi +++ b/browser/installer/windows/nsis/stub.nsi @@ -35,11 +35,10 @@ Var LabelDownloading Var LabelInstalling Var LabelFreeSpace Var CheckboxSetAsDefault -Var CheckboxShortcutOnBar ; Used for Quicklaunch or Taskbar as appropriate -Var CheckboxShortcutInStartMenu -Var CheckboxShortcutOnDesktop +Var CheckboxShortcuts Var CheckboxSendPing Var CheckboxInstallMaintSvc +Var DroplistArch Var DirRequest Var ButtonBrowse Var LabelBlurb1 @@ -73,7 +72,6 @@ Var InstallStepSize Var InstallTotalSteps Var ProgressCompleted Var ProgressTotal -Var TmpVal Var ExitCode Var BasiliskLaunchCode @@ -108,9 +106,13 @@ Var DownloadRetryCount Var OpenedDownloadPage Var DownloadServerIP Var PostSigningData +Var PreviousInstallDir +Var PreviousInstallArch Var ControlHeightPX Var ControlRightPX +Var ControlTopAdjustment +Var OptionsItemWidthPX ; Uncomment the following to prevent pinging the metrics server when testing ; the stub installer @@ -218,6 +220,9 @@ Var ControlRightPX !define INVALID_HANDLE_VALUE -1 !endif +!define DefaultInstDir32bit "$PROGRAMFILES32\${BrandFullName}" +!define DefaultInstDir64bit "$PROGRAMFILES64\${BrandFullName}" + !include "nsDialogs.nsh" !include "LogicLib.nsh" !include "FileFunc.nsh" @@ -230,6 +235,9 @@ Var ControlRightPX !insertmacro LineFind !insertmacro StrFilter +!include "StrFunc.nsh" +${StrTok} + !include "locales.nsi" !include "branding.nsi" @@ -243,8 +251,10 @@ Var ControlRightPX ; set the update channel to beta. !ifdef OFFICIAL !ifdef BETA_UPDATE_CHANNEL -!undef URLStubDownload -!define URLStubDownload "http://download.mozilla.org/?os=win&lang=${AB_CD}&product=firefox-beta-latest" +!undef URLStubDownload32 +!undef URLStubDownload64 +!define URLStubDownload32 "http://download.mozilla.org/?os=win&lang=${AB_CD}&product=firefox-beta-latest" +!define URLStubDownload64 "http://download.mozilla.org/?os=win64&lang=${AB_CD}&product=firefox-beta-latest" !undef URLManualDownload !define URLManualDownload "https://www.mozilla.org/${AB_CD}/firefox/installer-help/?channel=beta&installer_lang=${AB_CD}" !undef Channel @@ -275,11 +285,6 @@ icon "setup.ico" XPStyle on BrandingText " " ChangeUI all "nsisui.exe" -!ifdef HAVE_64BIT_BUILD - InstallDir "$PROGRAMFILES64\${BrandFullName}\" -!else - InstallDir "$PROGRAMFILES32\${BrandFullName}\" -!endif !ifdef ${AB_CD}_rtl LoadLanguageFile "locale-rtl.nlf" @@ -289,15 +294,10 @@ ChangeUI all "nsisui.exe" !include "nsisstrings.nlf" -!if "${AB_CD}" == "en-US" - ; Custom strings for en-US. This is done here so they aren't translated. - !include oneoff_en-US.nsh -!else - !define INTRO_BLURB "$(INTRO_BLURB1)" - !define INSTALL_BLURB1 "$(INSTALL_BLURB1)" - !define INSTALL_BLURB2 "$(INSTALL_BLURB2)" - !define INSTALL_BLURB3 "$(INSTALL_BLURB3)" -!endif +!define INTRO_BLURB "$(INTRO_BLURB1)" +!define INSTALL_BLURB1 "$(INSTALL_BLURB1)" +!define INSTALL_BLURB2 "$(INSTALL_BLURB2)" +!define INSTALL_BLURB3 "$(INSTALL_BLURB3)" Caption "$(WIN_CAPTION)" @@ -321,10 +321,8 @@ Function .onInit ; SSE2 instruction set is available. System::Call "kernel32::IsProcessorFeaturePresent(i 10)i .R7" -!ifdef HAVE_64BIT_BUILD - ; Restrict x64 builds from being installed on x86 and pre Win7 - ${Unless} ${RunningX64} - ${OrUnless} ${AtLeastWin7} + ; Windows NT 6.0 (Vista/Server 2008) and lower are not supported. + ${Unless} ${AtLeastWin7} ${If} "$R7" == "0" strCpy $R7 "$(WARN_MIN_SUPPORTED_OSVER_CPU_MSG)" ${Else} @@ -335,51 +333,20 @@ Function .onInit Quit ${EndUnless} - SetRegView 64 -!else - StrCpy $R8 "0" - ${If} ${AtMostWin2000} - StrCpy $R8 "1" - ${EndIf} - - ${If} ${IsWinXP} - ${AndIf} ${AtMostServicePack} 1 - StrCpy $R8 "1" - ${EndIf} - - ${If} $R8 == "1" - ; XXX-rstrong - some systems failed the AtLeastWin2000 test that we - ; used to use for an unknown reason and likely fail the AtMostWin2000 - ; and possibly the IsWinXP test as well. To work around this also - ; check if the Windows NT registry Key exists and if it does if the - ; first char in CurrentVersion is equal to 3 (Windows NT 3.5 and - ; 3.5.1), 4 (Windows NT 4), or 5 (Windows 2000 and Windows XP). - StrCpy $R8 "" - ClearErrors - ReadRegStr $R8 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" - StrCpy $R8 "$R8" 1 - ${If} ${Errors} - ${OrIf} "$R8" == "3" - ${OrIf} "$R8" == "4" - ${OrIf} "$R8" == "5" - ${If} "$R7" == "0" - strCpy $R7 "$(WARN_MIN_SUPPORTED_OSVER_CPU_MSG)" - ${Else} - strCpy $R7 "$(WARN_MIN_SUPPORTED_OSVER_MSG)" - ${EndIf} - MessageBox MB_OKCANCEL|MB_ICONSTOP "$R7" IDCANCEL +2 - ExecShell "open" "${URLSystemRequirements}" - Quit - ${EndIf} - ${EndUnless} -!endif - + ; SSE2 CPU support ${If} "$R7" == "0" MessageBox MB_OKCANCEL|MB_ICONSTOP "$(WARN_MIN_SUPPORTED_CPU_MSG)" IDCANCEL +2 ExecShell "open" "${URLSystemRequirements}" Quit ${EndIf} + ; Bug 1338583: disable 64-bit as default until Flash issues are resolved + ;${If} ${RunningX64} + ; StrCpy $INSTDIR "${DefaultInstDir64bit}" + ;${Else} + StrCpy $INSTDIR "${DefaultInstDir32bit}" + ;${EndIf} + ; Require elevation if the user can elevate ${ElevateUAC} @@ -391,16 +358,25 @@ Function .onInit ${EndIf} !endif + ; If we have any existing installation, use its location as the default + ; path for this install, even if it's not the same architecture. + SetRegView 32 SetShellVarContext all ; Set SHCTX to HKLM ${GetSingleInstallPath} "Software\Mozilla\${BrandFullNameInternal}" $R9 ${If} "$R9" == "false" + ${AndIf} ${RunningX64} + SetRegView 64 + ${GetSingleInstallPath} "Software\Mozilla\${BrandFullNameInternal}" $R9 + ${EndIf} + + ${If} "$R9" == "false" SetShellVarContext current ; Set SHCTX to HKCU ${GetSingleInstallPath} "Software\Mozilla\${BrandFullNameInternal}" $R9 ${If} ${RunningX64} ; In HKCU there is no WOW64 redirection, which means we may have gotten - ; the path to a 32-bit install even though we're 64-bit, or vice-versa. + ; the path to a 32-bit install even though we're 64-bit. ; In that case, just use the default path instead of offering an upgrade. ; But only do that override if the existing install is in Program Files, ; because that's the only place we can be sure is specific @@ -408,20 +384,36 @@ Function .onInit ; The WordFind syntax below searches for the first occurence of the ; "delimiter" (the Program Files path) in the install path and returns ; anything that appears before that. If nothing appears before that, - ; then the install is under Program Files (32 or 64). -!ifdef HAVE_64BIT_BUILD + ; then the install is under Program Files. ${WordFind} $R9 $PROGRAMFILES32 "+1{" $0 -!else - ${WordFind} $R9 $PROGRAMFILES64 "+1{" $0 -!endif ${If} $0 == "" StrCpy $R9 "false" ${EndIf} ${EndIf} ${EndIf} + StrCpy $PreviousInstallDir "" + StrCpy $PreviousInstallArch "" ${If} "$R9" != "false" - StrCpy $INSTDIR "$R9" + ; Don't override the default install path with an existing installation + ; of a different architecture. + System::Call "*(i)p.r0" + StrCpy $1 "$R9\${FileMainEXE}" + System::Call "Kernel32::GetBinaryTypeW(w r1, p r0)i" + System::Call "*$0(i.r2)" + System::Free $0 + + ${If} $2 == "6" ; 6 == SCS_64BIT_BINARY + ${AndIf} ${RunningX64} + StrCpy $PreviousInstallDir "$R9" + StrCpy $PreviousInstallArch "64" + StrCpy $INSTDIR "$PreviousInstallDir" + ${ElseIf} $2 == "0" ; 0 == SCS_32BIT_BINARY + ${AndIfNot} ${RunningX64} + StrCpy $PreviousInstallDir "$R9" + StrCpy $PreviousInstallArch "32" + StrCpy $INSTDIR "$PreviousInstallDir" + ${EndIf} ${EndIf} ; Used to determine if the default installation directory was used. @@ -458,9 +450,7 @@ Function .onInit StrCpy $InitialInstallRequirementsCode "" StrCpy $IsDownloadFinished "" StrCpy $BasiliskLaunchCode "0" - StrCpy $CheckboxShortcutOnBar "1" - StrCpy $CheckboxShortcutInStartMenu "1" - StrCpy $CheckboxShortcutOnDesktop "1" + StrCpy $CheckboxShortcuts "1" StrCpy $CheckboxSendPing "1" !ifdef MOZ_MAINTENANCE_SERVICE StrCpy $CheckboxInstallMaintSvc "1" @@ -468,6 +458,12 @@ Function .onInit StrCpy $CheckboxInstallMaintSvc "0" !endif StrCpy $WasOptionsButtonClicked "0" + ; Bug 1338583: disable 64-bit as default until Flash issues are resolved + ;${If} ${RunningX64} + ;StrCpy $DroplistArch "$(VERSION_64BIT)" + ;${Else} + StrCpy $DroplistArch "$(VERSION_32BIT)" + ;${EndIf} StrCpy $0 "" !ifdef FONT_FILE1 @@ -611,11 +607,11 @@ Function SendPing ; completion of all phases. ${GetSecondsElapsed} "$EndInstallPhaseTickCount" "$EndFinishPhaseTickCount" $4 -!ifdef HAVE_64BIT_BUILD - StrCpy $R0 "1" -!else - StrCpy $R0 "0" -!endif + ${If} $DroplistArch == "$(VERSION_64BIT)" + StrCpy $R0 "1" + ${Else} + StrCpy $R0 "0" + ${EndIf} ${If} ${RunningX64} StrCpy $R1 "1" @@ -932,6 +928,17 @@ Function createOptions ${EndIf} StrCpy $ExistingTopDir "" + StrCpy $ControlTopAdjustment 0 + + ; Convert the options item width to pixels, so we can tell when a text string + ; exceeds this width and needs multiple lines. + StrCpy $2 "${OPTIONS_ITEM_WIDTH_DU}" -1 + IntOp $2 $2 - 14 ; subtract approximate width of a checkbox + System::Call "*(i r2,i,i,i) p .r3" + System::Call "user32::MapDialogRect(p $HWNDPARENT, p r3)" + System::Call "*$3(i .s,i,i,i)" + Pop $OptionsItemWidthPX + System::Free $3 nsDialogs::Create /NOUNLOAD 1018 Pop $Dialog @@ -939,54 +946,13 @@ Function createOptions ; background colors of the Dialog must also be hardcoded. SetCtlColors $Dialog ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} - ${NSD_CreateLabel} ${OPTIONS_ITEM_EDGE_DU} 18u ${OPTIONS_ITEM_WIDTH_DU} \ - 12u "$(CREATE_SHORTCUTS)" - Pop $0 - SetCtlColors $0 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} - SendMessage $0 ${WM_SETFONT} $FontNormal 0 - - ${If} ${AtLeastWin7} - StrCpy $0 "$(ADD_SC_TASKBAR)" - ${Else} - StrCpy $0 "$(ADD_SC_QUICKLAUNCHBAR)" - ${EndIf} - ${NSD_CreateCheckbox} ${OPTIONS_SUBITEM_EDGE_DU} 38u \ - ${OPTIONS_SUBITEM_WIDTH_DU} 12u "$0" - Pop $CheckboxShortcutOnBar - ; The uxtheme must be disabled on checkboxes in order to override the system - ; font color. - System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcutOnBar, w " ", w " ")' - SetCtlColors $CheckboxShortcutOnBar ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} - SendMessage $CheckboxShortcutOnBar ${WM_SETFONT} $FontNormal 0 - ${NSD_Check} $CheckboxShortcutOnBar - - ${NSD_CreateCheckbox} ${OPTIONS_SUBITEM_EDGE_DU} 54u ${OPTIONS_SUBITEM_WIDTH_DU} \ - 12u "$(ADD_CheckboxShortcutInStartMenu)" - Pop $CheckboxShortcutInStartMenu - ; The uxtheme must be disabled on checkboxes in order to override the system - ; font color. - System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcutInStartMenu, w " ", w " ")' - SetCtlColors $CheckboxShortcutInStartMenu ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} - SendMessage $CheckboxShortcutInStartMenu ${WM_SETFONT} $FontNormal 0 - ${NSD_Check} $CheckboxShortcutInStartMenu - - ${NSD_CreateCheckbox} ${OPTIONS_SUBITEM_EDGE_DU} 70u ${OPTIONS_SUBITEM_WIDTH_DU} \ - 12u "$(ADD_CheckboxShortcutOnDesktop)" - Pop $CheckboxShortcutOnDesktop - ; The uxtheme must be disabled on checkboxes in order to override the system - ; font color. - System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcutOnDesktop, w " ", w " ")' - SetCtlColors $CheckboxShortcutOnDesktop ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} - SendMessage $CheckboxShortcutOnDesktop ${WM_SETFONT} $FontNormal 0 - ${NSD_Check} $CheckboxShortcutOnDesktop - - ${NSD_CreateLabel} ${OPTIONS_ITEM_EDGE_DU} 100u ${OPTIONS_ITEM_WIDTH_DU} \ + ${NSD_CreateLabel} ${OPTIONS_ITEM_EDGE_DU} 25u ${OPTIONS_ITEM_WIDTH_DU} \ 12u "$(DEST_FOLDER)" Pop $0 SetCtlColors $0 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} SendMessage $0 ${WM_SETFONT} $FontNormal 0 - ${NSD_CreateDirRequest} ${OPTIONS_SUBITEM_EDGE_DU} 116u 159u 14u "$INSTDIR" + ${NSD_CreateDirRequest} ${OPTIONS_SUBITEM_EDGE_DU} 41u 159u 14u "$INSTDIR" Pop $DirRequest SetCtlColors $DirRequest ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} SendMessage $DirRequest ${WM_SETFONT} $FontNormal 0 @@ -1002,7 +968,7 @@ Function createOptions ${NSD_AddExStyle} $DirRequest ${WS_EX_LTRREADING}|${WS_EX_LEFT} !endif - ${NSD_CreateBrowseButton} 280u 116u 50u 14u "$(BROWSE_BUTTON)" + ${NSD_CreateBrowseButton} 280u 41u 50u 14u "$(BROWSE_BUTTON)" Pop $ButtonBrowse SetCtlColors $ButtonBrowse "" ${COMMON_BKGRD_COLOR} ${NSD_OnClick} $ButtonBrowse OnClick_ButtonBrowse @@ -1023,13 +989,13 @@ Function createOptions IntOp $0 $0 + 8 ; Add padding to the control's width ; Make both controls the same width as the widest control - ${NSD_CreateLabelCenter} ${OPTIONS_SUBITEM_EDGE_DU} 134u $0 $ControlHeightPX "$(SPACE_REQUIRED)" + ${NSD_CreateLabelCenter} ${OPTIONS_SUBITEM_EDGE_DU} 59u $0 $ControlHeightPX "$(SPACE_REQUIRED)" Pop $5 SetCtlColors $5 ${COMMON_TEXT_COLOR_FADED} ${COMMON_BKGRD_COLOR} SendMessage $5 ${WM_SETFONT} $FontItalic 0 IntOp $2 $2 + 8 ; Add padding to the control's width - ${NSD_CreateLabelCenter} ${OPTIONS_SUBITEM_EDGE_DU} 145u $2 $ControlHeightPX "$(SPACE_AVAILABLE)" + ${NSD_CreateLabelCenter} ${OPTIONS_SUBITEM_EDGE_DU} 70u $2 $ControlHeightPX "$(SPACE_AVAILABLE)" Pop $6 SetCtlColors $6 ${COMMON_TEXT_COLOR_FADED} ${COMMON_BKGRD_COLOR} SendMessage $6 ${WM_SETFONT} $FontItalic 0 @@ -1043,7 +1009,7 @@ Function createOptions IntOp $ControlRightPX $ControlRightPX + 6 - ${NSD_CreateLabel} $ControlRightPX 134u 100% $ControlHeightPX \ + ${NSD_CreateLabel} $ControlRightPX 59u 100% $ControlHeightPX \ "${APPROXIMATE_REQUIRED_SPACE_MB} $(MEGA)$(BYTE)" Pop $7 SetCtlColors $7 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} @@ -1051,15 +1017,54 @@ Function createOptions ; Create the free space label with an empty string and update it by calling ; UpdateFreeSpaceLabel - ${NSD_CreateLabel} $ControlRightPX 145u 100% $ControlHeightPX " " + ${NSD_CreateLabel} $ControlRightPX 70u 100% $ControlHeightPX " " Pop $LabelFreeSpace SetCtlColors $LabelFreeSpace ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} SendMessage $LabelFreeSpace ${WM_SETFONT} $FontNormal 0 Call UpdateFreeSpaceLabel - ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} 168u ${OPTIONS_SUBITEM_WIDTH_DU} \ - 12u "$(SEND_PING)" + ${If} ${AtLeastWin7} + StrCpy $0 "$(ADD_SC_DESKTOP_TASKBAR)" + ${Else} + StrCpy $0 "$(ADD_SC_DESKTOP_QUICKLAUNCHBAR)" + ${EndIf} + + ; In some locales, this string may be too long to fit on one line. + ; In that case, we'll need to give the control two lines worth of height. + StrCpy $1 12 ; single line height + ${GetTextExtent} $0 $FontNormal $R1 $R2 + ${If} $R1 > $OptionsItemWidthPX + ; Add a second line to the control height. + IntOp $1 $1 + 12 + ; The rest of the controls will have to be lower to account for this label + ; needing two lines worth of height. + IntOp $ControlTopAdjustment $ControlTopAdjustment + 12 + ${EndIf} + ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} 100u \ + ${OPTIONS_ITEM_WIDTH_DU} "$1u" "$0" + Pop $CheckboxShortcuts + ; The uxtheme must be disabled on checkboxes in order to override the system + ; font color. + System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcuts, w " ", w " ")' + SetCtlColors $CheckboxShortcuts ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} + SendMessage $CheckboxShortcuts ${WM_SETFONT} $FontNormal 0 + ${NSD_Check} $CheckboxShortcuts + + IntOp $0 116 + $ControlTopAdjustment + ; In some locales, this string may be too long to fit on one line. + ; In that case, we'll need to give the control two lines worth of height. + StrCpy $1 12 ; single line height + ${GetTextExtent} "$(SEND_PING)" $FontNormal $R1 $R2 + ${If} $R1 > $OptionsItemWidthPX + ; Add a second line to the control height. + IntOp $1 $1 + 12 + ; The rest of the controls will have to be lower to account for this label + ; needing two lines worth of height. + IntOp $ControlTopAdjustment $ControlTopAdjustment + 12 + ${EndIf} + ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} "$0u" ${OPTIONS_ITEM_WIDTH_DU} \ + "$1u" "$(SEND_PING)" Pop $CheckboxSendPing ; The uxtheme must be disabled on checkboxes in order to override the system ; font color. @@ -1069,6 +1074,7 @@ Function createOptions ${NSD_Check} $CheckboxSendPing !ifdef MOZ_MAINTENANCE_SERVICE + StrCpy $CheckboxInstallMaintSvc "0" ; We can only install the maintenance service if the user is an admin. Call IsUserAdmin Pop $0 @@ -1081,31 +1087,105 @@ Function createOptions StrCpy $0 "false" ${EndIf} - ; Only show the maintenance service checkbox if we have write access to HKLM - ClearErrors - WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" \ - "Write Test" - ${If} ${Errors} - ${OrIf} $0 != "true" - StrCpy $CheckboxInstallMaintSvc "0" - ${Else} + ${If} $0 == "true" + ; Only show the maintenance service checkbox if we have write access to HKLM DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" - ; Read the registry instead of using ServicesHelper::IsInstalled so the - ; plugin isn't included in the stub installer to lessen its size. ClearErrors - ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\services\MozillaMaintenance" "ImagePath" - ${If} ${Errors} - ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} 184u ${OPTIONS_ITEM_WIDTH_DU} \ - 12u "$(INSTALL_MAINT_SERVICE)" - Pop $CheckboxInstallMaintSvc - System::Call 'uxtheme::SetWindowTheme(i $CheckboxInstallMaintSvc, w " ", w " ")' - SetCtlColors $CheckboxInstallMaintSvc ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} - SendMessage $CheckboxInstallMaintSvc ${WM_SETFONT} $FontNormal 0 - ${NSD_Check} $CheckboxInstallMaintSvc + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" \ + "Write Test" + ${IfNot} ${Errors} + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + ; Read the registry instead of using ServicesHelper::IsInstalled so the + ; plugin isn't included in the stub installer to lessen its size. + ClearErrors + ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\services\MozillaMaintenance" "ImagePath" + ${If} ${Errors} + IntOp $0 132 + $ControlTopAdjustment + ; In some locales, this string may be too long to fit on one line. + ; In that case, we'll need to give the control two lines worth of height. + StrCpy $1 12 ; single line height + ${GetTextExtent} "$(INSTALL_MAINT_SERVICE)" $FontNormal $R1 $R2 + ${If} $R1 > $OptionsItemWidthPX + ; Add a second line to the control height. + IntOp $1 $1 + 12 + ; The rest of the controls will have to be lower to account for this label + ; needing two lines worth of height. + IntOp $ControlTopAdjustment $ControlTopAdjustment + 12 + ${EndIf} + ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} "$0u" ${OPTIONS_ITEM_WIDTH_DU} \ + "$1u" "$(INSTALL_MAINT_SERVICE)" + Pop $CheckboxInstallMaintSvc + System::Call 'uxtheme::SetWindowTheme(i $CheckboxInstallMaintSvc, w " ", w " ")' + SetCtlColors $CheckboxInstallMaintSvc ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} + SendMessage $CheckboxInstallMaintSvc ${WM_SETFONT} $FontNormal 0 + ${NSD_Check} $CheckboxInstallMaintSvc + ; Since we're adding in an optional control, remember the lower the ones + ; that come after it. + IntOp $ControlTopAdjustment 20 + $ControlTopAdjustment + ${EndIf} ${EndIf} ${EndIf} !endif + ${If} ${RunningX64} + ; Get the exact pixel width we're going to need for this label. + ; The label string has a keyboard accelerator, which is an '&' that's in + ; the string but is not rendered, and GetTextExtent doesn't account for + ; those, so remove them first. Also handle any escaped &'s ("&&"). + StrCpy $R0 "$(ARCH_DROPLIST_LABEL)" + StrCpy $R1 "" + ${Do} + ${StrTok} $R2 $R0 "&" 0 0 + StrCpy $R1 "$R1$R2" + StrLen $R3 $R2 + IntOp $R3 $R3 + 1 + StrCpy $R0 $R0 "" $R3 + StrCpy $R4 $R0 1 + ${If} $R4 == "&" + StrCpy $R1 "$R1&" + StrCpy $R0 $R0 "" 1 + ${EndIf} + ${LoopUntil} $R0 == "" + + ${GetTextExtent} $R1 $FontNormal $R0 $R1 + IntOp $0 134 + $ControlTopAdjustment + ${NSD_CreateLabel} ${OPTIONS_ITEM_EDGE_DU} "$0u" $R0 $R1 "$(ARCH_DROPLIST_LABEL)" + Pop $0 + SetCtlColors $0 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} + SendMessage $0 ${WM_SETFONT} $FontNormal 0 + + ; Set the dropdown list size to the same as the larger of the two options. + ${GetTextExtent} "$(VERSION_32BIT)" $FontNormal $R0 $R1 + ${GetTextExtent} "$(VERSION_64BIT)" $FontNormal $R2 $R3 + ${If} $R0 < $R2 + StrCpy $R0 $R2 + ${EndIf} + ${If} $R1 < $R3 + StrCpy $R3 $R1 + ${EndIf} + ; Add enough width for the dropdown button. How wide the button is depends + ; on he system display scaling setting, which we cannot easily determine, + ; so just use a value that works fine for a setting of 200% and adds a + ; little too much padding for settings below that. + IntOp $R0 $R0 + 56 + + ; Put the droplist right after the label, with some padding. + ${GetDlgItemEndPX} $0 $ControlRightPX + IntOp $ControlRightPX $ControlRightPX + 4 + IntOp $0 132 + $ControlTopAdjustment + ${NSD_CreateDropList} $ControlRightPX "$0u" $R0 $R3 "" + Pop $DroplistArch + ${NSD_CB_AddString} $DroplistArch "$(VERSION_32BIT)" + ${NSD_CB_AddString} $DroplistArch "$(VERSION_64BIT)" + ${NSD_OnChange} $DroplistArch OnChange_DroplistArch + ; The uxtheme must be disabled in order to override the system colors. + System::Call 'uxtheme::SetWindowTheme(i $DroplistArch, w " ", w " ")' + SetCtlColors $DroplistArch ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR} + SendMessage $DroplistArch ${WM_SETFONT} $FontNormal 0 + ; Bug 1338583: disable 64-bit as default until Flash issues are resolved + ${NSD_CB_SelectString} $DroplistArch "$(VERSION_32BIT)" + ${EndIf} + GetDlgItem $0 $HWNDPARENT 1 ; Install button ${If} ${FileExists} "$INSTDIR\${FileMainEXE}" SendMessage $0 ${WM_SETTEXT} 0 "STR:$(UPGRADE_BUTTON)" @@ -1173,9 +1253,8 @@ Function leaveOptions IntOp $OptionsPhaseSeconds $OptionsPhaseSeconds + 1 ${EndIf} - ${NSD_GetState} $CheckboxShortcutOnBar $CheckboxShortcutOnBar - ${NSD_GetState} $CheckboxShortcutInStartMenu $CheckboxShortcutInStartMenu - ${NSD_GetState} $CheckboxShortcutOnDesktop $CheckboxShortcutOnDesktop + ${NSD_GetState} $CheckboxShortcuts $CheckboxShortcuts + ${NSD_GetText} $DroplistArch $DroplistArch ${NSD_GetState} $CheckboxSendPing $CheckboxSendPing !ifdef MOZ_MAINTENANCE_SERVICE ${NSD_GetState} $CheckboxInstallMaintSvc $CheckboxInstallMaintSvc @@ -1370,8 +1449,15 @@ FunctionEnd Function StartDownload ${NSD_KillTimer} StartDownload - InetBgDL::Get "${URLStubDownload}${URLStubDownloadAppend}" "$PLUGINSDIR\download.exe" \ - /CONNECTTIMEOUT 120 /RECEIVETIMEOUT 120 /END + ${If} $DroplistArch == "$(VERSION_64BIT)" + InetBgDL::Get "${URLStubDownload64}${URLStubDownloadAppend}" \ + "$PLUGINSDIR\download.exe" \ + /CONNECTTIMEOUT 120 /RECEIVETIMEOUT 120 /END + ${Else} + InetBgDL::Get "${URLStubDownload32}${URLStubDownloadAppend}" \ + "$PLUGINSDIR\download.exe" \ + /CONNECTTIMEOUT 120 /RECEIVETIMEOUT 120 /END + ${EndIf} StrCpy $4 "" ${NSD_CreateTimer} OnDownload ${DownloadIntervalMS} ${If} ${FileExists} "$INSTDIR\${TO_BE_DELETED}" @@ -1592,23 +1678,18 @@ Function OnDownload ; Don't create the QuickLaunch or Taskbar shortcut from the launched installer WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "QuickLaunchShortcut" "false" - ; Either avoid or force adding a taskbar pin based on the checkbox value: - ${If} $CheckboxShortcutOnBar == 0 + ; Always create a start menu shortcut, so the user always has some way + ; to access the application. + WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "StartMenuShortcuts" "true" + + ; Either avoid or force adding a taskbar pin and desktop shortcut + ; based on the checkbox value. + ${If} $CheckboxShortcuts == 0 WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "TaskbarShortcut" "false" + WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "DesktopShortcut" "false" ${Else} WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "TaskbarShortcut" "true" - ${EndIf} - - ${If} $CheckboxShortcutOnDesktop == 1 WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "DesktopShortcut" "true" - ${Else} - WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "DesktopShortcut" "false" - ${EndIf} - - ${If} $CheckboxShortcutInStartMenu == 1 - WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "StartMenuShortcuts" "true" - ${Else} - WriteINIStr "$PLUGINSDIR\${CONFIG_INI}" "Install" "StartMenuShortcuts" "false" ${EndIf} !ifdef MOZ_MAINTENANCE_SERVICE @@ -1785,7 +1866,7 @@ Function FinishInstall ${EndIf} ${EndIf} - ${If} $CheckboxShortcutOnBar == 1 + ${If} $CheckboxShortcuts == 1 ${If} ${AtMostWinVista} ClearErrors ${GetParameters} $0 @@ -1921,6 +2002,30 @@ Function OnClick_ButtonBrowse ${EndIf} FunctionEnd +Function OnChange_DroplistArch + ; When the user changes the 32/64-bit setting, change the default install path + ; to use the correct version of Program Files. But only do that if the user + ; hasn't selected their own install path yet, and if we didn't select our + ; default as the location of an existing install. + ${If} $INSTDIR == $InitialInstallDir + ${NSD_GetText} $DroplistArch $0 + ${If} $0 == "$(VERSION_32BIT)" + ${If} $PreviousInstallArch == 32 + StrCpy $InitialInstallDir $PreviousInstallDir + ${Else} + StrCpy $InitialInstallDir "${DefaultInstDir32bit}" + ${EndIf} + ${Else} + ${If} $PreviousInstallArch == 64 + StrCpy $InitialInstallDir $PreviousInstallDir + ${Else} + StrCpy $InitialInstallDir "${DefaultInstDir64bit}" + ${EndIf} + ${EndIf} + ${NSD_SetText} $DirRequest $InitialInstallDir + ${EndIf} +FunctionEnd + Function CheckSpace ${If} "$ExistingTopDir" != "" StrLen $0 "$ExistingTopDir" @@ -1985,6 +2090,7 @@ Function CanWrite GetTempFileName $2 "$0" Delete $2 CreateDirectory "$2" + ${If} ${FileExists} "$2" ${If} ${FileExists} "$INSTDIR" GetTempFileName $3 "$INSTDIR" diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi index 687bcd6eb..87f4d838a 100755 --- a/browser/installer/windows/nsis/uninstaller.nsi +++ b/browser/installer/windows/nsis/uninstaller.nsi @@ -351,7 +351,7 @@ Section "Uninstall" StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe" DeleteRegKey HKLM "$0" DeleteRegKey HKCU "$0" - StrCpy $0 "Software\Classes\MIME\Database\Content Type\application/x-xpinstall;app=firefox" + StrCpy $0 "Software\Classes\MIME\Database\Content Type\application/x-xpinstall;app=Basilisk" DeleteRegKey HKLM "$0" DeleteRegKey HKCU "$0" ${Else} @@ -419,8 +419,8 @@ Section "Uninstall" ; Remove the installation directory if it is empty RmDir "$INSTDIR" - ; If firefox.exe was successfully deleted yet we still need to restart to - ; remove other files create a dummy firefox.exe.moz-delete to prevent the + ; If Basilisk.exe was successfully deleted yet we still need to restart to + ; remove other files create a dummy Basilisk.exe.moz-delete to prevent the ; installer from allowing an install without restart when it is required ; to complete an uninstall. ${If} ${RebootFlag} |