Make sure:
Name(String[32] NOT NULL) | Data(Binary) |
Name(String[32] NOT NULL) | Data(Binary) |
cabinetname | {binary data} |
DiskId | LastSequence | DiskPrompt | Cabinet | VolumeLabel | Source |
... | ... | ... | #Cabs.cabinetname |
Use msi2xml with the -b option to create the XML version of the MSI package, with the binary streams saved to external files. Make sure you set the folder where the binary streams are saved equal to "." (the current folder). For example, if myinstaller.msi is saved in C:\installers\ then do:
C:\>cd installers
C:\installers>msi2xml -b . myinstaller |
Create a document called "mkfile_short.txt" listing all your cabinets and the files included in each cabinet, making sure the files are listed under the cabinets in the same order they are saved in. For example:
Sample mkfile_short.txt:
m1.cab =
m2.cab =
|
Here's a Perl script that does this for you if you have msidb.exe in your path (msidb.exe comes with Platform SDK Components for Windows Installer Developers).
If the MSI is repackaged from a setup executable, then also provide a document detailing where all the files can be found on a machine with the software installed. All paths (except system paths such as C:\WINNT\) should be relative paths. This file is especially valuable if multiple files with the same name are installed on the destination machine in different folders. For example:
Sample mkfile_long.txt:
m1.cab =
m2.cab =
|
If you used Wise for Windows Installer to generate the MSI, then the script from step 3 above can also be used to generate this file.
Create a new SourceForge project for your installer and check the XML into your new project's CVS repository. Check in also any binary streams that are part of your installation, such as custom actions, but not part of the software you're installing.
Insert commented lines in your mkfile_*.txt to indicate where binaries streams that are not part of the software you're installing can be found. Use # at the beginning of every comment line.
Email msi-repackaging-admin@lists.sourceforge.net with the name of your SourceForge project and we'll add your project to our list. Be sure to provide the following info:
Binaries in merge modules are normally saved in MergeModule.CABinet. msi2xml does not currently extract that, so you must manually do it.
C:\>cd installers
C:\installers>msidb -d myinstaller.msm -x MergeModule.CABinet |
Place all the binary files as well as the cabinets in the same directory as the XML file and run:
C:\>cd installers
C:\installers>xml2msi myinstaller.xml |
You must manually add MergeModule.CABinet into the MSM by doing:
C:\>cd installers
C:\installers>msidb -d myinstaller.msm -a MergeModule.CABinet |