fixing bug 191441 - Add config.ini option making GRE private vs shared. r=sgehani, sr=dveditz, a=dveditz

This commit is contained in:
ssu%netscape.com 2003-02-04 08:09:07 +00:00
parent 645a0cfe2b
commit bd1f67d720
20 changed files with 256 additions and 113 deletions

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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 = <fpInIt>)
$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;

View File

@ -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 = <fpInTemplate>)
$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;
}

View File

@ -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 = <fpInIt>)
$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;

View File

@ -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.

View File

@ -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;

View File

@ -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 = <fpInIt>)
$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;

View File

@ -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 = <fpInTemplate>)
$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;
}

View File

@ -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 = <fpInIt>)
$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;

View File

@ -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$");

View File

@ -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.

View File

@ -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,"");

View File

@ -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;

View File

@ -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 = <fpInIt>)
$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;

View File

@ -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 = <fpInTemplate>)
$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;

View File

@ -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);
}

View File

@ -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

View File

@ -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) &&