06/27/2012 6890 views

Hi there,

Does anyone know of or have any code that I can use in a Deferred in System Context, Asynch - No Wait custom action that I can use to check if the MSI engine is ready to run another installation.

You may have seen my post about chaining a 64 bit installer to a 32 bit installer.  Well, that won't work for us... 

http://blogs.msdn.com/b/heaths/archive/2009/07/03/installation-sequence-restrictions-for-multi-package-transactions.aspx .

So, what I'm doing now is actually installing a 64 bit installer with our 32 bit app.  On a 64 bit machine, a Custom Action widget compiled for x64 fires and installs/removes on uninstall the 64 bit pieces.  All seems to work OK, but at times I get the 'another installation is in progress' message when the 64 bit installer runs.

What I've done just to get a build to QA was to add a 30 second pause in the Custom Action widget which allows the main or calling install process to clear.  Clunky, I know so I want to replace this with some code to monitor the Installer engine to see when it clears for my second installation.

I found this, but I'm not a C or C# guy so VB.NET code or any other information would be greatly appreciated...

http://blogs.msdn.com/b/heaths/archive/2006/01/23/516454.aspx .

Thanks in advance!!


Answer Summary:
0 Comments   [ + ] Show comments


All Answers


I created a custom action widget that fires Asynch-No Wait.  It monitors msiexec processes until the instance count is <=1.  The widget will then fire the 64 bit install package installed via the 32 bit main install.

It may be clunky, but it seems to get the job done.

Answered 07/04/2012 by: Superfreak3
2nd Degree Black Belt