As a workaround, the install files can be manipulated to correct the file sequence and .cab inclusion. The goal is to place the new files from the newest revision of the .MSI into their own .cab file. This workaround will have to be performed every time the .wsi is compiled, because the File, Media, and .cab configuration will be overwritten when it's compiled. Because of this it is not recommended that you perform this workaround and generate a patch until you have your current installation is finalized.
To finish this workaround you will need Orca, the standard Windows Installer database editor, and MakeCab.exe. Both are available with the Windows Installer Software Development Kit (SDK).
For the purposes of the workaround example, Setup1.0.msi will be the previous version .MSI; Setup1.1.msi will be the new version. Newfile1.exe will be the new file added to Setup1.1.msi.
Build a new .cab file
The first task will be to build a new .cab file that contains the new files added to your installation
To make a .cab file that contains a single file, do the following:
Execute: MakeCab.exe “c:\path\to\Newfile1.exe” “c:\path\to\Newcab.cab”
To make a .cab file that contains multiple files:
Add the new .cab to the .msi
Finished example:
Name |
Data |
w1.cab |
[Binary Data] |
m1.cab |
[Binary Data] |
Newcab.cab |
[Binary Data] |
Resequence files and adjust media settings
Example:
File |
Component |
… |
Sequence |
OldFile1.exe |
OldFile1.exe |
|
1 |
OldFile2.exe |
OldFile2.exe |
|
2 |
NewFile1.exe |
NewFile1.exe |
|
3 |
Comctl32ocx.3207D1B4… |
Global_Controls… |
|
4 |
Even though NewFile1.exe was added last, the sequence is incorrect. NewFile1.exe should have a sequence number greater than the merge module file, Comctl32.ocx.
Finished example:
File |
Component |
… |
Sequence |
OldFile1.exe |
OldFile1.exe |
|
1 |
OldFile2.exe |
OldFile2.exe |
|
2 |
NewFile1.exe |
NewFile1.exe |
|
4 |
Comctl32ocx.3207D1B4… |
Global_Controls… |
|
3 |
DiskId |
LastSequence |
… |
Cabinet |
… |
1 |
3 |
|
#Cabs.w1.cab |
|
2 |
4 |
|
#Cabs.m1.cab |
|
This means that the file with sequence 1 through 3 is stored in w1.cab, and the file with sequence 4 is stored in m1.cab.
DiskId |
LastSequence |
… |
Cabinet |
… |
1 |
2 |
|
#Cabs.w1.cab |
|
2 |
3 |
|
#Cabs.m1.cab |
|
3 |
4 |
|
#Cabs.Newcab.cab |
|
Applies To
Wise for Windows Installer 6.x
Wise Installation Express/Studio 7.x
Wise Package Studio 5.x, 6.x, 7.x