Bug 1591736 - Fix AddonManagerWebAPI::IsAPIEnabled in out-of-process iframes r=mixedpuppy
[gecko.git] / other-licenses / 7zstub / README.mozilla
blob6f440409d6f22d4361ea71208d53e99e6c9f8ff8
1 This directory contains the LZMA SDK code used in building the self-extracting
2 Windows installer.
4 The src/ directory contains an almost-unmodified copy of the 7-zip source code
5 version 18.05, as downloaded from https://www.7-zip.org/a/lzma1805.7z (linked
6 from https://www.7-zip.org/sdk.html) on August 30, 2018. As stated in
7 DOC/lzma-sdk.txt and on the web page, this code is in the public domain. A few
8 modifications have been made to this copy of the source code. Those
9 modifications are contained in mozilla_customizations.diff, which should be
10 found in the same directory as this file.
12 The firefox/ directory contains several things:
13 * SFXSetup.sln and SFXSetup.vcxproj
14   These are Visual Studio 2017 conversions of the Visual C++ 6 workspace and
15   project files from the src/CPP/7zip/Bundles/SFXSetup/ directory, with
16   some changes and additions to support AArch64 and to include our resources.
17 * 7zSD.arm64.manifest and 7zSD.win32.manifest
18   We need to add a manifest file to the binary for several reasons, and one
19   isn't supplied with the source package (Visual C++ 6 doesn't support them),
20   so we've written our own.
21 * setup.ico
22   The icon group used for the installer package.
23 * resource.rc
24   The resource script containing the above manifest and icon references, as
25   well as other resources we need. This is derived from the supplied SFXSetup
26   resource.rc, but heavily customized.
27 * 7zSD.ARM64.sfx
28   AArch64 binary built using all the above files. Checking this into the tree in
29   compiled binary form means that packaging the installer does not require
30   having a compiler toolchain configured (which is the case for artifact
31   builds). To compile your own version of this file, open SFXSetup.sln and build
32   the ReleaseD configuration.
33 * 7zSD.Win32.sfx
34   32-bit x86 binary built using some of the above files, but through a different
35   build procedure that uses Visual C++ 6 in order to maintain compatibility with
36   legacy Windows platforms (Firefox doesn't run on these platforms, but at least
37   we can display a helpful error message). The exact procedure that generated
38   this file was:
39   1) Install Microsoft Visual C++ 6 Professional or Enterprise edition (the
40      Standard edition does not include the optimizing compiler, so it should
41      not be used). You'll likely want a virtual machine running Windows XP,
42      because running VC6 under more modern Windows versions is tricky.
43   2) Install an appropriate Windows SDK version. The Windows XP Service Pack 2
44      SDK is known to work well, but that particular version appears to only be
45      available from archive.org:
46      https://web.archive.org/web/20080209175723/http://www.microsoft.com:80/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
47   3) Run the tool included with the SDK that configures Visual C++ to use it.
48   4) If using a fresh copy of the LZMA SDK sources, apply the patch in
49      mozilla_customizations.diff. The copy in the Firefox source tree already
50      has these changes applied.
51   5) Open the workspace file at src\CPP\7zip\Bundles\SFXSetup\SFXSetup.dsw and
52      build it using the "SFXSetup - Win32 ReleaseD" configuration. The output
53      executable should be at the path ReleaseD\7zSD.sfx relative to SFXSetup.dsw.
54   6) Use Resource Hacker (available from http://angusj.com/resourcehacker/) to
55      replace the existing icon on 7zSD.sfx and to add the manifest as a new
56      resource. Also edit the version info resource to replace CompanyName and
57      LegalCopyright with "Mozilla" (or appropriate vendor name) and
58      FileDescription and ProductName with "Firefox" (or appropriate product name).
59      Be sure to recompile the resources using the green "play" button in the
60      toolbar (or by pressing F5) before saving the file.
61   In the future this file may be replaced with one built in the same manner as
62   the AArch64 version using a modern toolchain, if the loss of platform support
63   is deemed acceptable.