Posts Tagged ‘msi’

MSI error 1904 and 1905

These Windows Installer errors are related, 1904 is for modules registering (usually during an install) , 1905 is for modules unregistering (usually during an install).

This will display an error along the lines of

Windows Installer Error 1904
Module [2] failed to register. HRESULT [3].

This can be resolved by removing the entry for [2] from either/or the ISSelfReg and SelfReg tables. There’s some further information on appdeploy.

Read Full Post »

I read about MSIFASTINSTALL with great hope that it would reduce installation times as documented in Alex Verboon’s article. Sadly this hasn’t been my experience. I decided I’d test a sequence of installations including Flash Player, Access Runtimes, Reader, QuickTime, Java 6, Silverlight and Shockwave on Windows 7 RC. There were also some other non msi installations.

My average time for 2 runs without MSIFASTINSTALL was 7 min 29 secs, 3 runs with MSIFASTINSTALL=7 was 8 min 3 secs and 2 runs with MSIFASTINSTALL=1 was 7 min 47 seconds. I would have loved to have seen this speed up a few installs, but sorry to say – not for me!

Read Full Post »

Java 6 Runtime installations will automatically upgrade older Java 6 version through the beauty of the msi upgrade table. However, if you need to install a specific Java version, Sun has some documentation.

Basically run the setup.exe with the parameter STATIC=1 and the install will generate a different msi that will install a standalone version. You can then use your standard installation of other versions (extracted or otherwise) for a different update version.

Read Full Post »

When I came across this error with an installation, I found that the issue was with a resource of the package. The Callwisepatch resource size was 3584 and had an <Unspecified> file name. This wasn’t what I expected, so I checked another msi which had the file size as 8256 and a file name of [WisePath]\stub\wisepatch.dll. I updated the file name to this and recompiled the msi – issue gone.

The moral of the story – don’t be scared to check your resources

Read Full Post »

In looking for a way to retrieve the ProductCode from an MSI I came across this. Two important points: One, this uses the windows installer object and can be queried using SQL effectively, Two, the different parameters for opening the database can be found in the MSDN, but I found 2 worked better than 0.


Function GetMSIProductCode(msi) ' Return the Product Code from a given msi
 On Error Resume Next
 If msi = "" Then Exit Function End If
 Dim FS, TS, WI, DB, View, Rec
 Set WI = CreateObject("WindowsInstaller.Installer")
 Set DB = WI.OpenDatabase(msi,2)
 If Err.number Then Exit Function End If
 Set View = DB.OpenView("Select `Value` From Property WHERE `Property` ='ProductCode'")
 Set Rec = View.Fetch
 If Not Rec Is Nothing Then
 End If
End Function

Read Full Post »

Internal error 2709

If you come across this in an msi, take a look in your component table and see if there are entries there that are no longer in your install. I had this after replacing comdlg32.ocx with a merge module.

Read Full Post »