On 10/12/06, James Hawkins truiken@gmail.com wrote:
Hi,
MSI installers usually have at least two install sequencing tables, InstallExecuteSequence and InstallUISequence. If the install is run at the Full UI level, then the installer executes the actions in the InstallUISequence table in order, up to the ExecuteAction sequence. At this point, the installer starts running through the actions in the InstallExecuteSequence table. On the other hand, this test shows that some actions in the InstallExecuteSequence are run before certain actions in the InstallUISequence table. I don't know if the installer has a set list of standard actions that are run in the InstallExecuteSequence before the InstallUISequence, or what, but this test at least shows that there is at least one action, ResolevSource, that is run in the InstallExecuteSequence before other actions in the InstallUISequence. The test works like this:
InstallExecuteSequence InstallUISequence
ResolveSource 850 SetMagicKey 925 WriteRegistryValues 6000 ResolveSource 960 ExecuteAction 1300
ResolveSource (IES) gets called to set the property SOURCEDIR. SetMagicKey sets the property MAGICKEY to 1 only if the SOURCEDIR property is set. WriteRegistryValues writes a certain registry key only if MAGICKEY is set. If the ResolveSource from the InstallExecuteSequence doesn't get called before SetMagicKey, then SOURCEDIR will not be set, and SetMagicKey, and thus WriteRegistryValues, will not be called.
Changelog:
- Test the install sequence order.
*sigh* Ignore this for now. The solution is easier than all of this. Though documentation says otherwise, the SourceDir and SOURCEDIR property are set unconditionally when you run the install with MsiInstallProduct. I'll resend the tests without the ResolveSource action to show this.