diff --git a/mozilla/embedding/browser/activex/src/install/README.txt b/mozilla/embedding/browser/activex/src/install/README.txt index ce088d2592d..9c7e2884314 100644 --- a/mozilla/embedding/browser/activex/src/install/README.txt +++ b/mozilla/embedding/browser/activex/src/install/README.txt @@ -2,7 +2,13 @@ Instructions for producing the ActiveX control installer 1. Build Mozilla 2. Build the embedding dist -3. Grab the latest Nullsoft Installer. -4. Edit control.nsi with your paths & version info +3. Grab the latest Nullsoft 2.0+ Installer from http://nsis.sourceforge.net/ +4. Run build.pl to create a file maninfest and local settings 5. Run MakeNSISW over control.nsi +Notes. + +You need NSIS 2.0. I used NSIS 2.0b3 but others will probably do as well. + +The script will evolve but presently it assumes the dist dir is $MOZ_SRC\dist\Embed. + diff --git a/mozilla/embedding/browser/activex/src/install/build.pl b/mozilla/embedding/browser/activex/src/install/build.pl new file mode 100644 index 00000000000..2f8871749ac --- /dev/null +++ b/mozilla/embedding/browser/activex/src/install/build.pl @@ -0,0 +1,75 @@ +# Run this on Win32 only! + +$dir_sep = '\\'; +$moz = "$ENV{'MOZ_SRC'}\\mozilla"; +$moz_dist = "$moz\\dist\\Embed"; +$moz =~ s/\//$dir_sep/g; +$moz_version = "v1.5"; + +@dirs = (); + +$local_nsh = "local.nsh"; + +open(NSH, ">$local_nsh") or die("Can't write to local manifest $local_nsh"); +print NSH "!define DISTDIR \"$moz_dist\"\n"; +print NSH "!define VERSION \"$moz_version\"\n"; +close(NSH); + +open(FILES_NSH, ">files.nsh"); +push @dirs, ""; +read_dir("$moz_dist", ""); + +foreach (@dirs) +{ + if ($_ eq "") + { + print FILES_NSH "\n SetOutPath \"\$INSTDIR\"\n"; + } + else + { + print FILES_NSH "\n SetOutPath \"\$INSTDIR\\$_\"\n"; + } + + $dir = "$moz_dist\\$_"; + + opendir(DIR, $dir); + @files = readdir(DIR); + foreach (@files) + { + next if (/.*mfcembed*/i || + /.*winembed*/i || + /readme.html/i); + + if (! -d "$dir\\$_") + { + print FILES_NSH " File $dir\\$_\n"; + } + } + closedir(DIR); +} + +close(FILES_NSH); + +exit; + +sub read_dir($$) +{ + my ($absdir,$reldir) = @_; + my @dirList; + opendir(DIST, "$absdir"); + @dirList = readdir(DIST); + closedir(DIST); + foreach (@dirList) + { + next if ($_ eq "." || $_ eq ".."); + $absFileName = "$absdir\\$_"; + $fileName = ($reldir eq "") ? $_ : "$reldir\\$_"; + + if (-d $absFileName) + { + push @dirs, $fileName; + read_dir($absFileName, $fileName); + } + } +} + diff --git a/mozilla/embedding/browser/activex/src/install/control.nsi b/mozilla/embedding/browser/activex/src/install/control.nsi index 490be961015..9dd0c4cf087 100644 --- a/mozilla/embedding/browser/activex/src/install/control.nsi +++ b/mozilla/embedding/browser/activex/src/install/control.nsi @@ -1,5 +1,6 @@ -!define VERSION "v1.5" -!define DISTDIR "d:\m\source\mozilla\dist\Embed" +!include "local.nsh" + +!define PRODUCT "Mozilla ActiveX Control ${VERSION}" Name "Mozilla ActiveX Control ${VERSION}" @@ -11,16 +12,19 @@ DirText "This will install the Mozilla ActiveX Control ${VERSION} on your comput Section "Mozilla Control (required)" - SetOutPath $INSTDIR - File /r "${DISTDIR}\*.*" + !include "files.nsh" + + ; TODO install MSVC++ redistributable DLLs - msvcrt.dll & msvcp60.dll - RegDLL mozctlx.dll + RegDLL "$INSTDIR\mozctlx.dll" + WriteUninstaller Uninst.exe + SectionEnd Section "uninstall" - UnRegDLL mozctlx.dll + UnRegDLL "$INSTDIR\mozctlx.dll" Delete $INSTDIR\Uninst.exe RMDir /r $INSTDIR