Thanks in advance,
Chris
http://sourceforge.net/projects/wix/
There's also a very helpful tutorial on:
http://www.tramontana.co.hu/wix/
This lets you create MSI installers from a relatively simple XML
definition, and the toolset will do the rest.
Hope that helps,
Claude
1.) Create your MSI and test it so it runs and installs as "normal",
installing files from the hard drive.
2.) Change the sequence numbers in the File table to be the order
(1...n) you wish the files to appear in the CAB file
3.) Run the script from the MS SDK package: >cscript WiMakCab.vbs /R /C
/U /E <YourMSI>.msi <FileName> (for <FilenName>, use no extension, the
script will add the CAB extension)
Whenever I ran it the first time, I got the error "Warning, cabinet
stream not found in package: <FileName>.CAB". This happens because the
script first tries to delete the old embedded CAB file from the MSI
package, which of course doesn't exist because it is the first run.
Subsequent runs on the same MSI package will not display this message.
Thanks for the help...I will definently look into WiX for future
use...seems like there should be a GUI frontend for WiX, but I could
only find "In Progress" projects.
Chris
You can use my (free) MAKEMSI tool or many others listed at the
InstallSite (http://www.installsite.org/pages/en/msi/authoring.htm).
Bye,
Dennis Bareis
I ran the script as you said, but it did not put the CAB file into my MSI
installer; all it did was create a .ddd file that you can use to make a CAB.
What do I do now?
Thanks.
Mike
'-- parameters are MSI file path, path to CAB file, name of CAB file
'-- stream in MSI database. If the stream already exists it will be
'-- overwritten.
Sub ReplaceCAB(MSIFile, CabPath, StreamName)
Dim WI, DB, View, Rec
Set WI = CreateObject("WindowsInstaller.Installer")
Set DB = WI.OpenDatabase(MSIFile, 1)
Set View = DB.OpenView("SELECT `Name`,`Data` FROM _Streams")
View.execute
Set Rec = WI.CreateRecord(2)
Rec.StringData(1) = StreamName
Rec.SetStream 2, CabPath
View.Modify 3, Rec
DB.Commit
Set Rec = Nothing
Set View = Nothing
Set DB = Nothing
Set WI = Nothing
End Sub