From 4110bb0a9b36b6a0f20c68b6be0635cc32ac8edd Mon Sep 17 00:00:00 2001 From: Bogdan Tara Date: Tue, 23 Oct 2018 19:18:10 +0300 Subject: [PATCH] Backed out 2 changesets (bug 1453613) for Windows MinGW build bustages CLOSED TREE Backed out changeset 77fabbff45e0 (bug 1453613) Backed out changeset 1df447ff4c77 (bug 1453613) --- browser/installer/windows/nsis/defines.nsi.in | 6 - browser/installer/windows/nsis/installer.nsi | 238 +----------------- browser/installer/windows/nsis/stub.nsi | 2 +- other-licenses/nsis/Plugins/nsJSON.dll | Bin 0 -> 18944 bytes .../mozapps/installer/windows/nsis/common.nsh | 118 --------- 5 files changed, 2 insertions(+), 362 deletions(-) diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in index 178e936face6..d343cb5212d8 100644 --- a/browser/installer/windows/nsis/defines.nsi.in +++ b/browser/installer/windows/nsis/defines.nsi.in @@ -139,9 +139,3 @@ VIAddVersionKey "ProductVersion" "${AppVersion}" !define PROGRESS_BAR_TOP_DU 112u !define APPNAME_BMP_EDGE_DU 19u !define APPNAME_BMP_TOP_DU 12u - -# Constants for parts of the telemetry submission URL -!define TELEMETRY_BASE_URL https://incoming.telemetry.mozilla.org/submit -!define TELEMETRY_NAMESPACE firefox-installer -!define TELEMETRY_INSTALL_PING_VERSION 1 -!define TELEMETRY_INSTALL_PING_DOCTYPE install diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi index 495736bdbd18..1c72b541b424 100755 --- a/browser/installer/windows/nsis/installer.nsi +++ b/browser/installer/windows/nsis/installer.nsi @@ -6,7 +6,6 @@ # AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in # ApplicationID http://nsis.sourceforge.net/ApplicationID_plug-in # CityHash http://dxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash -# nsJSON http://nsis.sourceforge.net/NsJSON_plug-in # ShellLink http://nsis.sourceforge.net/ShellLink_plug-in # UAC http://nsis.sourceforge.net/UAC_plug-in # ServicesHelper Mozilla specific plugin that is located in /other-licenses/nsis @@ -40,18 +39,6 @@ Var ExtensionRecommender Var PageName Var PreventRebootRequired -; Telemetry ping fields -Var SetAsDefault -Var HadOldInstall -Var DefaultInstDir -Var IntroPhaseStart -Var OptionsPhaseStart -Var InstallPhaseStart -Var FinishPhaseStart -Var FinishPhaseEnd -Var InstallResult -Var LaunchedNewApp - ; By defining NO_STARTMENU_DIR an installer that doesn't provide an option for ; an application's Start Menu PROGRAMS directory and doesn't define the ; StartMenuDir variable can use the common InstallOnInitCommon macro. @@ -97,7 +84,6 @@ VIAddVersionKey "OriginalFilename" "setup.exe" !insertmacro CleanUpdateDirectories !insertmacro CopyFilesFromDir !insertmacro CreateRegKey -!insertmacro GetFirstInstallPath !insertmacro GetLongPath !insertmacro GetPathFromString !insertmacro GetParent @@ -202,7 +188,6 @@ Page custom preSummary leaveSummary !define MUI_FINISHPAGE_RUN_FUNCTION LaunchApp !define MUI_FINISHPAGE_RUN_TEXT $(LAUNCH_TEXT) !define MUI_PAGE_CUSTOMFUNCTION_PRE preFinish -!define MUI_PAGE_CUSTOMFUNCTION_LEAVE postFinish !insertmacro MUI_PAGE_FINISH ; Use the default dialog for IDD_VERIFY for a simple Banner @@ -213,9 +198,6 @@ ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe" ; Cleanup operations to perform at the start of the installation. Section "-InstallStartCleanup" - System::Call "kernel32::GetTickCount()l .s" - Pop $InstallPhaseStart - SetDetailsPrint both DetailPrint $(STATUS_CLEANUP) SetDetailsPrint none @@ -675,7 +657,7 @@ Section "-InstallEndCleanup" ClearErrors ${MUI_INSTALLOPTIONS_READ} $0 "summary.ini" "Field 4" "State" ${If} "$0" == "1" - StrCpy $SetAsDefault true + ; NB: this code is duplicated in stub.nsi. Please keep in sync. ; For data migration in the app, we want to know what the default browser ; value was before we changed it. To do so, we read it here and store it ; in our own registry key. @@ -710,7 +692,6 @@ Section "-InstallEndCleanup" UAC::ExecCodeSegment $0 ${EndIf} ${ElseIfNot} ${Errors} - StrCpy $SetAsDefault false ${LogHeader} "Writing default-browser opt-out" ClearErrors WriteRegStr HKCU "Software\Mozilla\Firefox" "DefaultBrowserOptOut" "True" @@ -769,14 +750,6 @@ Section "-InstallEndCleanup" ${EndUnless} ${EndIf} ${EndIf} - - StrCpy $InstallResult "success" - - ; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't - ; invoked when we're running silently. - ${If} ${Silent} - Call SendPing - ${EndIf} SectionEnd ################################################################################ @@ -925,8 +898,6 @@ Function LaunchApp GetFunctionAddress $0 LaunchAppFromElevatedProcess UAC::ExecCodeSegment $0 ${EndIf} - - StrCpy $LaunchedNewApp true FunctionEnd Function LaunchAppFromElevatedProcess @@ -936,170 +907,6 @@ Function LaunchAppFromElevatedProcess ${ExecAndWaitForInputIdle} "$\"$INSTDIR\${FileMainEXE}$\"" FunctionEnd -Function SendPing - ${GetParameters} $0 - ${GetOptions} $0 "/LaunchedFromStub" $0 - ${IfNot} ${Errors} - Return - ${EndIf} - - ; Create a GUID to use as the unique document ID. - System::Call "rpcrt4::UuidCreate(g . r0)i" - ; StringFromGUID2 (which is what System::Call uses internally to stringify - ; GUIDs) includes braces in its output, and we don't want those. - StrCpy $0 $0 -1 1 - - ; Configure the HTTP request for the ping - nsJSON::Set /tree ping /value "{}" - nsJSON::Set /tree ping "Url" /value \ - '"${TELEMETRY_BASE_URL}/${TELEMETRY_NAMESPACE}/${TELEMETRY_INSTALL_PING_DOCTYPE}/${TELEMETRY_INSTALL_PING_VERSION}/$0"' - nsJSON::Set /tree ping "Verb" /value '"POST"' - nsJSON::Set /tree ping "DataType" /value '"JSON"' - nsJSON::Set /tree ping "AccessType" /value '"PreConfig"' - - ; Fill in the ping payload - nsJSON::Set /tree ping "Data" /value "{}" - nsJSON::Set /tree ping "Data" "installer_type" /value '"full"' - nsJSON::Set /tree ping "Data" "installer_version" /value '"${AppVersion}"' - nsJSON::Set /tree ping "Data" "build_channel" /value '"${Channel}"' - nsJSON::Set /tree ping "Data" "update_channel" /value '"${UpdateChannel}"' - nsJSON::Set /tree ping "Data" "locale" /value '"${AB_CD}"' - - ReadINIStr $0 "$INSTDIR\application.ini" "App" "Version" - nsJSON::Set /tree ping "Data" "version" /value '"$0"' - ReadINIStr $0 "$INSTDIR\application.ini" "App" "BuildID" - nsJSON::Set /tree ping "Data" "build_id" /value '"$0"' - - ${GetParameters} $0 - ${GetOptions} $0 "/LaunchedFromMSI" $0 - ${IfNot} ${Errors} - nsJSON::Set /tree ping "Data" "from_msi" /value true - ${EndIf} - - !ifdef HAVE_64BIT_BUILD - nsJSON::Set /tree ping "Data" "64bit_build" /value true - !else - nsJSON::Set /tree ping "Data" "64bit_build" /value false - !endif - - ${If} ${RunningX64} - nsJSON::Set /tree ping "Data" "64bit_os" /value true - ${Else} - nsJSON::Set /tree ping "Data" "64bit_os" /value false - ${EndIf} - - ; Though these values are sometimes incorrect due to bug 444664 it happens - ; so rarely it isn't worth working around it by reading the registry values. - ${WinVerGetMajor} $0 - ${WinVerGetMinor} $1 - ${WinVerGetBuild} $2 - nsJSON::Set /tree ping "Data" "os_version" /value '"$0.$1.$2"' - ${If} ${IsServerOS} - nsJSON::Set /tree ping "Data" "server_os" /value true - ${Else} - nsJSON::Set /tree ping "Data" "server_os" /value false - ${EndIf} - - ClearErrors - WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" \ - "Write Test" - ${If} ${Errors} - nsJSON::Set /tree ping "Data" "admin_user" /value false - ${Else} - DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" - nsJSON::Set /tree ping "Data" "admin_user" /value true - ${EndIf} - - ${If} $DefaultInstDir == $INSTDIR - nsJSON::Set /tree ping "Data" "default_path" /value true - ${Else} - nsJSON::Set /tree ping "Data" "default_path" /value false - ${EndIf} - - nsJSON::Set /tree ping "Data" "set_default" /value "$SetAsDefault" - - nsJSON::Set /tree ping "Data" "new_default" /value false - nsJSON::Set /tree ping "Data" "old_default" /value false - - AppAssocReg::QueryCurrentDefault "http" "protocol" "effective" - Pop $0 - ReadRegStr $0 HKCR "$0\shell\open\command" "" - ${If} $0 != "" - ${GetPathFromString} "$0" $0 - ${GetParent} "$0" $1 - ${GetLongPath} "$1" $1 - ${If} $1 == $INSTDIR - nsJSON::Set /tree ping "Data" "new_default" /value true - ${Else} - StrCpy $0 "$0" "" -11 # 11 == length of "firefox.exe" - ${If} "$0" == "${FileMainEXE}" - nsJSON::Set /tree ping "Data" "old_default" /value true - ${EndIf} - ${EndIf} - ${EndIf} - - nsJSON::Set /tree ping "Data" "had_old_install" /value "$HadOldInstall" - - ${If} ${Silent} - ; In silent mode, only the install phase is executed, and the GUI events - ; that initialize most of the phase times are never called; only - ; $InstallPhaseStart and $FinishPhaseStart have usable values. - ${GetSecondsElapsed} $InstallPhaseStart $FinishPhaseStart $0 - - nsJSON::Set /tree ping "Data" "intro_time" /value 0 - nsJSON::Set /tree ping "Data" "options_time" /value 0 - nsJSON::Set /tree ping "Data" "install_time" /value "$0" - nsJSON::Set /tree ping "Data" "finish_time" /value 0 - ${Else} - ; In GUI mode, all we can be certain of is that the intro phase has started; - ; the user could have canceled at any time and phases after that won't - ; have run at all. So we have to be prepared for anything after - ; $IntroPhaseStart to be uninitialized. For anything that isn't filled in - ; yet we'll use the current tick count. That means that any phases that - ; weren't entered at all will get 0 for their times because the start and - ; end tick counts will be the same. - System::Call "kernel32::GetTickCount()l .s" - Pop $0 - - ${If} $OptionsPhaseStart == 0 - StrCpy $OptionsPhaseStart $0 - ${EndIf} - ${GetSecondsElapsed} $IntroPhaseStart $OptionsPhaseStart $1 - nsJSON::Set /tree ping "Data" "intro_time" /value "$1" - - ${If} $InstallPhaseStart == 0 - StrCpy $InstallPhaseStart $0 - ${EndIf} - ${GetSecondsElapsed} $OptionsPhaseStart $InstallPhaseStart $1 - nsJSON::Set /tree ping "Data" "options_time" /value "$1" - - ${If} $FinishPhaseStart == 0 - StrCpy $FinishPhaseStart $0 - ${EndIf} - ${GetSecondsElapsed} $InstallPhaseStart $FinishPhaseStart $1 - nsJSON::Set /tree ping "Data" "install_time" /value "$1" - - ${If} $FinishPhaseEnd == 0 - StrCpy $FinishPhaseEnd $0 - ${EndIf} - ${GetSecondsElapsed} $FinishPhaseStart $FinishPhaseEnd $1 - nsJSON::Set /tree ping "Data" "finish_time" /value "$1" - ${EndIf} - - nsJSON::Set /tree ping "Data" "new_launched" /value "$LaunchedNewApp" - - nsJSON::Set /tree ping "Data" "succeeded" /value false - ${If} $InstallResult == "cancel" - nsJSON::Set /tree ping "Data" "user_cancelled" /value true - ${ElseIf} $InstallResult == "success" - nsJSON::Set /tree ping "Data" "succeeded" /value true - ${EndIf} - - ; Send the ping request. This call will block until a response is received, - ; but we shouldn't have any windows still open, so we won't jank anything. - nsJSON::Set /http ping -FunctionEnd - ################################################################################ # Language @@ -1126,15 +933,9 @@ Function preWelcome Delete "$PLUGINSDIR\modern-wizard.bmp" CopyFiles /SILENT "$EXEDIR\core\distribution\modern-wizard.bmp" "$PLUGINSDIR\modern-wizard.bmp" ${EndIf} - - System::Call "kernel32::GetTickCount()l .s" - Pop $IntroPhaseStart FunctionEnd Function preOptions - System::Call "kernel32::GetTickCount()l .s" - Pop $OptionsPhaseStart - StrCpy $PageName "Options" ${If} ${FileExists} "$EXEDIR\core\distribution\modern-header.bmp" ${AndIf} $hHeaderBitmap == "" @@ -1168,8 +969,6 @@ FunctionEnd Function preDirectory StrCpy $PageName "Directory" ${PreDirectoryCommon} - - StrCpy $DefaultInstDir $INSTDIR FunctionEnd Function leaveDirectory @@ -1483,19 +1282,11 @@ FunctionEnd ; When we add an optional action to the finish page the cancel button is ; enabled. This disables it and leaves the finish button as the only choice. Function preFinish - System::Call "kernel32::GetTickCount()l .s" - Pop $FinishPhaseStart - StrCpy $PageName "" ${EndInstallLog} "${BrandFullName}" !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "cancelenabled" "0" FunctionEnd -Function postFinish - System::Call "kernel32::GetTickCount()l .s" - Pop $FinishPhaseEnd -FunctionEnd - ################################################################################ # Initialization Functions @@ -1504,18 +1295,6 @@ Function .onInit ; This only effects LoadLibrary calls and not implicitly loaded DLLs. System::Call 'kernel32::SetDllDirectoryW(w "")' - ; Initialize the variables used for telemetry - StrCpy $SetAsDefault true - StrCpy $HadOldInstall false - StrCpy $DefaultInstDir $INSTDIR - StrCpy $IntroPhaseStart 0 - StrCpy $OptionsPhaseStart 0 - StrCpy $InstallPhaseStart 0 - StrCpy $FinishPhaseStart 0 - StrCpy $FinishPhaseEnd 0 - StrCpy $InstallResult "cancel" - StrCpy $LaunchedNewApp false - StrCpy $PageName "" StrCpy $LANGUAGE 0 ${SetBrandNameVars} "$EXEDIR\core\distribution\setup.ini" @@ -1553,20 +1332,6 @@ Function .onInit SetRegView 64 !endif - SetShellVarContext all - ${GetFirstInstallPath} "Software\Mozilla\${BrandFullNameInternal}" $0 - ${If} "$0" == "false" - SetShellVarContext current - ${GetFirstInstallPath} "Software\Mozilla\${BrandFullNameInternal}" $0 - ${If} "$0" == "false" - StrCpy $HadOldInstall false - ${Else} - StrCpy $HadOldInstall true - ${EndIf} - ${Else} - StrCpy $HadOldInstall true - ${EndIf} - ${InstallOnInitCommon} "$(WARN_MIN_SUPPORTED_OSVER_CPU_MSG)" !insertmacro InitInstallOptionsFile "options.ini" @@ -1756,5 +1521,4 @@ FunctionEnd Function .onGUIEnd ${OnEndCommon} - Call SendPing FunctionEnd diff --git a/browser/installer/windows/nsis/stub.nsi b/browser/installer/windows/nsis/stub.nsi index c619fa98fc42..5f86d6a277a0 100644 --- a/browser/installer/windows/nsis/stub.nsi +++ b/browser/installer/windows/nsis/stub.nsi @@ -1218,7 +1218,7 @@ Function LaunchFullInstaller System::Call "kernel32::GetTickCount()l .s" Pop $EndPreInstallPhaseTickCount - Exec "$\"$PLUGINSDIR\download.exe$\" /LaunchedFromStub /INI=$PLUGINSDIR\${CONFIG_INI}" + Exec "$\"$PLUGINSDIR\download.exe$\" /INI=$PLUGINSDIR\${CONFIG_INI}" ${NSD_CreateTimer} CheckInstall ${InstallIntervalMS} FunctionEnd diff --git a/other-licenses/nsis/Plugins/nsJSON.dll b/other-licenses/nsis/Plugins/nsJSON.dll index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..36e5263d92f712a3047aa379f32c4d9063da9e8a 100644 GIT binary patch literal 18944 zcmeHv3s_v$_3xPnFd;*R7)UTLNsOtFm;f`t48t>FfM`gDOqc-)L6Qs(BLM>Egd_%% z&jYRFajLhqy=}E>tF;gR^-HU*##T!n4T;xBs;ScAze&~FgNIuFHccjqIrq2rnHeBj zd%y4gzx)60y&bY=_E~%Fwbx#I?e*AuCe^px#~C<|Goq*}$32TrdX=*G&wm?6^Q^0$ zo5ejnejuyWK*EEJF~N^Bm9huvj+uJ+%%&q>+E}=cMwLPw_aan-O)u2nR$7d=^DSJ+3bv?%=vd76!?f?KJ zB)s%osg8A`e$;_|Y9FZ>_kKVhso*#_HQx$23Hb6?C&$?UA1~*)g_pN|-g7C(9sHd3 zmArp9kM?I*;*I#qLW%N?8hd4etCd~boB3vr+m#GZDT*1zhBD<qH?u$ZG1V^iw^jw*IUBpDBS_ zX-xhEYcMd#Um?|+#7s^~4po^$dh1|m<5BBi<56IECBfvAdd)ts{9|Z-eZ6F9k&NqG zoUT;fXdP5c;WAw)2|b#&F#H;i*C&4;RHgBO^OpXl=!4!;qbYcY&m%vfs;YR*j1e=% zh=mbE)UY{paVV3V<%^9OZm}am6jd#THm-swGi6F+w?@(i-)}ev5r;UCcFwsB3 zgHi*@r5D9fj!zLsb;7KnL{epC=1?N3qWF=XuM>MyIblPv z0KF6AgRTnd@Vq?!JWn!(W=U1X(0Zd(Wp;z83_e+mr0@x1Bw0ubuhxZh z${7vY16(s!+k`dz6-Y_0RO^T|7Zfw3#Ng6;5UFf&9u`Vhhic7gqBIu(9|6)f`s5vu zX?;DG)=W@fw+svlzYi|03*V%+IE+3afyPRdYR$^c!GeYs=TY7v%>wQQF|vYRDMotv z>%>SSzl_+tirAb_Y^H-vJ{7e1nWSooEslki!jLp;t@Ahg=UGSA)L`g)Q?S0(sgO@d zCmmG`L46$rs_A2m2g>KOs;X5@--MO9eK1iR)Vt#grD@3Hq#+Bu(s-yhVtK|u!*vAp zO>Q+kfIgVW20+EgjeMmTY2sIlk(GRr80q8fU{**7-cYAx2d}AX2_+gX0P(PF6wlH= zalsL!#-LL`ilId^7|z66NK*Gp!UUF|Sd=0IYTsPwo;U1@xT8z^0j#umEMto_)WlQ; z`oX5=^;yq*Lc&C>tMm#)j{dVD^P2@-MVa%}edo|_Jr9L6426v@(*5c4=kw9QDxE@4 z^y(JodOh+(z@p_8W&}55VtVn29uw-W(5lW0`(6XRsM>-T$z{6Rbl~D8VfBIC(Aq+e zbtLT8`=pOs9P|0bUg^UYDbe!t^}3eBXH6|LPgJ&qW`%8gTO5mp_qIqbb5jE(ZVim&@7g49%&I-fPFWLCAvNU4EwKEd(7(V%0j76{ZHmp~i`@xsleZCdOsR zC6h(F8WzrLJwGsF`SLteeL-VWFtH(M3b`V6(upD0_-1qpRiA@hmo{QUrggPAYsW*i zV^VFzGVn_@Qp;*HJw8+3sSmlvEYA#zk(T{A{0cF$lwT@FR`H9($Ywr6jBK?G+>0(j zQ(c94ST7#ci$i*)S8|Ohe+`-{#Y8jV`-L)OEgH{9LmWP)UR}t}ef>eDjm<&a$Gn_CC8zM@2aE8(!Oi>O5 zlSlV3yEKMY=pSR}2yukDf~in##5r!chb*|{k|(tjHo$Bh^!nU*!4L?h00lD`-yPd- z1>p_4xRA+r@z+`h-EN=vQ|JSOeTgBbbX=Jcx7IOZ6XaAOHS98B%ev)8NK8DI8r4%1 zbRk)^8-xU@)ZBO!ipv_vIAg3;VxO7guL~RmJL)d1e>p1XF)#3R3{s^*65whTc<7k7 zg>i!t^uJ0T&*1f8D6S_XbX>KR7}d(GC9A!x%y$kgJn@HU^eqb@go zQtbpno-&i97k6VrrufuOOkf=(O)WDqhVukJC$!V3%#Ja3VKfNk3U!*L9L0^Hg#sGj z+J7(r!T?%DA2f}qDk;+=1OrwNZZIL#X;ciMZZoKmF=>*HZ=p4g*?Dm+4N(?+Wo^N?)>gaVgg5;%1mp9!xDaucygIwr>dkQqHMDChX^0Wq?g`yGP|;!s&%5A&aV;W0=}5BloQOX zYjK|HG6nnSbJtQL^K)aBJ8bL;TsvuGr0Pf&;se9DQq~em>rtG{s~LNM4!2gNEXQ-O zOPNm}Ey^7FXjjbi!7B;$v9%>+?5TtMGxn5KfO)We&swMgn}o4PNyfIp`Y`1gnqqm_ z!ogCj{4%MMv|&+;Ba4T{Gr8rx=deY4P15j%k@^KA;yXG;Fa5#m5YqTHfdddgQ11=u z1E`cz5Rkr%6cfADBwkc`mnvjf2OX}3mah%EeKqpF84%bp1cK0D8|m5->tIMQMG=qmE6EiWqno+}gOdgWY%tyUt-65tIqH{3arJOa=Btm>b}*-prh6#uA2) zgs2PZ0%o*K>-TW9U+*}~OFz&=zYMDcY~d;rtC_?acF7pf9CnSNI_{QVNkG=Hn2kUV zT5FTh7Hz*tBN~6+_ji~Im&~H#`9U2*x$$XC%-8S%j^+`&j3kxc#JHZoAk#XGLSC5d z=n2XPwwNLRmzaG1fpDG!I;L+3oV%RRBaBd%=!9^3<_3{CopXEQLVXYU8|K*^4Mg0i zO=Dv#En9;ToRIISpj|*h{uH|fQFiOdA2*tmtD%zBGK3q{#l$-~=uQj@id(Q#k~~pE z*Z?0-c@ZT;%u`zW)1W8kU8zPN-wJoT%PhOjt11Bc`g$#$^cwMQIDkw<2(K>=Hq6=3U z9ajn$Lc5L1D(i@cCKrGPNlEqfM8oW8GVw{F#i2g4Vwt4ETt-7Q{ici&Dx*apBNr&) zq&UI?W1$LZZuu!KWn>ba42oEc6V$^?)j>im{ji74y_oJ~;K^d5rO|i@ZVX0&kUu9H zLiR}csuk!E*yA`FOzhJ!H^F60>|%G^VRf1;=bA(N|F+-uNjW6cIx)OiRRhTEGY@o z55p~J7FxHMg>2T>;Q#(EB|3Gze+6E;X+3nD4ABQV;g1^g6uR*9X>X;uAq&GGDIK%VS>O}NKG|c^s|H%+ zaY_wh=pgHjV@AVFjVMHs0S>OjbSB5XmyMlDWB)li_828gh#IV_cvdG}2=z{cT<7>U zpXOH#K5SPk$pJP9^DD#R$MDzh0O-T+yOt!W1%&(!6j}J{uw%;%huyJ6gy};ne98po zFyTd?73hNxaz5C$$^ziTwy7xlbXylAittO95{3x7snjvkDKSfZ%0fasBUJPw5EU7iL6ER3GP+D>Md z(N3de_&gZ)xzk`QsC)JlJ}j;yZjIV*He3dVBQr%)8;%tLeLYp~X(amr7LVB=_-Eh6IG*QZya#ni z#wYnag=7azk}OM&As5-aR+7S4oUtc0jL#bPtCT6ZGA zagd#~Cb9I73@SOqXR&I~s5CNJ;vGmVs&SI1sge9HV*|UpJElLV`Q(=YrdW?Dj{GZz zlu02IKb!h8rICN2^%b3*E8pY#BIVi|;+8ExyLde+NDs96}N7{Wa8y zt+%{igI`WQ@M-ctVwlUYY6Ba=6I;okF=peY90}Q?2R&XXA6l?P?1h`JKwN6#6TE7z zxn9jvU-!b>Bg-Dg$uiah>j38Ql0s6aUy$lZSr%8LS%J08Q`5Crm9La`;Uqv9 za|o$?iIi(6#SNOl$r~Oi@~QOo4UapN6wNlOO_DBDX_AIQjwYm5$Jy~fERxUk;Ft)$ zBvqbgfn8%}($aquw8s}T#pX#K-_mabkj{$(o7Z5Mg)E^aqx^-xs;XP|;2ms!P)@RYMrPluc^YAD#*brRN<_ez8fIv(ts*Fg6Tv( z+}{)=PPHcFP?WC6QguWS*!kv1ZIA~v+4pD`t7HVa@{yY47UC(COTtp!=CCo(s!sQ( zy&m|(zvDC;NAA68N?BkHu~HUR_=ejDoSIELU|Zve8|P#B&t6|)+FUF zL|YKq4OU5ggTVI!Ou-hRQ*wxvX6QW(PKXf=v4sE#8NmQfScl1Cdk9n>+YTYuOGGfA zbqtJYvy>Oo6#Zk^Lv+v3c#8UwqQU@M`X68wgQfo~tb!9ZIxt0|YlYLW^xsL)*pZhx zosK6ML?6K`vBQiq8Ot-9~F!Rw%j7hRW(ui@kE6Tf8n%us zX*`WM?F zhGDFXC0L46G(g3=I;zKaEtG0c;}+*`V|LkH#(Ashoa}Gf7@^wJ zq?+TGk0pEqy*DA(3p^IpvY(HVAl}Bi=fZH{E)BZiy!f6`et{f^%aE&SLjfICcn>LjEuTnrZf8>8jX* znB;>*t@PqTFP2piq@hrH-sVfMmT;(d>vR6 zj>mHvEwT43YlV#^(qga79%bz@I63!`xb8l>%hf%?{jJXKGREm>t*I6YAN92b? z)n`HA8Z428^+#63(3M$19R*^tMKjydFtVxNVO55b3ZXk%v{5Sdj&Y&Nv`}RhKObb~ z(kZ`zw_t5IVLFCEYy(|omQ5l8#hFi8E&-)#^^0I{Tobf?-I!effJB1c@n}n6T;o^MTPw>RIo7C!TNfKYm7%Y z$7d3+3#8o5pb(ep%iF zyK4G9j0g5T0*l6H0N-xGTF=ym#{pl!%=RFZS_|e5W#IW)QWA>`7brFEz;4##cYlg9 zJc^1Jd90j`6Gf?7CKGlFMgr#|dE!SpJ`Kkk8Ub8q{u0Rb^$O%a@S5d*V%)9nG|L_s zOZ208pNuW{IV|-oC<85!guLqWWW>y5TctDb_A?iF_)U)94`*v)%1QgzR;wmXP_oV_6nOM zoC{obyUh%p9fQzJy}>z*b*(FoTJ&uA6Kw5F@(XM)q>0tz`pID-Ld<`TRDBw5h&STe zD`xC~^B_iMD#9vIS!M-Eby$V=4?i2am_lYwh#hK1gIuX`oT)hVwW`dbM9o{xq}4>6vOX|&8O*2@1R|Hg5|rfu z)3or{7)(^I2xLry%?&2ig%E_x<+u+aUH2m?Rn~ju-FQ|i{&_&1%9L*r{PLAJ+(<9dhFhX2m_KH6;oQ zeX?){JA`FJP#$u*lv9neOg@qzBnPO^=tYQ9j2MM7Dd~ozd^X*AEv2_PbW1XDmIS?z z@aU2t&`CA=wp3s{)t;wX9n~nC5+izH4!d)*4DgTwzLzk{;?#&ixWRFiWq|J30F)Qg zqRMan;ZxkDjW(j2Sfb~T;+qY^5<2NVWaMQL45hHUZ}~OcOd*krZosC2k?C1UJkRnn zT8LNHk!i>AYu{OB4Y5wBKr_b!w~~*DS!7bjxy+G9L0SlP2|i3aF#XO7Sbik#$?_*i zb|0lDcAE~`ZaE*p1P)SRq{kh-X6)(ne43-rh+&`qcX*x(MA^JS>NC=@V*Ij#ZYPZL z_kkd`7_nKR2eZAnFux*D$I?L>Mg9iHtFMoJ-3|w~(gjB@wSbqMF<$7x4c~`DWRtzexD&}DfZH|{E!T-d@OtUb2A2ML8Dt{4v5figZi)fC4 z2bnE+9gqa^Rh?o9JPqx^aSH$z@m0N7_A-3_4JFYle;IY`fAXyCyE#BwgtYo8D28@> z!_V@`t!Ty>ja9A0afwQ#)TV~Zl#MNA4YQdz+4IJ1=4U4Li{eTBg3FS6OFw-%!6%&w z^`;`8OoKU*ufSOoLQskT9z;9{4mU(+dS85|iKVb(%F-!wCrGN28aNooNd;uWE7vg^ z{1KY{eW*)~X}Ir3FtG|}5CbDY-7Ro@mhvOW-psTyYviqeBw^68uF5B4m!YE%9i#gW zhXMHVLx%NanZ$*vOp^}gf7gB706U3@*elP*X)0oxz5nPyqa|<;Tj6LxW$8abrcD!0 z9M(^;2dCokje#Fbd(OuEaPtbir<0LhIvM#j^qU!S+zoi;MQ~)~Cc2@}qX$6HD}+WUQ>(njIblzskb~cSNv!RNY;lHwfNzf&AMB_7v@%_l6+Bs!1ujwww*4DX`8;nk<`W!WC1 zbV`{QUi~n+r2h~ZsLy6#U4tLf*w9X|>$z1Z9Nvk7pHV0WUp&etZV!Ii zLfmoOO`M0@z^!NXjcDsZtrk7n@Y#+z#M(1~Doo(bRvryhpI;Uu_& zji8NlV|-2p;IA1R5|6Er6V14l;jRL2H)4MDcO%xQ1LN#KO<=PnI@BPn@?XVdPva3)!lgDpWYx)fX)uzTHVYOcd?_pI1Yc86l z%H1gUp?nMFArzvd=M1<3OW@kOZ}MzdzjAw98&~dc^YebL($8}>LI-Lde^+aBTkBq` z@tm)@H8us@X3%f?*zfz6?Pw>8T&eb3z?H4^BfVw01Ud-Vtw!KQf8Q7TJ>p8g_Cr3J zE6rJJU$%Ge-tAjS`t*B6I`)my%0ZQT3$V0F7-ow(1NLu|FdMRf zW4|9nF00Yn+D%IaCfPsmf!_@-%gSaTzzz}}4aRujr`Uck{6l}K#slHg>ooid$zjtJ zydeC_cECRC^?#GUdw^Su-&Az9`}s9p&D(CT?P~LJzmCH;bo$$U+*jhyYuY-x{Z-BF z+uQuyHz%PT?d|?;ypQ8vjKenio3~fA0*yN!ht&xFu07>Yqq1Git!>R)sdX1u#q*ss z&PM-E!QV|(_A{8r-@bhkb_ato3TxY2I)LR{yMFC@*CwXoN4Paz{$}1!Bl`zVFH0Q1z&3tPIcBPxyn`uHCKt8vHog-PN(pPkTg;_S_VJ_+WHLVw5xl@H?T+wVBq%6q_G( z;%3*z^{#c+943D54nt3OXIE=G-{RxW>DG4Bq{`Yl1I_D&9WXZAd|ZiPQ&)3)cN-R| z8bdeV22Ov*mA7_xHuKv8Q4q#x)4Tot+b5qp_3n;te)73iU)_CMbb?G$ov|r)yLNN6 z9@oYgPoK3j{{{Q6kU$oq%N)*%xHgx|=YZ$j3O`HUyM?i2$3f$N1#kZv^Z&F2 zbZntB@SWi4BkNckl=T_#877Kp;mdE;eE0Nz1fvkai}<_=?=Hmhl;u!H)P&FV`04)! z*5!HQUoTONM1P5Z#6BrUp_dVV2o0vaQUTDh$UhcERv_l1$eLnwijz5R3;~=D*^?c` z!Sc7Qc&G3r4e%I#Ir?-%=ZOx*yIMv=gZ;1NX!PGKn5NLvvaIeYbSQ_5<#7}s<#98C zPkiziy9=Kb)2_!mWhc|eU5UNehCh1U$}L8}b-=le^`Km*6OlD>ejAIIwcKqwER*{o z@;1tm1oY~{XC^WqKWJ`4pG;T)vIE3dG2?4Plpe+S#8*sC^z`}sRWZ4`(Vyaf0rdGP zvzk7yf1LBue?>v^oKEL*sa`JAa`3N%meCAj98YQj$1Q^nAyPyuvHRMYmfD7)>BrUZDwv&?t{5M$?eVS&ok!F&9~;4 z=YKW-!Tj&#Kbh~d-(&xo{SEsE_Dl8*#|B4}qusIB@ioWK9Jds_T`*cu>->rH_s*Gx zD+<3`c(Cxb!jZzU!lI%t7k#(rxO03tZ8?0-`#BeKuC=bVHduFApRoSg`UmSrR*P+} zEzfqd?Mt?YY){z^+1|COwz;{^Tvu*K?wz^!=RT1;oU7!1lAE5lJa0wbO?eG@_vAgC zcQEhgd8hM~yi0kD^Rx4J<$o#v+xb7vKboItztUb}UuXB(TkW0pJ@%0OYxalj$L#Oe zFWOTa^BmVZ9FENnzhj4^+p))Sx8pI#6ON}Hzi^let}Q4l2o!v`;Dv&8=NFuP&TlxM zbiU|3?Mx}Wx$u_4y@maSa^d+xLy@(ptmw9)aM7bhLq&4Y`66TS%;NOo8;Y&P)y2Nz zEybP1`-{I^{O#h$ik~e0W$|x|btQ{RoF!Ey>q~AgIZ*PIk{^~lS@QFeS4uu8A!8PR z+!kaNWVy3iv+m4#H0!CXUu69$>;0^>>@Q>&WZ#^tedUf*1gs*TEo@{tUt9Lvi`~Xi8aBN zVw+>T(ssSgZS&c-*@CtnTc1s`eZ}^$?QzKbIopu!72Dr!6Sjn0b8cO3V{T7wU+#a) zJ(PPi_vPF-A^C-Q)p=cceR=ohJ(TxC-mmk{elsM$)81q6g^oRLf5QGt`@8mRM}cFtqsp-!nsy)b?E8*Gj=2Se1?2_n3N{wh z6|@!%6x>trP{H>Kep+y-;CR8y1#cAmd%+i+Yn+>$4bE>mk2p^_Uv|FX9C400mlkd- z3>JR7@P~yzEBtlgONH+hrWY+MT2-{UXj{<@#cPW<6yH+ZQQT8}7h8o#i+@~9`K%dg Mx{RF1|3k0;3ElN$AOHXW literal 0 HcmV?d00001 diff --git a/toolkit/mozapps/installer/windows/nsis/common.nsh b/toolkit/mozapps/installer/windows/nsis/common.nsh index 7f46ab7a4eee..f17f3a72d988 100755 --- a/toolkit/mozapps/installer/windows/nsis/common.nsh +++ b/toolkit/mozapps/installer/windows/nsis/common.nsh @@ -1712,124 +1712,6 @@ !endif !macroend -/** - * Find the first existing installation for the application. - * This is similar to GetSingleInstallPath, except that it always returns the - * first path it finds, instead of an error when more than one path exists. - * - * The shell context and the registry view should already have been set. - * - * @param _KEY - * The registry subkey (typically Software\Mozilla\App Name). - * @return _RESULT - * path to the install directory of the first location found, or - * the string "false" if no existing installation was found. - * - * $R5 = counter for the loop's EnumRegKey - * $R6 = return value from EnumRegKey - * $R7 = return value from ReadRegStr - * $R8 = storage for _KEY - * $R9 = _KEY and _RESULT - */ -!macro GetFirstInstallPath - !ifndef ${_MOZFUNC_UN}GetFirstInstallPath - !define _MOZFUNC_UN_TMP ${_MOZFUNC_UN} - !insertmacro ${_MOZFUNC_UN_TMP}GetLongPath - !insertmacro ${_MOZFUNC_UN_TMP}GetParent - !insertmacro ${_MOZFUNC_UN_TMP}RemoveQuotesFromPath - !undef _MOZFUNC_UN - !define _MOZFUNC_UN ${_MOZFUNC_UN_TMP} - !undef _MOZFUNC_UN_TMP - - !verbose push - !verbose ${_MOZFUNC_VERBOSE} - !define ${_MOZFUNC_UN}GetFirstInstallPath "!insertmacro ${_MOZFUNC_UN}__GetFirstInstallPathCall" - - Function ${_MOZFUNC_UN}__GetFirstInstallPath - Exch $R9 - Push $R8 - Push $R7 - Push $R6 - Push $R5 - - StrCpy $R8 $R9 - StrCpy $R9 "false" - StrCpy $R5 0 - - ${Do} - ClearErrors - EnumRegKey $R6 SHCTX $R8 $R5 - ${If} ${Errors} - ${OrIf} $R6 == "" - ${Break} - ${EndIf} - - IntOp $R5 $R5 + 1 - - ReadRegStr $R7 SHCTX "$R8\$R6\Main" "PathToExe" - ${If} ${Errors} - ${Continue} - ${EndIf} - - ${${_MOZFUNC_UN}RemoveQuotesFromPath} "$R7" $R7 - GetFullPathName $R7 "$R7" - ${If} ${Errors} - ${Continue} - ${EndIf} - - StrCpy $R9 "$R7" - ${Break} - ${Loop} - - ${If} $R9 != "false" - ${${_MOZFUNC_UN}GetLongPath} "$R9" $R9 - ${${_MOZFUNC_UN}GetParent} "$R9" $R9 - ${EndIf} - - Pop $R5 - Pop $R6 - Pop $R7 - Pop $R8 - Exch $R9 - FunctionEnd - - !verbose pop - !endif -!macroend - -!macro __GetFirstInstallPathCall _KEY _RESULT - !verbose push - !verbose ${_MOZFUNC_VERBOSE} - Push "${_KEY}" - Call __GetFirstInstallPath - Pop ${_RESULT} - !verbose pop -!macroend - -!macro un.__GetFirstInstallPathCall _KEY _RESULT - !verbose push - !verbose ${_MOZFUNC_VERBOSE} - Push "${_KEY}" - Call un.__GetFirstInstallPath - Pop ${_RESULT} - !verbose pop -!macroend - -!macro un.__GetFirstInstallPath - !ifndef un.__GetFirstInstallPath - !verbose push - !verbose ${_MOZFUNC_VERBOSE} - !undef _MOZFUNC_UN - !define _MOZFUNC_UN "un." - - !insertmacro __GetFirstInstallPath - - !undef _MOZFUNC_UN - !define _MOZFUNC_UN - !verbose pop - !endif -!macroend - ################################################################################ # Macros for working with the file system