gordonf
Posts: 9
Joined: Sat Apr 09, 2005 2:34 am

A complex source media problem

This might be beyond the capabilities of Windows Installer, never mind Advanced Installer, so don't be afraid to say so.

Last August I released a modified version of Quake II 3.21 to demonstrate how to fix older programs to work on locked-down installations of Win2K and XP. I went to AI after having trouble with the bundled MSI IDE in Visual Studio NET 2002.

I wanted to install original content from the Quake II CD-ROM and Mission Pack CD-ROMs in the installer. I ended up writing a custom action to accomplish this, but for a while I grappled with the problem of specifying different components from different source media.

The problem was that the MSI package included some components, and other components were on the original Q2 CD-ROMs. There didn't appear to be a way to say, "find component X in the included CAB, find component Y on the media labelled 'quake2' in install\data\baseq2, find component Z on the media labelled 'q2mp1' in data\all," etc.

I get the impression from the MSI documentation that it's possible to specify different sources for different components. Is there a simple way to say, "this file is internal, this file is external," and then fill in the details with Orca (MSI table editor) afterward? Does MSIEXEC bother checking volume labels on CDs and other media, or does it instead rely on key files on the media?

This is a pretty complex problem. I solved it using an installed custom action that prompted for and copied from the appropriate media, but I'd like to streamline this somewhat. There may be more projects like it coming.
PGP key (0x0AFA039E): http://www.pan-am.ca/consulting@pan-am.ca.asc
Prevent problems before they happen and help others avoid bad design.
http://www.pan-am.ca/antiwindowscatalog/
UdreaMihai
Posts: 90
Joined: Wed Mar 23, 2005 8:13 am

Hi,

The AI doesn't yet supports what you want.

Windows installer support this and you can accomplish what you want using the Orca msi editor. You can specify different sources for different files and different source for different components if you group all the files from the component on the same source. For documentation see Directory table, File table and Media table from Windows Installer Platform SDK.

Best regards,
Mihai
Udrea Mihai
Advanced Installer Team
http://www.advancedinstaller.com
gordonf
Posts: 9
Joined: Sat Apr 09, 2005 2:34 am

OK, the problem remaining then, is how to pack some files with the MSI and how to specify source CDs for the rest.

I guess I could create the MSI using AI, specfying all files as external and pretend they're all in one place, maybe breaking them up into Mission Packs (as Features). Then put together a CAB file with the files I want to include and change the source paths for those files to point to the CAB, and the rest to point to the appropriate CDs. Finally merge the CAB with the MSI using MSIDB or something.

Pretty complex, admittedly.
PGP key (0x0AFA039E): http://www.pan-am.ca/consulting@pan-am.ca.asc
Prevent problems before they happen and help others avoid bad design.
http://www.pan-am.ca/antiwindowscatalog/

Return to “Common Problems”