This tip was submitted to the VS.NET Info Center by member Chris Disley. Please let other users know how useful it is by rating it below. Do you have a tip or code of your own you'd like to share? Submit it here.
Since the Windows Installer Object Model does not work properly when used with .NET, I've found that the easiest way to control the installation, etc. of MSIs is to use the API provided in msi.dll.
Const ERROR_SUCCESS = 0 Declare Function MsiInstallProduct Lib "msi.dll" Alias "MsiInstallProductA" (ByVal szPackagePath As String, ByVal szCommandLine As String) As Long Sub InstallMSI(ByVal remove As Boolean, ByVal MSIFile As String) Select Case remove Case True If MsiInstallProduct("MSIFileName", "REMOVE=ALL") = ERROR_SUCCESS Then MsgBox("OK") Case False If MsiInstallProduct("MSIFileName", "property1=value1 property2=value2") = ERROR_SUCCESS Then MsgBox("OK") End Select End Sub