From 7c298bf81e0b01b596ea43b1951ad7e2a492fbc2 Mon Sep 17 00:00:00 2001 From: "benjamin%smedbergs.us" Date: Tue, 23 May 2006 21:59:16 +0000 Subject: [PATCH] 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 --- mozilla/browser/installer/windows/Makefile.in | 1 + .../installer/windows/nsis/7zipNSIS.bat | 3 -- .../toolkit/mozapps/installer/build_static.pl | 9 ++-- .../mozapps/installer/windows/install_sub.pl | 54 +++++++++++-------- 4 files changed, 40 insertions(+), 27 deletions(-) delete mode 100755 mozilla/browser/installer/windows/nsis/7zipNSIS.bat diff --git a/mozilla/browser/installer/windows/Makefile.in b/mozilla/browser/installer/windows/Makefile.in index 185a0f74989..a42e0376a64 100644 --- a/mozilla/browser/installer/windows/Makefile.in +++ b/mozilla/browser/installer/windows/Makefile.in @@ -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 diff --git a/mozilla/browser/installer/windows/nsis/7zipNSIS.bat b/mozilla/browser/installer/windows/nsis/7zipNSIS.bat deleted file mode 100755 index 47f82e91722..00000000000 --- a/mozilla/browser/installer/windows/nsis/7zipNSIS.bat +++ /dev/null @@ -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 diff --git a/mozilla/toolkit/mozapps/installer/build_static.pl b/mozilla/toolkit/mozapps/installer/build_static.pl index 2bd42b058c7..a5f6c3d0e9a 100755 --- a/mozilla/toolkit/mozapps/installer/build_static.pl +++ b/mozilla/toolkit/mozapps/installer/build_static.pl @@ -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})"); diff --git a/mozilla/toolkit/mozapps/installer/windows/install_sub.pl b/mozilla/toolkit/mozapps/installer/windows/install_sub.pl index 60b3ae1a6e9..600e0c18661 100755 --- a/mozilla/toolkit/mozapps/installer/windows/install_sub.pl +++ b/mozilla/toolkit/mozapps/installer/windows/install_sub.pl @@ -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";