зеркало из https://github.com/mozilla/pjs.git
226 строки
7.3 KiB
Perl
Executable File
226 строки
7.3 KiB
Perl
Executable File
# Windows implementation of platform-specific installer functions:
|
|
#
|
|
# BuildPlatformInstaller()
|
|
|
|
# Define wizard file locations
|
|
$exe_suffix = '.exe';
|
|
@wizard_files = (
|
|
"setup.exe",
|
|
"setuprsc.dll"
|
|
);
|
|
|
|
sub BuildPlatformInstaller
|
|
{
|
|
# copy the lean installer to stub\ dir
|
|
print "\n****************************\n";
|
|
print "* *\n";
|
|
print "* creating Stub files... *\n";
|
|
print "* *\n";
|
|
print "****************************\n";
|
|
print "\n $gDirDistInstall/stub/$seiFileNameSpecificStub\n";
|
|
|
|
# build the self-extracting .exe (installer) file.
|
|
copy("$gDirDistInstall/$seiFileNameGeneric", "$gDirDistInstall/$seiFileNameSpecificStub") ||
|
|
die "copy $gDirDistInstall/$seiFileNameGeneric $gDirDistInstall/$seiFileNameSpecificStub: $!\n";
|
|
|
|
$origCwd = cwd();
|
|
chdir($gDirDistInstall);
|
|
system("./nsztool.exe $seiFileNameSpecificStub setup/*.*") && die "Error creating self-extracting installer";
|
|
chdir($origCwd);
|
|
|
|
if(-d "$gDirDistInstall/stub")
|
|
{
|
|
unlink <$gDirDistInstall/stub/*>;
|
|
}
|
|
else
|
|
{
|
|
mkdir ("$gDirDistInstall/stub",0775);
|
|
}
|
|
copy("$gDirDistInstall/$seiFileNameSpecificStub", "$gDirDistInstall/stub") ||
|
|
die "copy $gDirDistInstall/$seiFileNameSpecificStub $gDirDistInstall/stub: $!\n";
|
|
|
|
|
|
# create the xpi for launching the stub installer
|
|
print "\n************************************\n";
|
|
print "* *\n";
|
|
print "* creating stub installer xpi... *\n";
|
|
print "* *\n";
|
|
print "************************************\n";
|
|
print "\n $gDirDistInstall/$seiStubRootName.xpi\n\n";
|
|
|
|
if(-d "$gDirStageProduct/$seiStubRootName")
|
|
{
|
|
unlink <$gDirStageProduct/$seiStubRootName/*>;
|
|
}
|
|
else
|
|
{
|
|
mkdir ("$gDirStageProduct/$seiStubRootName",0775);
|
|
}
|
|
copy("$gDirDistInstall/stub/$seiFileNameSpecificStub", "$gDirStageProduct/$seiStubRootName") ||
|
|
die "copy $gDirDistInstall/stub/$seiFileNameSpecificStub $gDirStageProduct/$seiStubRootName: $!\n";
|
|
|
|
# Make .js files
|
|
if(MakeJsFile($seiStubRootName))
|
|
{
|
|
return(1);
|
|
}
|
|
|
|
# Make .xpi file
|
|
if(system("perl $gNGAppsScriptsDir/makexpi.pl $seiStubRootName $gDirStageProduct $gDirDistInstall"))
|
|
{
|
|
print "\n Error: perl $gNGAppsScriptsDir/makexpi.pl $seiStubRootName $gDirStageProduct $gDirDistInstall\n";
|
|
return(1);
|
|
}
|
|
|
|
# group files for CD
|
|
print "\n************************************\n";
|
|
print "* *\n";
|
|
print "* creating Compact Disk files... *\n";
|
|
print "* *\n";
|
|
print "************************************\n";
|
|
print "\n $gDirDistInstall/cd\n";
|
|
|
|
if(-d "$gDirDistInstall/cd")
|
|
{
|
|
unlink <$gDirDistInstall/cd/*>;
|
|
}
|
|
else
|
|
{
|
|
mkdir ("$gDirDistInstall/cd",0775);
|
|
}
|
|
|
|
copy("$gDirDistInstall/$seiFileNameSpecificStub", "$gDirDistInstall/cd") ||
|
|
die "copy $gDirDistInstall/$seiFileNameSpecificStub $gDirDistInstall/cd: $!\n";
|
|
|
|
StageUtils::CopyFiles("$gDirDistInstall/xpi", "$gDirDistInstall/cd");
|
|
|
|
# create the big self extracting .exe installer
|
|
print "\n**************************************************************\n";
|
|
print "* *\n";
|
|
print "* creating Self Extracting Executable Full Install file... *\n";
|
|
print "* *\n";
|
|
print "**************************************************************\n";
|
|
print "\n $gDirDistInstall/$seiFileNameSpecific\n";
|
|
|
|
if(-d "$gDirDistInstall/sea")
|
|
{
|
|
unlink <$gDirDistInstall/sea/*>;
|
|
}
|
|
else
|
|
{
|
|
mkdir ("$gDirDistInstall/sea",0775);
|
|
}
|
|
|
|
copy("$gDirDistInstall/$seiFileNameGeneric", "$gDirDistInstall/$seiFileNameSpecific") ||
|
|
die "copy $gDirDistInstall/$seiFileNameGeneric $gDirDistInstall/$seiFileNameSpecific: $!\n";
|
|
|
|
$origCwd = cwd();
|
|
chdir($gDirDistInstall);
|
|
|
|
system("./nsztool.exe $seiFileNameSpecific setup/*.* xpi/*.*") &&
|
|
die "\n Error: ./nsztool.exe $seiFileNameSpecific setup/*.* xpi/*.*\n";
|
|
chdir($origCwd);
|
|
|
|
copy("$gDirDistInstall/$seiFileNameSpecific", "$gDirDistInstall/sea") ||
|
|
die "copy $gDirDistInstall/$seiFileNameSpecific $gDirDistInstall/sea: $!\n";
|
|
|
|
unlink <$gDirDistInstall/$seiFileNameSpecificStub>;
|
|
|
|
if ($ENV{MOZ_INSTALLER_USE_7ZIP})
|
|
{
|
|
# 7-Zip Self Extracting Archive
|
|
print "\n********************************************************************\n";
|
|
print "* *\n";
|
|
print "* creating 7-Zip Self Extracting Executable Full Install File... *\n";
|
|
print "* *\n";
|
|
print "********************************************************************\n";
|
|
print "\n $gDirDistInstall/7-zip\n";
|
|
|
|
if(-d "$gDirDistInstall/7z")
|
|
{
|
|
unlink <$gDirDistInstall/7z/*>;
|
|
}
|
|
else
|
|
{
|
|
mkdir ("$gDirDistInstall/7z",0775);
|
|
}
|
|
|
|
# Set up the 7-Zip stage
|
|
if(-d "$gDirDistInstall/7zstage")
|
|
{
|
|
unlink <$gDirDistInstall/7zstage/*>;
|
|
}
|
|
else
|
|
{
|
|
mkdir ("$gDirDistInstall/7zstage",0775);
|
|
}
|
|
|
|
# Copy the files into the stage
|
|
chdir("$gDirDistInstall/setup");
|
|
`cp *.* $gDirDistInstall/7zstage`;
|
|
chdir("$gDirDistInstall/xpi");
|
|
`cp *.* $gDirDistInstall/7zstage`;
|
|
chdir("$gDirDistInstall");
|
|
|
|
# Copy the 7zSD SFX launcher to dist/install/7z
|
|
copy("$topsrcdir/$ENV{WIZ_sfxModule}", "$gDirDistInstall/7z") ||
|
|
die "copy $topsrcdir/$ENV{WIZ_sfxModule} $gDirDistInstall/7z\n";
|
|
|
|
# Copy the SEA manifest to dist/install/7z
|
|
copy("$inConfigFiles/app.tag", "$gDirDistInstall/7z") ||
|
|
die "copy $inConfigFiles/app.tag $gDirDistInstall/7z";
|
|
|
|
# Copy the generation batch file to dist/install
|
|
copy("$inConfigFiles/7zip.bat", "$gDirDistInstall") ||
|
|
die "copy $inConfigFiles/7zip.bat $gDirDistInstall";
|
|
|
|
chdir($gDirDistInstall);
|
|
system("cmd /C 7zip.bat");
|
|
move("$gDirDistInstall/7z/SetupGeneric.exe", "$gDirDistInstall/sea/$seiFileNameSpecific") ||
|
|
die "move $gDirDistInstall/SetupGeneric.exe $gDirDistInstall/sea/$seiFileNameSpecific";
|
|
}
|
|
print " done!\n\n";
|
|
|
|
if((!(-e "$topsrcdir/../redist/microsoft/system/msvcrt.dll")) ||
|
|
(!(-e "$topsrcdir/../redist/microsoft/system/msvcirt.dll")))
|
|
{
|
|
print "***\n";
|
|
print "**\n";
|
|
print "** The following required Microsoft redistributable system files were not found\n";
|
|
print "** in $topsrcdir/../redist/microsoft/system:\n";
|
|
print "**\n";
|
|
if(!(-e "$topsrcdir/../redist/microsoft/system/msvcrt.dll"))
|
|
{
|
|
print "** msvcrt.dll\n";
|
|
}
|
|
if(!(-e "$topsrcdir/../redist/microsoft/system/msvcirt.dll"))
|
|
{
|
|
print "** msvcirt.dll\n";
|
|
}
|
|
print "**\n";
|
|
print "** The above files are required by the installer and the browser. If you attempt\n";
|
|
print "** to run the installer, you may encounter the following bug:\n";
|
|
print "**\n";
|
|
print "** http://bugzilla.mozilla.org/show_bug.cgi?id=27601\n";
|
|
print "**\n";
|
|
print "***\n\n";
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
sub MakeExeZip
|
|
{
|
|
my($aSrcDir, $aExeFile, $aZipFile) = @_;
|
|
my($saveCwdir);
|
|
|
|
$saveCwdir = cwd();
|
|
chdir($aSrcDir);
|
|
if(system("zip $gDirDistInstall/xpi/$aZipFile $aExeFile"))
|
|
{
|
|
chdir($saveCwdir);
|
|
die "\n Error: zip $gDirDistInstall/xpi/$aZipFile $aExeFile";
|
|
}
|
|
chdir($saveCwdir);
|
|
}
|
|
|