Initial Problem: A need to provide users with a single setup.exe that will install the MSI Engine before the software.
Initial Solution: Build the installer with Setup.exe options switched on.
No problem, right? We're already agreed on WI2.0 (and ISD7.01) because it can install that and the software with only one reboot.
Well, yes, unfortunately there is a problem in our case...
We need for the user to be able to "drop" certain custom support files (eg. CLIENT32.INI) into the same directory as the installer which then get copied over the basic ones in the pack at install time (we have a nice DLL to do this for us).
Setup.exe creates the MSI in a temporary directory and at no point in the MSI can you establish where the original setup.exe (and thus the support files) is located.
After some digging, we came to the conclusion that the best answer to this problem was to use the Setup.exe found in ...\Installshield\Developer\Redist\Language Indepandant\i386
This is very undocumented, but in theory it should install an MSI engine file from pretty much anywhere... it's own directory, the internet, whatever... then go ahead and run your installer from the local current directory. From there, we can pick up the support files we need. Perfect... or at least, so you'd think.
We've set it up (so to speak), despite the lack of documentation so that it at least runs. SETUP.INI looks like this...
---SETUP.INI---
[Info]
Name=OurProductName
Version=9.99
DiskSpace=2887;DiskSpace requirement in KB
[Startup]
SuppressWin2k=Y
CmdLine=
Product=OurProductName
PackageName=OurProductName.MSI
MsiVersion=2.0.2600.0
EnableLangDlg=N
[Languages]
count=1
default=409
key0=409
---SETUP.INI---
We also have the 0x0409 pack of error messages from the redistributable area copied to the same directory.
Problem is that if we run this, rather than upgrading the Engine as expected, it throws a message saying "Windows® Installer xxx Found. This is an older version of the Windows® Installer. Click okay to continue."
[xxx = the full version number or even blank ("") where there is no Windows Installer installed]
Well, duh? I know it's an older version... that's why I want you to install this lovely shiny new one I have for you.
If I drop the version inside the SETUP.INI to a figure less than the MSI Engine installed on the PC, it happily ignores the Engine and continues okay.
Of course, when it gets to the .MSI file, it then fails because the Schema is set to 200. I can drop that to 100 and it will install fine - apart from a few ICE Warnings for tables that I don't use, this is a viable option, for now at least but it doesn't resolve the problem if there is NO MSI engine found on the target PC.
This is killing me. I thought the original problem and solution were going to be a cinch here but each problem leads to the next and I've finally hit a dead end.
There must be an option I'm missing from the SETUP.INI file, does anyone know what? Or even where the heck I can find some proper documentation on this? ####, I'll take guesses to be honest right now. :-/
(Edited by pdriley at 3:41 pm on Nov. 26, 2001)