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   [ - ] Hide Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
Answer this question or Comment on this question for clarity



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

Please log in to comment
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

Please log in to comment
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

Please log in to comment
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

Please log in to comment