12/31/2009 3127 views
I recently had to package an application that has several different dependencies, namely .NET 2.0, MSXML4 and 6, and the C++ 2005 distributable. I needed to ensure that the installation failed if any of the prerequisites were not present on the PC at the time of install.

Since I'm using Wise Package Studio, it was easy to set the .NET 2.0 installation requirement with the "System Requirements" portion of the Installer Editor. For the remainder of the prereqs, I used a combination of system search (AppSearch, Signature tables) and the LaunchCondition table to build my launch conditions, which worked great. I also had to make sure that my AppSearch came before LaunchConditions in both the InstallExecuteSequence and InstallUISequence, so that the system search was done before the prereq checking. I also had to build a condition so that the LaunchConditions action would only be run if the product was not installed, because if any of the prereqs were removed while the application was still installed, any attempt to repair or remove the installation will fail citing the launch conditions.

To me, this outlines a pretty basic method of prequisite checking within the MSI.

I'm wondering if there are any better ways to accomplish prerequisite checking natively within the MSI, specifically with any custom actions that you all have used, or other methods. Since SystemSearch is pretty robust, I'm not sure there is, but figured I'd query my peers.

Thanks in advance all.
0 Comments   [ + ] Show comments


Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

All Answers


I am sure the process you followed is 100% acceptable and proved. I do not see any other options better than this. I have managed many applications this ways and enjoyed the success.

thanks for sharing your best practice with the team.

Answered 12/31/2009 by: WSPPackager
Senior Purple Belt

Even we follow the same process of using AppSearch, Signature and the LaunchCondition tables for dependency check.
To avoid LaunchCondition executing during Repair and Remove add Not Installed Condition to LaunchCondition action in InstallExecuteSequence table
Answered 01/03/2010 by: rakesh.kumar
Senior Yellow Belt

If you are a "repackager" rather then a developer then these pre-requisites should be documented and distributed / installed by the system management tool.
As a system Administrator you should know what is on the target machine.... and therefore distribute the pre-requisites before the package itself.
Answered 01/05/2010 by: jaybee96
Red Belt

Remember, the discussion here is about methods of prerequisite checking within an MSI, not how to deliver prerequisites.

The system administrator should know what is on the desktops and provide all prerequisites as needed, but multiple fail safes are always a good idea.
Answered 01/05/2010 by: elgwhoppo
Senior Purple Belt