fixing bug 93327 - Win32 installer cannot CRC check .exe files. r=dveditz, sr=mscott. affects windows platforms only

This commit is contained in:
ssu%netscape.com 2001-08-02 22:02:48 +00:00
parent b9db929818
commit 6c93d5248c
7 changed files with 104 additions and 55 deletions

View File

@ -607,10 +607,10 @@ OS=NT51
Description Short=$CompanyName$ Uninstaller
;*** LOCALIZE ME BABY ***
Description Long=Uninstaller for $ProductName$
Archive=$UninstallFile$
$InstallSize$:$UninstallFile$
Archive=$UninstallFileZip$
$InstallSize$:$UninstallFileZip$
$InstallSizeSystem$
$InstallSizeArchive$:$UninstallFile$
$InstallSizeArchive$:$UninstallFileZip$
Attributes=SELECTED|INVISIBLE|DOWNLOAD_ONLY
;Since the uninstaller program is going to be installed into the Windows folder,
@ -741,35 +741,25 @@ Message=
; the app runs once upon windows reboot.
;Uncompress FileX sections
;[Uncompress File0]
;Timing=post download
;Source=[XPI PATH]\xpcom.xpi
;Destination=[SETUP PATH]
;Message=Configuring Seamonkey, please wait...
[Uncompress File0]
Timing=post smartupdate
Source=[XPI PATH]\$UninstallFileZip$
Destination=[WINDIR]
;*** LOCALIZE ME BABY ***
Message=Installing the uninstaller, please wait...
Only If Exists=FALSE
;[Uncompress File1]
;Timing=post download
;Source=[XPI PATH]\extratest.xpi
;Destination=[SETUP PATH]
;Message=Configuring Extra test files, please wait...
;Move FileX sections
;[Move File0]
;Timing=post download
;Source=[SETUP PATH]\bin\*
;Destination=[SETUP PATH]\program
;[Move File1]
;Timing=post download
;Source=[SETUP PATH]\ftmain\*
;Destination=[SETUP PATH]\program
;Copy FileX sections
;Copy the uninstaller to the [Setup Path]\Uninstall folder.
;This copy is to be used when the user installed on a system with
;restricted access.
[Copy File0]
Timing=post launchapp
Source=[JRE BIN PATH]\np*.dll
Destination=[SETUP PATH]\Plugins
Timing=post smartupdate
Source=[WINDIR]\$UninstallFile$
Destination=[SETUP PATH]\Uninstall
Fail If Exists=FALSE
Do Not Uninstall=FALSE
[Copy File1]
Timing=post smartupdate
@ -778,16 +768,6 @@ Destination=[WINDIR]
Fail If Exists=FALSE
Do Not Uninstall=TRUE
;Copy the uninstaller to the [Setup Path]\Uninstall folder.
;This copy is to be used when the user installed on a system with
;restricted access.
[Copy File2]
Timing=post smartupdate
Source=[XPI PATH]\$UninstallFile$
Destination=[SETUP PATH]\Uninstall
Fail If Exists=FALSE
Do Not Uninstall=FALSE
;Copy File SequentialX sections
[Copy File Sequential0]

View File

@ -26,6 +26,8 @@
# This perl script builds the xpi, config.ini, and js files.
#
use Cwd;
# Make sure MOZ_SRC is set.
if($ENV{MOZ_SRC} eq "")
{
@ -64,15 +66,17 @@ $seiFileNameGeneric = "nsinstall.exe";
$seiFileNameSpecific = "mozilla-win32-installer.exe";
$seiFileNameSpecificStub = "mozilla-win32-stub-installer.exe";
$seuFileNameSpecific = "MozillaUninstall.exe";
$seuzFileNameSpecific = "mozillauninstall.zip";
# set environment vars for use by other .pl scripts called from this script.
$ENV{WIZ_userAgent} = "0.9.2 (en)"; # ie: "0.9 (en)"
$ENV{WIZ_userAgentShort} = "0.9.2"; # ie: "0.9"
$ENV{WIZ_xpinstallVersion} = "0.9.2"; # ie: "0.9.0"
$ENV{WIZ_userAgent} = "0.9.4 (en)"; # ie: "0.9 (en)"
$ENV{WIZ_userAgentShort} = "0.9.4"; # ie: "0.9"
$ENV{WIZ_xpinstallVersion} = "0.9.4"; # ie: "0.9.0"
$ENV{WIZ_nameCompany} = "mozilla.org";
$ENV{WIZ_nameProduct} = "Mozilla";
$ENV{WIZ_fileMainExe} = "Mozilla.exe";
$ENV{WIZ_fileUninstall} = $seuFileNameSpecific;
$ENV{WIZ_fileUninstallZip} = $seuzFileNameSpecific;
# Set the location of the local tmp stage directory
$gLocalTmpStage = $inStagePath;
@ -292,6 +296,21 @@ if((!(-e "$ENV{MOZ_SRC}\\redist\\microsoft\\system\\msvcrt.dll")) ||
# end of script
exit(0);
sub MakeExeZip
{
my($aSrcDir, $aExeFile, $aZipFile) = @_;
my($saveCwdir);
$saveCwdir = cwd();
chdir($aSrcDir);
if(system("$ENV{MOZ_TOOLS}\\bin\\zip $inDistPath\\xpi\\$aZipFile $aExeFile"))
{
chdir($saveCwdir);
die "\n Error: $ENV{MOZ_TOOLS}\\bin\\zip $inDistPath\\xpi\\$aZipFile $aExeFile";
}
chdir($saveCwdir);
}
sub PrintUsage
{
die "usage: $0 <default version> <staging path> <dist install path> [options]
@ -401,11 +420,9 @@ sub MakeUninstall
print "\n Error: $inDistPath\\nsztool.exe $inDistPath\\$seuFileNameSpecific $inDistPath\\uninstall\\*.*\n";
return(1);
}
if(system("copy $inDistPath\\$seuFileNameSpecific $inDistPath\\xpi"))
{
print "\n Error: copy $inDistPath\\$seuFileNameSpecific $inDistPath\\xpi\n";
return(1);
}
MakeExeZip($inDistPath, $seuFileNameSpecific, $seuzFileNameSpecific);
unlink <$inDistPath\\$seuFileNameSpecific>;
return(0);
}

View File

@ -91,6 +91,7 @@ $nameCompany = $ENV{WIZ_nameCompany};
$nameProduct = $ENV{WIZ_nameProduct};
$fileMainExe = $ENV{WIZ_fileMainExe};
$fileUninstall = $ENV{WIZ_fileUninstall};
$fileUninstallZip = $ENV{WIZ_fileUninstallZip};
$inDomain;
$inRedirDomain;
@ -129,9 +130,9 @@ while($line = <fpInIt>)
$componentName = $colonSplit[1];
chop($componentName);
if($componentName =~ /\$UninstallFile\$/i)
if($componentName =~ /\$UninstallFileZip\$/i)
{
$installSize = OutputInstallSizeArchive("$inXpiPath\\$fileUninstall");
$installSize = OutputInstallSizeArchive("$inXpiPath\\$fileUninstallZip") * 2;
}
else
{
@ -170,7 +171,7 @@ while($line = <fpInIt>)
{
$componentName = $colonSplit[1];
chop($componentName);
$componentName =~ s/\$UninstallFile\$/$fileUninstall/gi;
$componentName =~ s/\$UninstallFileZip\$/$fileUninstallZip/gi;
$installSizeArchive = OutputInstallSizeArchive("$inXpiPath\\$componentName");
}
@ -194,6 +195,7 @@ while($line = <fpInIt>)
$line =~ s/\$ProductName\$/$nameProduct/gi;
$line =~ s/\$MainExeFile\$/$fileMainExe/gi;
$line =~ s/\$UninstallFile\$/$fileUninstall/gi;
$line =~ s/\$UninstallFileZip\$/$fileUninstallZip/gi;
print fpOutIni $line;
}
}

View File

@ -1906,7 +1906,6 @@ HRESULT LaunchApps()
BOOL bArchiveFound;
siC *siCObject = NULL;
char szArchive[MAX_BUF];
char szBuf[MAX_BUF];
char szMsg[MAX_BUF];
LogISLaunchApps(W_START);
@ -1944,13 +1943,39 @@ HRESULT LaunchApps()
if(bArchiveFound)
{
char szParameterBuf[MAX_BUF];
char szSpawnFile[MAX_BUF];
char szMessageString[MAX_BUF];
DWORD dwErr = FO_SUCCESS;
wsprintf(szMessageString, szMsg, siCObject->szDescriptionShort);
ShowMessage(szMessageString, TRUE);
DecryptString(szParameterBuf, siCObject->szParameter);
lstrcpy(szSpawnFile, szArchive);
if(siCObject->dwAttributes & SIC_UNCOMPRESS)
{
if((dwErr = FileUncompress(szArchive, szTempDir)) == FO_SUCCESS)
{
lstrcpy(szSpawnFile, szTempDir);
AppendBackSlash(szSpawnFile, sizeof(szSpawnFile));
lstrcat(szSpawnFile, siCObject->szArchiveNameUncompressed);
}
LogISLaunchAppsComponentUncompress(siCObject->szDescriptionShort, dwErr);
if(dwErr != FO_SUCCESS)
{
ShowMessage(szMessageString, FALSE);
continue;
}
}
LogISLaunchAppsComponent(siCObject->szDescriptionShort);
wsprintf(szBuf, szMsg, siCObject->szDescriptionShort);
ShowMessage(szBuf, TRUE);
DecryptString(szParameterBuf, siCObject->szParameter);
WinSpawn(szArchive, szParameterBuf, szTempDir, SW_SHOWNORMAL, TRUE);
ShowMessage(szBuf, FALSE);
WinSpawn(szSpawnFile, szParameterBuf, szTempDir, SW_SHOWNORMAL, TRUE);
if(siCObject->dwAttributes & SIC_UNCOMPRESS)
FileDelete(szSpawnFile);
ShowMessage(szMessageString, FALSE);
}
}
++dwIndex0;
@ -2577,6 +2602,8 @@ siC *CreateSiCNode()
if((siCNode->szArchiveName = NS_GlobalAlloc(MAX_BUF)) == NULL)
exit(1);
if((siCNode->szArchiveNameUncompressed = NS_GlobalAlloc(MAX_BUF)) == NULL)
exit(1);
if((siCNode->szArchivePath = NS_GlobalAlloc(MAX_BUF)) == NULL)
exit(1);
if((siCNode->szDestinationPath = NS_GlobalAlloc(MAX_BUF)) == NULL)
@ -2633,6 +2660,7 @@ void SiCNodeDelete(siC *siCTemp)
FreeMemory(&(siCTemp->szDestinationPath));
FreeMemory(&(siCTemp->szArchivePath));
FreeMemory(&(siCTemp->szArchiveName));
FreeMemory(&(siCTemp->szArchiveNameUncompressed));
FreeMemory(&(siCTemp->szParameter));
FreeMemory(&(siCTemp->szReferenceName));
FreeMemory(&(siCTemp->szDescriptionLong));
@ -3822,6 +3850,8 @@ HRESULT ParseComponentAttributes(char *szAttribute)
dwAttributes |= SIC_IGNORE_DOWNLOAD_ERROR;
if(strstr(szBuf, "IGNORE_XPINSTALL_ERROR"))
dwAttributes |= SIC_IGNORE_XPINSTALL_ERROR;
if(strstr(szBuf, "UNCOMPRESS"))
dwAttributes |= SIC_UNCOMPRESS;
return(dwAttributes);
}
@ -3947,6 +3977,14 @@ void InitSiComponents(char *szFileIni)
/* store name of archive for component */
lstrcpy(siCTemp->szArchiveName, szBuf);
/* store name of the uncompressed archive for the component */
GetPrivateProfileString(szComponentSection,
"Archive Uncompressed",
"",
siCTemp->szArchiveNameUncompressed,
sizeof(szBuf),
szFileIni);
/* get short description of component */
GetPrivateProfileString(szComponentSection, "Description Short", "", szBuf, sizeof(szBuf), szFileIni);
lstrcpy(siCTemp->szDescriptionShort, szBuf);

View File

@ -382,7 +382,15 @@ void LogISLaunchAppsComponent(char *szComponentName)
{
char szBuf[MAX_BUF];
wsprintf(szBuf, " %s\n", szComponentName);
wsprintf(szBuf, " launching %s\n", szComponentName);
UpdateInstallStatusLog(szBuf);
}
void LogISLaunchAppsComponentUncompress(char *szComponentName, DWORD dwErr)
{
char szBuf[MAX_BUF];
wsprintf(szBuf, " uncompressing %s: %d\n", szComponentName, dwErr);
UpdateInstallStatusLog(szBuf);
}

View File

@ -38,6 +38,8 @@ void LogISXPInstallComponent(char *szComponentName);
void LogISXPInstallComponentResult(DWORD dwErrorNumber);
void LogISLaunchApps(int iWhen);
void LogISLaunchAppsComponent(char *szComponentName);
void LogISLaunchAppsComponentUncompress(char *szComponentName,
DWORD dwErr);
void LogISProcessXpcomFile(int iStatus, int iResult);
void LogISDiskSpace(dsN *dsnComponentDSRequirement);
void LogISTurboMode(BOOL bTurboMode);

View File

@ -195,6 +195,7 @@ typedef int PRInt32;
#define SIC_FORCE_UPGRADE 0x00000080
#define SIC_IGNORE_DOWNLOAD_ERROR 0x00000100
#define SIC_IGNORE_XPINSTALL_ERROR 0x00000200
#define SIC_UNCOMPRESS 0x00000400
/* AC: Additional Components */
#define AC_NONE 0
@ -414,6 +415,7 @@ struct sinfoComponent
long lRandomInstallValue;
DWORD dwAttributes;
LPSTR szArchiveName;
LPSTR szArchiveNameUncompressed;
LPSTR szArchivePath;
LPSTR szDestinationPath;
LPSTR szDescriptionShort;