Followup to bug 326580 - run 7zip directly from the installer-stage directory, to avoid absolute-pathname problems, and make the "installer" target automatically stage files, r=robstrong

git-svn-id: svn://10.0.0.236/trunk@198281 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
benjamin%smedbergs.us
2006-05-23 21:59:16 +00:00
parent 8b0e86e86e
commit 7c298bf81e
4 changed files with 40 additions and 27 deletions

View File

@@ -89,6 +89,7 @@ include $(topsrcdir)/config/config.mk
include $(call EXPAND_LOCALE_SRCDIR,toolkit/locales)/installer/windows/charset.mk
installer:
$(MAKE) -C .. installer-stage
$(NSINSTALL) -D instgen
$(PERL) $(topsrcdir)/toolkit/mozapps/installer/make-installjsremoves.pl ../removed-files > instgen/removed-files.js
$(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) instgen

View File

@@ -1,3 +0,0 @@
7z a -t7z app.7z setup.exe config "%1/*" -mx -m0=BCJ2 -m1=LZMA:d24 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3
upx --best 7zSD.sfx
copy /b 7zSD.sfx+app.tag+app.7z SetupGeneric.exe

View File

@@ -127,17 +127,20 @@ mkdir($STAGE, 0775);
#-------------------------------------------------------------------------
#// call pkgcp.pl
chdir("$inSrcDir/xpinstall/packager");
system("perl pkgcp.pl -o $platform -s $DIST -d $STAGE -f $inConfigFiles/$ENV{WIZ_packagesFile} -v");
system("perl pkgcp.pl -o $platform -s $DIST -d $STAGE -f $inConfigFiles/$ENV{WIZ_packagesFile} -v") &&
die "pkgcp.pl failed: $!";
spew("Completed copying build files");
#// call xptlink.pl to make big .xpt files/component
system("perl xptlink.pl -s $DIST -d $STAGE -v");
system("perl xptlink.pl -s $DIST -d $STAGE -v") &&
die "xptlink.pl failed: $!";
spew("Completed xptlinking");
#// call makeall.pl tunneling args (delivers .xpis to $inObjDir/installer/stage)
chdir("$inSrcDir/toolkit/mozapps/installer");
spew("perl makeall.pl $ver -config $inConfigFiles -aurl $inXpiURL -rurl $inRedirIniURL -objDir $inObjDir");
system("perl makeall.pl $ver -config $inConfigFiles -aurl $inXpiURL -rurl $inRedirIniURL -objDir $inObjDir");
system("perl makeall.pl $ver -config $inConfigFiles -aurl $inXpiURL -rurl $inRedirIniURL -objDir $inObjDir") &&
die "makeall.pl failed: $!";
spew("Completed making .xpis");
spew("Installers built (see $inObjDir/dist/install/{stub,sea})");

View File

@@ -226,22 +226,16 @@ sub BuildPlatformInstaller
}
# Set up the NSIS config directory for inclusion in the SEA
if(-d "$gDirDistInstall/nsis/config")
if(-d "$topobjdir/installer-stage/config")
{
unlink <$gDirDistInstall/nsis/config/*>;
}
else
{
mkdir ("$gDirDistInstall/nsis/config",0775);
die "installer-stage/config shouldn't exist!";
}
mkdir ("$topobjdir/installer-stage/config",0775);
# Copy application NSIS installer files
copy("$inConfigFiles/7zipNSIS.bat", "$gDirDistInstall/nsis") ||
die "copy $gNGAppsScriptsDir/nsis/7zipNSIS.bat $gDirDistInstall/nsis";
copy("$inConfigFiles/instfiles-extra.nsi", "$gDirDistInstall/nsis") ||
die "copy $inConfigFiles/instfiles-extra.nsi $gDirDistInstall/nsis: $!\n";
copy("$inConfigFiles/removed-files.log", "$gDirDistInstall/nsis/config") ||
die "copy $inConfigFiles/removed-files.log $gDirDistInstall/nsis/config: $!\n";
copy("$inConfigFiles/SetProgramAccess.nsi", "$gDirDistInstall/nsis") ||
die "copy $inConfigFiles/SetProgramAccess.nsi $gDirDistInstall/nsis: $!\n";
copy("$gDirDistInstall/license.txt", "$gDirDistInstall/nsis") ||
@@ -282,25 +276,43 @@ sub BuildPlatformInstaller
chdir("$gDirDistInstall/nsis");
system("makensis.exe installer.nsi") &&
die "Error creating NSIS installer";
# Copy the 7zSD SFX launcher to dist/install/nsis
copy("$topsrcdir/$ENV{WIZ_sfxModule}", "$gDirDistInstall/nsis") ||
die "copy $topsrcdir/$ENV{WIZ_sfxModule} $gDirDistInstall/nsis\n";
# Copy the SEA manifest to dist/install/nsis
copy("$inConfigFiles/app.tag", "$gDirDistInstall/nsis") ||
die "copy $inConfigFiles/app.tag $gDirDistInstall/nsis";
$stagepath = `cygpath -t mixed $topobjdir/installer-stage`;
system("cmd /C 7zipNSIS.bat $stagepath");
# Stage files to installer-stage
copy("$gDirDistInstall/nsis/setup.exe", "$topobjdir/installer-stage") ||
die "copy $gDirDistInstall/nsis $topobjdir/installer-stage: $!";
copy("$inConfigFiles/removed-files.log", "$topobjdir/installer-stage/config") ||
die "copy $inConfigFiles/removed-files.log $topobjdir/installer-stage/config: $!";
my $dostopsrcdir = $topsrcdir;
my $dosDistInstall = $gDirDistInstall;
if ($^O =~ /cygwin/) {
$dostopsrcdir = `cygpath --mixed --short-name $topsrcdir`;
$dosDistInstall = `cygpath --mixed --short-name $gDirDistInstall`;
chomp ($dostopsrcdir, $dosDistInstall);
}
chdir "$topobjdir/installer-stage";
system("7z a -t7z $dosDistInstall/nsis/app.7z setup.exe config nonlocalized localized optional -mx -m0=BCJ2 -m1=LZMA:d24 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3") &&
die "7z failed: $!";
system("upx --best -o $dosDistInstall/nsis/7zSD.sfx $dostopsrcdir/other-licenses/7zstub/firefox/7zSD.sfx") &&
die "'upx --best -o $dosDistInstall/nsis/7zSD.sfx $dostopsrcdir/other-licenses/7zstub/firefox/7zSD.sfx' failed: $!";
# Temporary name change to include -nsis before .exe
$nsisFileNameSpecific = $seiFileNameSpecific;
$nsisFileNameSpecific =~ s/\.exe$/-nsis\.exe/;
chdir("$gDirDistInstall/nsis");
# Since we are using a unique temp name for the NSIS installer it is safe
# to copy it alongside the xpinstall based installer.
move("$gDirDistInstall/nsis/SetupGeneric.exe", "$gDirDistInstall/sea/$nsisFileNameSpecific") ||
die "move $gDirDistInstall/nsis/SetupGeneric.exe $gDirDistInstall/sea/$nsisFileNameSpecific";
print ("cmd /C copy /b 7zSD.sfx+app.tag+app.7z ..\\\\sea\\\\$nsisFileNameSpecific\n");
system("cmd /C copy /b 7zSD.sfx+app.tag+app.7z ..\\\\sea\\\\$nsisFileNameSpecific") &&
die "Final concatenation failed.";
}
print " done!\n\n";