Even with all of Microsoft’s concerted efforts to get older MSI packages to run on Windows 7, there are still some challenging ones.  When these occur during the UI sequence of the package, there are several things you can try to get the package to install.

One common problem involves VBScript custom actions that run during the UI portion of an MSI.  One frequent ones involves a custom action embedded by the Wise for Windows Installer product.  In this case the interactive message is “Fatal Error Installation ended prematurely because of an error.”, examination of the verbose MSI log shows “Error 2896:  Executing action WiseNextDlg failed.”  For the Source “MsiInstaller” the event log shows Event ID 11708 “Installation operation failed.” and 1033 “Installation success or error status: 1603.”

image

Many sources mention re-registering using “regsvr32.exe vbscript.dll”, however, this does not always work on Windows 7.  (BTW, be SURE to always register this DLL from an elevated command prompt).

Method #1

This particular vbscript simply advances the UI each dialog box (rather than using MSI’s built in dialog support).  So if you know you want the software on your system you can simply run the package with a reduced user interface to skip this custom action.  This also works for similar custom actions that are: a) only part of the UI, b) do not need to run to get a successful install.  In some rare cases a reduced UI is not silent enough (see and Method #3 below).

 

A completely silent install will suppress the UAC dialog and your package will fail – but a reduced UI will allow the UAC prompt.  You can try the reduced UI using “MSIEXEC.EXE /i package.msi /qr+”.  If this does not work, you may have more than one bad custom action, so Method #3 outlines the next approach in getting the package to run.

Method #2

A second type of problem involves custom actions in the User Interface section of the package that try to make changes to secure resources.  In order to handle these types of packages you must elevate to an administrator BEFORE you ever start the package.  This way even the user interface portion of your package has administrator rights.  You will still see the package user interface in case there is something in it that you need to use to configure the install.

image

This tip accomplished by elevating a command prompt and then typing the following MSI command line “MSIEXEC.EXE /i package.msi”

Method #3

Simply combine Method #1 and Method #2 .  This can take care of a variety of non-compliant custom actions.

image

Running a package with Method #3 is virtually identical (in regard to to custom actions and security) to how your packages will run under a software distribution system.  There is no need to resolve problems that might occur in an interactive install if the package will only run silently under a service.