Index: installer/src/documentation/build_process.dox |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/installer/src/documentation/build_process.dox |
@@ -0,0 +1,110 @@ |
+/*! |
+ |
+\page build_process Build Process |
+ |
+## Tools |
+ |
+\par WiX |
+ |
+- WiX |
+ [WiX Toolset] (http://wixtoolset.org/) |
+ Home page. |
+- Wix |
+ [WiX Toolset Manual Table of Contents] (http://wixtoolset.org/documentation/manual/v3/) |
+ Where you usually need to go first. |
+- WiX |
+ [Compiler] (http://wixtoolset.org/documentation/manual/v3/overview/candle.html) |
+ A scandalously defective page about the compiler, called `candle`. |
+ You'll need to run `candle.exe -h` to see anything about its command line options. |
+- WiX |
+ [Linker (light)] (http://wixtoolset.org/documentation/manual/v3/overview/light.html) |
+ |
+ |
+\par Windows Installer Development Tools |
+ |
+The Windows Installer Development Tools are a set of tools for manipulating MSI and other Windows Installer files. |
+Microsoft has delivered these tools in different ways in past. |
+Now they're included in the Microsoft Windows SDK, which the plugin already uses for ATL. |
+ |
+We require the tool `Msitran.exe` for the build. |
+The tool `Msiinfo.exe` displays the Summary Information of an installer file, |
+ which is useful for auditing the build process. |
+It can also be used to set properties in the Summary Information, |
+ but we're not using that feature. |
+ |
+- MSDN |
+ [Windows Installer Development Tools] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa372834%28v=vs.85%29.aspx) |
+- MSDN |
+ [Windows SDK Components for Windows Installer Developers] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370834%28v=vs.85%29.aspx) |
+ |
+ |
+\par Windows Installer Examples |
+ |
+The MSDN pages for the Windows Installer include a section of scripting examples. |
+We're using the script `emb.vbs` from this section to embed transforms. |
+ |
+- MSDN |
+ [Windows Installer Examples] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa372837%28v=vs.85%29.aspx) |
+ |
+ |
+## Building the Base Installer |
+ |
+_To write_ |
+ |
+## Building the Localized Installer |
+ |
+Understanding \ref localization is necessary for this section to make sense. |
+ |
+ |
+ |
+- installsite.org |
+ [Multi-Language MSI Packages without Setup.exe Launcher] (http://www.installsite.org/pages/en/msi/articles/embeddedlang/) |
+ The original page that documents the automatic application of embedded language transforms. |
+ First written by Andreas Kerl at Microsoft Germany and then translated into English. |
+- GeekTieGuy |
+ [Create a multi-lingual / multi-language MSI using WiX and custom build scripts] (http://www.geektieguy.com/2010/03/13/create-a-multi-lingual-multi-language-msi-using-wix-and-custom-build-scripts/) |
+ Someone else's build process using the same information. |
+ |
+\par Generating a Language Transform |
+ |
+The only way of generating a language transform is to use the moral equivalent of a `diff` tool. |
+This requires two complete MSI files. |
+One of them is the default-language MSI; the other is a single-language MSI. |
+For reliability, we generate a transform based on the full MSI, including all the payloads, |
+ which means the single-language MSI needs all the payloads as well. |
+This is a lot of I/O for the build, but there's no way of cutting corners here, |
+ at least not without writing a fully custom tool to generate transforms directly. |
+ |
+The `Msitran.exe` tool is used to generate the transform. |
+There's an equivalent WiX tool, but it has a defect that makes it unsuitable for us; |
+ it omits some elements in the generated transform. |
+ |
+- MSDN |
+ [Msitran.exe] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370495%28v=vs.85%29.aspx) |
+ |
+ |
+\par Embedding Language Transforms |
+ |
+Once we have an MST file, we need to embed it into an MSI file. |
+The tool we're using is a Visual Basic script `emb.vbs`, provided by Microsoft. |
+Its arguments are an MSI file, an MST file, and the name of the substorage (directory). |
+It's a short script that utilizes the Automation interface of Windows Installer. |
+ |
+The tool `Msidb.exe` might have been used for this purpose, |
+ but it lacks a command line option to specify the name of the substorage. |
+ |
+Another script `WiSubStg.vbs` was used to embed transforms in the original installsite.org page. |
+It accomplishes the same result as `emb.vbs`, though it's longer and does more. |
+The name of this other script, though, makes a useful search term. |
+ |
+- MSDN |
+ [Embedding Customization Transforms as Substorage] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa368351%28v=vs.85%29.aspx) |
+ Source code listing for `emb.vbs`. |
+- MSDN |
+ [Msidb.exe] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370083%28v=vs.85%29.aspx) |
+- MSDN Windows Installer Scripting Examples |
+ [Manage Substorages] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa369793%28v=vs.85%29.aspx) |
+ Documentation on the script `WiSubStg.vbs`. |
+ |
+ |
+*/ |