diff --git a/mozilla/xpinstall/packager/packages-win b/mozilla/xpinstall/packager/packages-win index e92d4ecbaad..fb4f5c86383 100644 --- a/mozilla/xpinstall/packager/packages-win +++ b/mozilla/xpinstall/packager/packages-win @@ -65,7 +65,6 @@ bin\defaults\messenger\mailViews.dat bin\README.txt,bin\readme.txt bin\LICENSE,bin\license.txt bin\jpeg3250.dll -bin\jsj3250.dll bin\mozilla.exe bin\regxpcom.exe bin\xpicleanup.exe diff --git a/mozilla/xpinstall/packager/win_gre/config.it b/mozilla/xpinstall/packager/win_gre/config.it index a736e332b30..4977d355057 100644 --- a/mozilla/xpinstall/packager/win_gre/config.it +++ b/mozilla/xpinstall/packager/win_gre/config.it @@ -12,7 +12,7 @@ Default AppID=$ProductName$User Company Name=$CompanyName$ Product Name=$ProductName$ -Product NameInternal=$ProductName$ +Product NameInternal=$ProductNameInternal$ User Agent=$UserAgent$ ; Destination Path values: @@ -120,20 +120,6 @@ Confirmation Message=There was an error encountered during installation of $Prod -; HKey: valid decryptable setup key is [Product CurrentVersion] or [Product PreviousVersion] -; Decrypt HKey: there are times when '[' and ']' are valid part of windows registry key names. -; Contains Filename: tells setup that the path contains filename needed to be removed before -; using it as a path. -; Verify Existence: FILE or PATH -; -[Locate Previous Product Path0] -HRoot=HKEY_LOCAL_MACHINE -HKey=SOFTWARE\$CompanyName$\$ProductName$\$UserAgent$\Main -Name=Install Directory -Decrypt HKey=TRUE -Contains Filename=FALSE -Verify Existence= - [Dialog Welcome] Show Dialog=TRUE ;*** LOCALIZE ME BABY *** @@ -288,9 +274,9 @@ exe_param= Class Name=MozillaMessageWindow Window Name= ;*** LOCALIZE ME BABY *** -Message=Download of $ProductName$ was successful. $ProductNameNoVersion$ must be closed to proceed with installation. Click OK to exit $ProductNameNoVersion$ automatically and to begin installation. +Message=Download of $ProductName$ was successful. $ProductNameInternal$ must be closed to proceed with installation. Click OK to exit $ProductNameInternal$ automatically and to begin installation. ;*** LOCALIZE ME BABY *** -Message Full Installer=$ProductNameNoVersion$ must be closed to proceed with installation. Click OK to exit $ProductNameNoVersion$ automatically and to begin installation. +Message Full Installer=$ProductNameInternal$ must be closed to proceed with installation. Click OK to exit $ProductNameInternal$ automatically and to begin installation. ; This key indicates whether or not to close all the windows associated with ; the process id of this app instance window found. @@ -574,7 +560,7 @@ Root Key=HKEY_LOCAL_MACHINE Key=[REGPATH]\$UserAgentShort$\Installer Name=PathToExe ;*** LOCALIZE ME BABY *** -Name Value=[SETUP PATH]\Setup\setup.exe +Name Value=[SETUP PATH]\Setup $ProductNameInternal$\setup.exe Type=REG_SZ Decrypt Key=TRUE Decrypt Name=FALSE diff --git a/mozilla/xpinstall/packager/win_gre/makeall.pl b/mozilla/xpinstall/packager/win_gre/makeall.pl index 488e56c30fc..5af450803ed 100644 --- a/mozilla/xpinstall/packager/win_gre/makeall.pl +++ b/mozilla/xpinstall/packager/win_gre/makeall.pl @@ -104,7 +104,7 @@ print "The display version is: $versionMain\n"; $ENV{WIZ_nameCompany} = "mozilla.org"; $ENV{WIZ_nameProduct} = "GRE"; -$ENV{WIZ_nameProductNoVersion} = "GRE"; +$ENV{WIZ_nameProductInternal} = "GRE"; # product name without the version string $ENV{WIZ_fileMainExe} = "none.exe"; $ENV{WIZ_fileUninstall} = $seuFileNameSpecific; $ENV{WIZ_fileUninstallZip} = $seuzFileNameSpecific; diff --git a/mozilla/xpinstall/packager/win_gre/makecfgini.pl b/mozilla/xpinstall/packager/win_gre/makecfgini.pl index 3c82e4604cf..1bd2eeb20aa 100644 --- a/mozilla/xpinstall/packager/win_gre/makecfgini.pl +++ b/mozilla/xpinstall/packager/win_gre/makecfgini.pl @@ -89,7 +89,7 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; -$nameProductNoVersion = $ENV{WIZ_nameProductNoVersion}; +$nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; $fileUninstallZip = $ENV{WIZ_fileUninstallZip}; @@ -194,7 +194,7 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/gi; $line =~ s/\$CompanyName\$/$nameCompany/gi; $line =~ s/\$ProductName\$/$nameProduct/gi; - $line =~ s/\$ProductNameNoVersion\$/$nameProductNoVersion/gi; + $line =~ s/\$ProductNameInternal\$/$nameProductInternal/gi; $line =~ s/\$MainExeFile\$/$fileMainExe/gi; $line =~ s/\$UninstallFile\$/$fileUninstall/gi; $line =~ s/\$UninstallFileZip\$/$fileUninstallZip/gi; diff --git a/mozilla/xpinstall/packager/win_gre/makejs.pl b/mozilla/xpinstall/packager/win_gre/makejs.pl index f1038d9e80e..8152dd455c3 100644 --- a/mozilla/xpinstall/packager/win_gre/makejs.pl +++ b/mozilla/xpinstall/packager/win_gre/makejs.pl @@ -66,7 +66,7 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; -$nameProductNoVersion = $ENV{WIZ_nameProductNoVersion}; +$nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; @@ -118,7 +118,7 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/i; $line =~ s/\$CompanyName\$/$nameCompany/i; $line =~ s/\$ProductName\$/$nameProduct/i; - $line =~ s/\$ProductNameNoVersion\$/$nameProductNoVersion/i; + $line =~ s/\$ProductNameInternal\$/$nameProductInternal/i; $line =~ s/\$MainExeFile\$/$fileMainExe/i; $line =~ s/\$UninstallFile\$/$fileUninstall/i; } diff --git a/mozilla/xpinstall/packager/win_gre/makeuninstallini.pl b/mozilla/xpinstall/packager/win_gre/makeuninstallini.pl index fb4ff4c8d2c..16f01c17ca5 100644 --- a/mozilla/xpinstall/packager/win_gre/makeuninstallini.pl +++ b/mozilla/xpinstall/packager/win_gre/makeuninstallini.pl @@ -61,6 +61,7 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; +$nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; @@ -87,6 +88,7 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/gi; $line =~ s/\$CompanyName\$/$nameCompany/gi; $line =~ s/\$ProductName\$/$nameProduct/gi; + $line =~ s/\$ProductNameInternal\$/$nameProductInternal/gi; $line =~ s/\$MainExeFile\$/$fileMainExe/gi; $line =~ s/\$UninstallFile\$/$fileUninstall/gi; print fpOutIni $line; diff --git a/mozilla/xpinstall/packager/win_mfcembed/config.it b/mozilla/xpinstall/packager/win_mfcembed/config.it index ec8e08e321d..17bbf8de167 100644 --- a/mozilla/xpinstall/packager/win_mfcembed/config.it +++ b/mozilla/xpinstall/packager/win_mfcembed/config.it @@ -12,7 +12,7 @@ Default AppID=$ProductName$User Company Name=$CompanyName$ Product Name=$ProductName$ -Product NameInternal=$ProductName$ +Product NameInternal=$ProductNameInternal$ User Agent=$UserAgent$ ; Destination Path values: @@ -286,9 +286,9 @@ exe_param= Class Name=MozillaMessageWindow Window Name= ;*** LOCALIZE ME BABY *** -Message=Download of $ProductName$ was successful. $ProductNameNoVersion$ must be closed to proceed with installation. Click OK to exit $ProductNameNoVersion$ automatically and to begin installation. +Message=Download of $ProductName$ was successful. $ProductNameInternal$ must be closed to proceed with installation. Click OK to exit $ProductNameInternal$ automatically and to begin installation. ;*** LOCALIZE ME BABY *** -Message Full Installer=$ProductNameNoVersion$ must be closed to proceed with installation. Click OK to exit $ProductNameNoVersion$ automatically and to begin installation. +Message Full Installer=$ProductNameInternal$ must be closed to proceed with installation. Click OK to exit $ProductNameInternal$ automatically and to begin installation. ; This key indicates whether or not to close all the windows associated with ; the process id of this app instance window found. diff --git a/mozilla/xpinstall/packager/win_mfcembed/makeall.pl b/mozilla/xpinstall/packager/win_mfcembed/makeall.pl index f334d6931f0..a9855170e40 100644 --- a/mozilla/xpinstall/packager/win_mfcembed/makeall.pl +++ b/mozilla/xpinstall/packager/win_mfcembed/makeall.pl @@ -117,7 +117,7 @@ else print "The display version is: $versionMain\n"; $ENV{WIZ_nameCompany} = "mozilla.org"; $ENV{WIZ_nameProduct} = "MfcEmbed"; -$ENV{WIZ_nameProductNoVersion} = "MfcEmbed"; +$ENV{WIZ_nameProductInternal} = "MfcEmbed"; # product name without any version string $ENV{WIZ_fileMainExe} = "mfcembed.exe"; $ENV{WIZ_fileUninstall} = $seuFileNameSpecific; $ENV{WIZ_fileUninstallZip} = $seuzFileNameSpecific; diff --git a/mozilla/xpinstall/packager/win_mfcembed/makecfgini.pl b/mozilla/xpinstall/packager/win_mfcembed/makecfgini.pl index 3c82e4604cf..1bd2eeb20aa 100644 --- a/mozilla/xpinstall/packager/win_mfcembed/makecfgini.pl +++ b/mozilla/xpinstall/packager/win_mfcembed/makecfgini.pl @@ -89,7 +89,7 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; -$nameProductNoVersion = $ENV{WIZ_nameProductNoVersion}; +$nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; $fileUninstallZip = $ENV{WIZ_fileUninstallZip}; @@ -194,7 +194,7 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/gi; $line =~ s/\$CompanyName\$/$nameCompany/gi; $line =~ s/\$ProductName\$/$nameProduct/gi; - $line =~ s/\$ProductNameNoVersion\$/$nameProductNoVersion/gi; + $line =~ s/\$ProductNameInternal\$/$nameProductInternal/gi; $line =~ s/\$MainExeFile\$/$fileMainExe/gi; $line =~ s/\$UninstallFile\$/$fileUninstall/gi; $line =~ s/\$UninstallFileZip\$/$fileUninstallZip/gi; diff --git a/mozilla/xpinstall/packager/win_mfcembed/makejs.pl b/mozilla/xpinstall/packager/win_mfcembed/makejs.pl index f1038d9e80e..8152dd455c3 100644 --- a/mozilla/xpinstall/packager/win_mfcembed/makejs.pl +++ b/mozilla/xpinstall/packager/win_mfcembed/makejs.pl @@ -66,7 +66,7 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; -$nameProductNoVersion = $ENV{WIZ_nameProductNoVersion}; +$nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; @@ -118,7 +118,7 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/i; $line =~ s/\$CompanyName\$/$nameCompany/i; $line =~ s/\$ProductName\$/$nameProduct/i; - $line =~ s/\$ProductNameNoVersion\$/$nameProductNoVersion/i; + $line =~ s/\$ProductNameInternal\$/$nameProductInternal/i; $line =~ s/\$MainExeFile\$/$fileMainExe/i; $line =~ s/\$UninstallFile\$/$fileUninstall/i; } diff --git a/mozilla/xpinstall/packager/win_mfcembed/makeuninstallini.pl b/mozilla/xpinstall/packager/win_mfcembed/makeuninstallini.pl index fb4ff4c8d2c..16f01c17ca5 100644 --- a/mozilla/xpinstall/packager/win_mfcembed/makeuninstallini.pl +++ b/mozilla/xpinstall/packager/win_mfcembed/makeuninstallini.pl @@ -61,6 +61,7 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; +$nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; @@ -87,6 +88,7 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/gi; $line =~ s/\$CompanyName\$/$nameCompany/gi; $line =~ s/\$ProductName\$/$nameProduct/gi; + $line =~ s/\$ProductNameInternal\$/$nameProductInternal/gi; $line =~ s/\$MainExeFile\$/$fileMainExe/gi; $line =~ s/\$UninstallFile\$/$fileUninstall/gi; print fpOutIni $line; diff --git a/mozilla/xpinstall/packager/windows/browser.jst b/mozilla/xpinstall/packager/windows/browser.jst index d9dcde71eba..85aaa1ca5fe 100644 --- a/mozilla/xpinstall/packager/windows/browser.jst +++ b/mozilla/xpinstall/packager/windows/browser.jst @@ -426,62 +426,67 @@ function upgradeCleanup() deleteThisFile("Chrome", "chrome.rdf"); deleteThisFolder("Chrome", "overlayinfo"); - // obsolete files that are now part of the GRE - // installer package. - deleteThisFile("Plugins", "npnul32.dll"); - deleteThisFile("Program", "gkgfx.dll"); - deleteThisFile("Program", "js3250.dll"); - deleteThisFile("Program", "mozctl.dll"); - deleteThisFile("Program", "mozctlx.dll"); - deleteThisFile("Program", "nss3.dll"); - deleteThisFile("Program", "nssckbi.dll"); - deleteThisFile("Program", "smime3.dll"); - deleteThisFile("Program", "softokn3.dll"); - deleteThisFile("Program", "ssl3.dll"); - deleteThisFile("Program", "xpcom.dll"); - deleteThisFile("Program", "xpistub.dll"); - deleteThisFile("Program", "zlib.dll"); - deleteThisFile("Components", "accessibility.dll"); - deleteThisFile("Components", "appshell.dll"); - deleteThisFile("Components", "caps.dll"); - deleteThisFile("Components", "chrome.dll"); - deleteThisFile("Components", "cookie.dll"); - deleteThisFile("Components", "docshell.dll"); - deleteThisFile("Components", "editor.dll"); - deleteThisFile("Components", "embedcomponents.dll"); - deleteThisFile("Components", "gkgfxwin.dll"); - deleteThisFile("Components", "gklayout.dll"); - deleteThisFile("Components", "gkparser.dll"); - deleteThisFile("Components", "gkplugin.dll"); - deleteThisFile("Components", "gkview.dll"); - deleteThisFile("Components", "gkwidget.dll"); - deleteThisFile("Components", "i18n.dll"); - deleteThisFile("Components", "imgicon.dll"); - deleteThisFile("Components", "imglib2.dll"); - deleteThisFile("Components", "imgmng.dll"); - deleteThisFile("Components", "jar50.dll"); - deleteThisFile("Components", "jsdom.dll"); - deleteThisFile("Components", "jsurl.dll"); - deleteThisFile("Components", "necko.dll"); - deleteThisFile("Components", "necko2.dll"); - deleteThisFile("Components", "nsDownloadProgressListener.js"); - deleteThisFile("Components", "nsHelperAppDlg.js"); - deleteThisFile("Components", "nsProgressDialog.js"); - deleteThisFile("Components", "oji.dll"); - deleteThisFile("Components", "pipboot.dll"); - deleteThisFile("Components", "pipnss.dll"); - deleteThisFile("Components", "profile.dll"); - deleteThisFile("Components", "rdf.dll"); - deleteThisFile("Components", "shistory.dll"); - deleteThisFile("Components", "uconv.dll"); - deleteThisFile("Components", "ucvmath.dll"); - deleteThisFile("Components", "urildr.dll"); - deleteThisFile("Components", "wallet.dll"); - deleteThisFile("Components", "webbrwsr.dll"); - deleteThisFile("Components", "xmlextras.dll"); - deleteThisFile("Components", "xpc3250.dll"); - deleteThisFile("Components", "xpinstal.dll"); - deleteThisFile("Components", "xppref32.dll"); + if(!gGreLocal) + { + // If GRE is not local, meaning it's installed in a + // global area, then cleanup obsolete files that are + // now part of the GRE installer package. + deleteThisFile("Plugins", "npnul32.dll"); + deleteThisFile("Program", "gkgfx.dll"); + deleteThisFile("Program", "js3250.dll"); + deleteThisFile("Program", "jsj3250.dll"); + deleteThisFile("Program", "mozctl.dll"); + deleteThisFile("Program", "mozctlx.dll"); + deleteThisFile("Program", "nss3.dll"); + deleteThisFile("Program", "nssckbi.dll"); + deleteThisFile("Program", "smime3.dll"); + deleteThisFile("Program", "softokn3.dll"); + deleteThisFile("Program", "ssl3.dll"); + deleteThisFile("Program", "xpcom.dll"); + deleteThisFile("Program", "xpistub.dll"); + deleteThisFile("Program", "zlib.dll"); + deleteThisFile("Components", "accessibility.dll"); + deleteThisFile("Components", "appshell.dll"); + deleteThisFile("Components", "caps.dll"); + deleteThisFile("Components", "chrome.dll"); + deleteThisFile("Components", "cookie.dll"); + deleteThisFile("Components", "docshell.dll"); + deleteThisFile("Components", "editor.dll"); + deleteThisFile("Components", "embedcomponents.dll"); + deleteThisFile("Components", "gkgfxwin.dll"); + deleteThisFile("Components", "gklayout.dll"); + deleteThisFile("Components", "gkparser.dll"); + deleteThisFile("Components", "gkplugin.dll"); + deleteThisFile("Components", "gkview.dll"); + deleteThisFile("Components", "gkwidget.dll"); + deleteThisFile("Components", "i18n.dll"); + deleteThisFile("Components", "imgicon.dll"); + deleteThisFile("Components", "imglib2.dll"); + deleteThisFile("Components", "imgmng.dll"); + deleteThisFile("Components", "jar50.dll"); + deleteThisFile("Components", "jsdom.dll"); + deleteThisFile("Components", "jsurl.dll"); + deleteThisFile("Components", "necko.dll"); + deleteThisFile("Components", "necko2.dll"); + deleteThisFile("Components", "nsDownloadProgressListener.js"); + deleteThisFile("Components", "nsHelperAppDlg.js"); + deleteThisFile("Components", "nsProgressDialog.js"); + deleteThisFile("Components", "oji.dll"); + deleteThisFile("Components", "pipboot.dll"); + deleteThisFile("Components", "pipnss.dll"); + deleteThisFile("Components", "profile.dll"); + deleteThisFile("Components", "rdf.dll"); + deleteThisFile("Components", "shistory.dll"); + deleteThisFile("Components", "uconv.dll"); + deleteThisFile("Components", "ucvmath.dll"); + deleteThisFile("Components", "urildr.dll"); + deleteThisFile("Components", "wallet.dll"); + deleteThisFile("Components", "webbrwsr.dll"); + deleteThisFile("Components", "xmlextras.dll"); + deleteThisFile("Components", "xpc3250.dll"); + deleteThisFile("Components", "xpinstal.dll"); + deleteThisFile("Components", "xppref32.dll"); + } } // main @@ -494,6 +499,17 @@ var fileComponentRegStr; var fileComponentReg; var restrictedAccess; var fileToRegister; +var args; +var gGreLocal = false; + +args = new String(Install.arguments); +logComment("args: " + args); + +// If -gGreLocal is passed in, then we need to *not* cleanup GRE files if they +// exist in the browser dir. +// The default is to delete any GRE files because we default GRE will be global. +if(args == "-greLocal") + gGreLocal = true; srDest = $SpaceRequired$:bin; err = initInstall("$ProductName$", "Browser", "$Version$"); diff --git a/mozilla/xpinstall/packager/windows/config.it b/mozilla/xpinstall/packager/windows/config.it index 85a4fff72e4..a5285c044b9 100644 --- a/mozilla/xpinstall/packager/windows/config.it +++ b/mozilla/xpinstall/packager/windows/config.it @@ -91,6 +91,33 @@ Default Setup Type=Setup Type 1 ; TRUE Refresh Icons=FALSE +; Setting to control whether or not GRE should be installed to app's dir +; to be used as a private/local GRE. +; +; Possible values (default is 'Shared'): +; Local +; Shared +; +; If this key is set to 'Local', make +; sure to provide a GRE Private Key= below! +GRE Type=Local + +; Private key that overrides the default shared key +; (HKEY_LOCAL_MACHINE\Software\mozilla.org\GRE) set by GRE's installer. +; This key will be created under HKEY_LOCAL_MACHINE and should be +; declared in the following format: +; +; Software\[company name]\[product name] +; (ie: Software\mozilla.org\GRE_PRIVATE) +; +; If it is not in the above format, the GRE installer/uninstaller can +; fail to work properly. +; The value to Prodduct Name Internal= (at the beginning of this +; config.ini file) will be appended as follows: +; +; Software\mozilla.org\GRE_PRIVATE_[Product Name Internal] +GRE Private Key=Software\mozilla.org\GRE_PRIVATE + ; This section contains info on how to send error information in case of ; either a download or xpinstall error. ; By default, this feature is enabled, unless disabled. @@ -371,9 +398,9 @@ Show Dialog=AUTO Class Name=MozillaMessageWindow Window Name= ;*** LOCALIZE ME BABY *** -Message=Download of $ProductName$ was successful. $ProductNameNoVersion$ must be closed to proceed with installation. Click OK to exit $ProductNameNoVersion$ automatically and to begin installation. +Message=Download of $ProductName$ was successful. $ProductNameInternal$ must be closed to proceed with installation. Click OK to exit $ProductNameInternal$ automatically and to begin installation. ;*** LOCALIZE ME BABY *** -Message Full Installer=$ProductNameNoVersion$ must be closed to proceed with installation. Click OK to exit $ProductNameNoVersion$ automatically and to begin installation. +Message Full Installer=$ProductNameInternal$ must be closed to proceed with installation. Click OK to exit $ProductNameInternal$ automatically and to begin installation. ; This key indicates whether or not to close all the windows associated with ; the process id of this app instance window found. diff --git a/mozilla/xpinstall/packager/windows/mail.jst b/mozilla/xpinstall/packager/windows/mail.jst index 4d182dbf00c..e43d4bf14ef 100644 --- a/mozilla/xpinstall/packager/windows/mail.jst +++ b/mozilla/xpinstall/packager/windows/mail.jst @@ -213,7 +213,7 @@ function createShortcuts() // Register as a windows XP mail application if( IsWinnt() ) { - subkey = "Software\\Clients\\Mail\\$ProductNameNoVersion$"; + subkey = "Software\\Clients\\Mail\\$ProductNameInternal$"; winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE); winreg.createKey(subkey,""); diff --git a/mozilla/xpinstall/packager/windows/makeall.pl b/mozilla/xpinstall/packager/windows/makeall.pl index 132ab7f83f4..75a67e30456 100644 --- a/mozilla/xpinstall/packager/windows/makeall.pl +++ b/mozilla/xpinstall/packager/windows/makeall.pl @@ -127,8 +127,7 @@ copy("$gDirDistInstGre/$seiGreFileNameSpecific", "$gDirStageProduct/gre") || $versionLanguage = "en"; $ENV{WIZ_nameCompany} = "mozilla.org"; $ENV{WIZ_nameProduct} = "Mozilla"; -$ENV{WIZ_nameProductNoVersion} = "Mozilla"; -$ENV{WIZ_nameProductInternal} = $ENV{WIZ_nameProductNoVersion}; +$ENV{WIZ_nameProductInternal} = "Mozilla"; # product name without the version string $ENV{WIZ_fileMainExe} = "Mozilla.exe"; $ENV{WIZ_fileUninstall} = $seuFileNameSpecific; $ENV{WIZ_fileUninstallZip} = $seuzFileNameSpecific; diff --git a/mozilla/xpinstall/packager/windows/makecfgini.pl b/mozilla/xpinstall/packager/windows/makecfgini.pl index 375cb61a9e8..45710724b4f 100644 --- a/mozilla/xpinstall/packager/windows/makecfgini.pl +++ b/mozilla/xpinstall/packager/windows/makecfgini.pl @@ -89,7 +89,6 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; -$nameProductNoVersion = $ENV{WIZ_nameProductNoVersion}; $nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; @@ -200,7 +199,6 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/gi; $line =~ s/\$CompanyName\$/$nameCompany/gi; $line =~ s/\$ProductName\$/$nameProduct/gi; - $line =~ s/\$ProductNameNoVersion\$/$nameProductNoVersion/gi; $line =~ s/\$ProductNameInternal\$/$nameProductInternal/gi; $line =~ s/\$MainExeFile\$/$fileMainExe/gi; $line =~ s/\$UninstallFile\$/$fileUninstall/gi; diff --git a/mozilla/xpinstall/packager/windows/makejs.pl b/mozilla/xpinstall/packager/windows/makejs.pl index c1e4e1880f4..6372277909f 100644 --- a/mozilla/xpinstall/packager/windows/makejs.pl +++ b/mozilla/xpinstall/packager/windows/makejs.pl @@ -66,7 +66,6 @@ $userAgentShort = $ENV{WIZ_userAgentShort}; $xpinstallVersion = $ENV{WIZ_xpinstallVersion}; $nameCompany = $ENV{WIZ_nameCompany}; $nameProduct = $ENV{WIZ_nameProduct}; -$nameProductNoVersion = $ENV{WIZ_nameProductNoVersion}; $nameProductInternal = $ENV{WIZ_nameProductInternal}; $fileMainExe = $ENV{WIZ_fileMainExe}; $fileUninstall = $ENV{WIZ_fileUninstall}; @@ -119,7 +118,6 @@ while($line = ) $line =~ s/\$XPInstallVersion\$/$xpinstallVersion/i; $line =~ s/\$CompanyName\$/$nameCompany/i; $line =~ s/\$ProductName\$/$nameProduct/i; - $line =~ s/\$ProductNameNoVersion\$/$nameProductNoVersion/i; $line =~ s/\$ProductNameInternal\$/$nameProductInternal/gi; $line =~ s/\$MainExeFile\$/$fileMainExe/i; $line =~ s/\$UninstallFile\$/$fileUninstall/i; diff --git a/mozilla/xpinstall/wizard/windows/setup/extra.c b/mozilla/xpinstall/wizard/windows/setup/extra.c index d4b33002a25..76e8676427c 100644 --- a/mozilla/xpinstall/wizard/windows/setup/extra.c +++ b/mozilla/xpinstall/wizard/windows/setup/extra.c @@ -69,6 +69,7 @@ DWORD PX_PROCESS; DWORD PX_THREAD; HRESULT InitGre(greInfo *gre); void DeInitGre(greInfo *gre); +void UpdateGreInstallerCmdLine(char *aParameter, DWORD aParameterBufSize); void LaunchExistingGreInstaller(greInfo *gre); void UpdateGREAppInstallerProgress(int percent); HRESULT GetInstalledGreConfigIni(greInfo *aGre, char *aGreConfigIni, DWORD aGreConfigIniBufSize); @@ -2032,6 +2033,40 @@ void ParsePath(LPSTR szInput, LPSTR szOutput, DWORD dwOutputSize, BOOL bURLPath, } } +/* Function: UpdateGreInstallerCmdLine() + * in/out: char *aParameter. + * purpose: To update the default GRE installer's command line parameters + * with new defaults depending on config.ini or cmdline arguments + * to this app's installer. + */ +void UpdateGreInstallerCmdLine(char *aParameter, DWORD aParameterBufSize) +{ + /* Force the install of GRE if '-greForce' is passed or if GRE + * is to be local. + * + * Passing '-f' to GRE's installer will force it to install + * regardless of version found on system. If '-f' is already + * present in the parameter, it will do no harm to pass it again. */ + if(gbForceInstallGre || (sgProduct.greType == GRE_LOCAL)) + lstrcat(aParameter, " -f"); + + /* If GRE is to be local, then instruct the GRE's installer to + * install to this application's destination path stored in + * sgProduct.szPath. + * + * We need to also instruct the GRE's installer to create a + * private windows registry GRE key instead of the default one, so + * that other apps attempting to use the global GRE will not find + * this private, local copy. They should not find this copy! */ + if(sgProduct.greType == GRE_LOCAL) + { + char buf[MAX_BUF]; + + wsprintf(buf, " -dd \"%s\" -reg_path %s", sgProduct.szPath, sgProduct.grePrivateKey); + lstrcat(aParameter, buf); + } +} + /* Function: GetInstalledGreConfigIni() * in: greInfo *aGre: gre class containing the location of GRE * already installed. @@ -2051,7 +2086,7 @@ HRESULT GetInstalledGreConfigIni(greInfo *aGre, char *aGreConfigIni, DWORD aGreC *aGreConfigIni = '\0'; MozCopyStr(aGre->homePath, buf, sizeof(buf)); AppendBackSlash(buf, sizeof(buf)); - wsprintf(aGreConfigIni, "%sSetup\\%s", buf, FILE_INI_CONFIG); + wsprintf(aGreConfigIni, "%s%s\\%s", buf, GRE_SETUP_DIR_NAME, FILE_INI_CONFIG); return(WIZ_OK); } @@ -2101,6 +2136,14 @@ void GetGrePathFromGreInstaller(char *aGreInstallerFile, greInfo *aGre) if(!aGre) return; + /* If GRE is to be installed locally, then set it to the + * application's destination path. */ + if(sgProduct.greType == GRE_LOCAL) + { + MozCopyStr(sgProduct.szPath, aGre->homePath, sizeof(aGre->homePath)); + return; + } + *aGre->homePath = '\0'; /* uncompress gre installer's config.ini file in order to parse for: @@ -2190,13 +2233,7 @@ void LaunchOneComponent(siC *siCObject, greInfo *aGre) if(aGre) { GetGrePathFromGreInstaller(szSpawnFile, aGre); - - /* Force the install of GRE if '-fgre' is passed. - * Passing '-f' to GRE's installer will force it to install - * regardless of version found on system. If '-f' is already - * present in the parameter, it will do no harm to pass it again. */ - if(gbForceInstallGre) - lstrcat(szParameterBuf, " -f"); + UpdateGreInstallerCmdLine(szParameterBuf, sizeof(szParameterBuf)); } LogISLaunchAppsComponent(siCObject->szDescriptionShort); @@ -2297,11 +2334,22 @@ HRESULT ProcessGre(greInfo *aGre) */ if(GetInfoFromInstalledGreConfigIni(aGre) == WIZ_OK) { - wsprintf(greUninstallCommand, - "\"%s\" -mmi -ms -app %s -ua \"%s\"", - aGre->uninstallerAppPath, - sgProduct.szProductNameInternal, - aGre->userAgent); + /* If were installing GRE locally, then update the app's uninstall command + * to pass the local/private windows GRE key path to GRE's uninstaller + * during uninstall. */ + if(sgProduct.greType == GRE_LOCAL) + wsprintf(greUninstallCommand, + "\"%s\" -mmi -ms -app %s -ua \"%s\" -reg_path %s", + aGre->uninstallerAppPath, + sgProduct.szProductNameInternal, + aGre->userAgent, + sgProduct.grePrivateKey); + else + wsprintf(greUninstallCommand, + "\"%s\" -mmi -ms -app %s -ua \"%s\"", + aGre->uninstallerAppPath, + sgProduct.szProductNameInternal, + aGre->userAgent); UpdateInstallLog(KEY_UNINSTALL_COMMAND, greUninstallCommand, DNU_UNINSTALL); } return(WIZ_OK); @@ -2876,6 +2924,7 @@ HRESULT InitSetupGeneral() sgProduct.mode = NOT_SET; sgProduct.bSharedInst = FALSE; sgProduct.bInstallFiles = TRUE; + sgProduct.greType = GRE_TYPE_NOT_SET; sgProduct.dwCustomType = ST_RADIO0; sgProduct.dwNumberOfComponents = 0; sgProduct.bLockPath = FALSE; @@ -2918,6 +2967,8 @@ HRESULT InitSetupGeneral() if((sgProduct.szRegPath = NS_GlobalAlloc(MAX_BUF)) == NULL) return(1); + *sgProduct.grePrivateKey = '\0'; + return(0); } @@ -5291,9 +5342,12 @@ void PrintUsage(void) * -app: ID of application which is launching the installer (Shared installs) * -app_path: Points to representative file of app (Shared installs) * -dd [path]: Suggested install destination directory. (Shared installs) + * -greLocal: Forces GRE to be installed into the application dir. + * -greShared: Forces GRE to be installed into a global, shared dir (normally + * c:\program files\common files\mozilla.org\GRE * -f: Force install of GRE installer (Shared installs), though it'll work * for non GRE installers too. - * -fgre: Force 'Component GRE' to be downloaded, run, and installed. This + * -greForce: Force 'Component GRE' to be downloaded, run, and installed. This * bypasses GRE's logic of determining when to install by running its * installer with a '-f' flag. * -n [filename]: setup's parent's process filename @@ -5355,10 +5409,18 @@ DWORD ParseCommandLine(LPSTR lpszCmdLine) GetArgV(lpszCmdLine, i, szArgVBuf, sizeof(szArgVBuf)); lstrcpy(sgProduct.szAlternateArchiveSearchPath, szArgVBuf); } - else if(!lstrcmpi(szArgVBuf, "-fgre") || !lstrcmpi(szArgVBuf, "/fgre")) + else if(!lstrcmpi(szArgVBuf, "-greForce") || !lstrcmpi(szArgVBuf, "/greForce")) { gbForceInstallGre = TRUE; } + else if(!lstrcmpi(szArgVBuf, "-greLocal") || !lstrcmpi(szArgVBuf, "/greLocal")) + { + sgProduct.greType = GRE_LOCAL; + } + else if(!lstrcmpi(szArgVBuf, "-greShared") || !lstrcmpi(szArgVBuf, "/greShared")) + { + sgProduct.greType = GRE_SHARED; + } else if(!lstrcmpi(szArgVBuf, "-f") || !lstrcmpi(szArgVBuf, "/f")) { gbForceInstall = TRUE; @@ -6255,6 +6317,26 @@ HRESULT ParseConfigIni(LPSTR lpszCmdLine) if(lstrcmpi(szBuf, "TRUE") == 0) gSystemInfo.bRefreshIcons = TRUE; + /* Set default value for greType if not already set. If already set, + * it was set via cmdline argumen. Do not override the setting. */ + if(sgProduct.greType == GRE_TYPE_NOT_SET) + { + sgProduct.greType = GRE_SHARED; /* Always default to installing GRE to global area. */ + GetPrivateProfileString("General", "GRE Type", "", szBuf, sizeof(szBuf), szFileIniConfig); + if(lstrcmpi(szBuf, "Local") == 0) + sgProduct.greType = GRE_LOCAL; + else + sgProduct.greType = GRE_SHARED; + } + + GetPrivateProfileString("General", "GRE Private Key", "", szBuf, sizeof(szBuf), szFileIniConfig); + if(*szBuf != '\0') + { + DecryptString(sgProduct.grePrivateKey, szBuf); + lstrcat(sgProduct.grePrivateKey, "_"); + lstrcat(sgProduct.grePrivateKey, sgProduct.szProductNameInternal); + } + /* Welcome dialog */ GetPrivateProfileString("Dialog Welcome", "Show Dialog", "", szShowDialog, sizeof(szShowDialog), szFileIniConfig); GetPrivateProfileString("Dialog Welcome", "Title", "", diWelcome.szTitle, MAX_BUF, szFileIniConfig); @@ -7948,6 +8030,15 @@ char *GetSaveInstallerPath(char *szBuf, DWORD dwBufSize) #endif lstrcat(szBuf, "Setup"); + /* We need to have the product name be part of the Setup directory name. + * This is because if GRE is installed ontop of this app, GRE's saved files + * will overwrite files of the same name for this app. */ + if(*sgProduct.szProductNameInternal != '\0') + { + lstrcat(szBuf, " "); + lstrcat(szBuf, sgProduct.szProductNameInternal); + } + return(szBuf); } diff --git a/mozilla/xpinstall/wizard/windows/setup/setup.h b/mozilla/xpinstall/wizard/windows/setup/setup.h index ebe4bde3022..5af28829b76 100644 --- a/mozilla/xpinstall/wizard/windows/setup/setup.h +++ b/mozilla/xpinstall/wizard/windows/setup/setup.h @@ -106,6 +106,13 @@ typedef int PRInt32; #define STATUS_DISABLED 0 #define STATUS_ENABLED 1 +#define GRE_SETUP_DIR_NAME "Setup GRE" + +/* LOCAL GRE defines */ +#define GRE_TYPE_NOT_SET -1 +#define GRE_SHARED 0 +#define GRE_LOCAL 1 + /* WS: WinSpawn wait values */ #define WS_DO_NOT_WAIT FALSE #define WS_WAIT TRUE @@ -429,6 +436,7 @@ typedef struct dlgReboot typedef struct setupStruct { int mode; + int greType; DWORD dwCustomType; DWORD dwNumberOfComponents; LPSTR szPath; @@ -450,6 +458,7 @@ typedef struct setupStruct LPSTR szAppID; LPSTR szAppPath; LPSTR szRegPath; + char grePrivateKey[MAX_BUF]; } setupGen; typedef struct sinfoSmartDownload diff --git a/mozilla/xpinstall/wizard/windows/setup/xpi.c b/mozilla/xpinstall/wizard/windows/setup/xpi.c index b991b89c3e7..ac2b5cbea29 100644 --- a/mozilla/xpinstall/wizard/windows/setup/xpi.c +++ b/mozilla/xpinstall/wizard/windows/setup/xpi.c @@ -222,6 +222,7 @@ HRESULT SmartUpdateJars() char szMsgSmartUpdateStart[MAX_BUF]; char szDlgExtractingTitle[MAX_BUF]; char xpinstallPath[MAX_BUF]; + char xpiArgs[MAX_BUF]; if(!GetPrivateProfileString("Messages", "MSG_SMARTUPDATE_START", "", szMsgSmartUpdateStart, sizeof(szMsgSmartUpdateStart), szFileIniInstall)) return(1); @@ -312,7 +313,22 @@ HRESULT SmartUpdateJars() SetDlgItemText(dlgInfo.hWndDlg, IDC_STATUS0, szBuf); LogISXPInstallComponent(siCObject->szDescriptionShort); - hrResult = pfnXpiInstall(szArchive, sgProduct.szRegPath, 0xFFFF); + /* XXX fix: we need to better support passing arguments to .xpi files. + * This is a temporary hack to get greType passed to browser.xpi so that + * it won't delete GRE files if GRE is installed in the mozilla dir. + * + * What should be done is have the arguments be described in each + * component's section in config.ini and have it passed thru here. */ + *xpiArgs = '\0'; + if(lstrcmpi(siCObject->szArchiveName, "gre.xpi") == 0) + MozCopyStr(sgProduct.szRegPath, xpiArgs, sizeof(xpiArgs)); + else if((lstrcmpi(siCObject->szArchiveName, "browser.xpi") == 0) && + (sgProduct.greType == GRE_LOCAL)) + /* passing -greShared to browser.xpi will tell it to cleanup GRE files + * from it's directory if they exist. */ + MozCopyStr("-greLocal", xpiArgs, sizeof(xpiArgs)); + + hrResult = pfnXpiInstall(szArchive, xpiArgs, 0xFFFF); if(hrResult == E_REBOOT) bReboot = TRUE; else if((hrResult != WIZ_OK) &&