12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- This directory contains the LZMA SDK code used in building the self-extracting
- Windows installer.
- The src/ directory contains an almost-unmodified copy of the 7-zip source code
- version 18.05, as downloaded from https://www.7-zip.org/a/lzma1805.7z (linked
- from https://www.7-zip.org/sdk.html). As stated in DOC/lzma-sdk.txt and on the
- web page, this code is in the public domain. A few modifications have been
- made to this copy of the source code. Those modifications are contained in
- customizations.diff, which should be found in the same directory as this file.
- The uxp/ directory contains 7zSD.sfx, a 32-bit Windows executable built from
- the Visual C++ 6 project found in the src/CPP/7zip/Bundles/SFXSetup/
- directory with customizations. The "ReleaseD" configuration was used.
- The uxp/ version contains generic vendor information and can be used for any
- UXP application's installer with minimal confusion for the user.
- The ReleaseD/ directory contains 7zSD.sfx.exe, which is an unmodified binary
- from that build process, ready to be customized for any target application
- with a resource hacker (ResHacker, PE explorer, etc.).
- Including a compiled binary in the source tree is certainly not preferred, but
- is necessary in this case because the code does not build cleanly under more
- recent compilers. Using an older toolchain also allows us to keep this
- executable running on older Windows versions which are no longer supported by
- the build system used for the main application; that means we can show an error
- message specifically informing users that their OS is too old, instead of the
- generic "not a valid Win32 application" error that Windows would generate if we
- used the newer toolchain and that isn't very helpful to most users.
- Using a precompiled binary also allows the installer build procedure to work
- without a compiler toolchain being configured.
- The uxp/ directory also contains a manifest which was edited into 7zSD.sfx's
- resources after build time. The manifest had to be added this way because the
- older resource compiler does not support manifests (and the 7-zip build files
- do not try to use any).
- The version info in the compiled binary was also edited after build time. There
- isn't a technical reason why the version info changes couldn't be included at
- build time, but since the goal is just to avoid confusing users about the origin
- of the installer, not to appear to be making the claim that we wrote the
- LZMA SDK, a more targeted change is appropriate.
- ** BUILDING 7zSD.sfx yourself **
- Step-by-step instructions for generating 7zSD.sfx:
- 1) Install Microsoft Visual C++ 6 Professional or Enterprise edition (the
- Standard edition does not include the optimizing compiler, so it should
- not be used). You'll likely want a virtual machine running Windows XP SP3,
- because running VC6 under more modern Windows versions is tricky, to say
- the least. Some people have reported success running it on Vista or Win 7,
- but please just save yourself the headache!
- Once installed, make sure to launch the Visual C++ 6.0 IDE at least once.
- 2) Install an appropriate Windows SDK version. The Windows XP Service Pack 2 SDK
- is known to work well, but that particular version appears to only be
- available from archive.org:
- https://web.archive.org/web/20080209175723/http://www.microsoft.com:80/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
- Follow the instructions on that archived page to install the SDK.
- 3) Run the tool included with the SDK that configures Visual C++ to use it.
- Start > All Programs > Microsoft Platform SDK for Windows XP SP2 >
- Visual Studio Registration > Register PSDK Directories with Visual Studio
- 4) If using a fresh copy of the LZMA SDK sources, apply the patch in
- customizations.diff. The copy in the UXP source tree already has these
- changes applied.
- 5) Open the workspace file at src\CPP\7zip\Bundles\SFXSetup\SFXSetup.dsw and
- build it using the "SFXSetup - Win32 ReleaseD" configuration. The output
- executable should be at the path ReleaseD\7zSD.sfx relative to SFXSetup.dsw.
- 6) Use Resource Hacker (available from http://angusj.com/resourcehacker/) to
- (if desired) replace the existing icon on 7zSD.sfx and to add the manifest
- as a new resource. Also edit the version info resource to replace CompanyName
- and LegalCopyright with an appropriate vendor name and FileDescription and
- ProductName with an appropriate product name.
- Be sure to recompile the resources using the green "play" button in the
- toolbar (or by pressing F5) before saving the edited binary file.
|