Wednesday, May 28, 2008

Merge Modules not installed during major upgrade

This is one of the problems that I have encountered many times.
The installation contains one or more merge modules. Installation works absolutely fine if fresh install is performed. But if previous installation is upgraded using major upgrade, merge module files are not installed. I have also encountered this issue with .NET assemblies to be installed in GAC. After performing the install, if you repair the product, merge modules/ .NET assemblies are installed.
The cause is placement of RemoveExistingProducts action after CostFinalize action. What really happens is that Costting process sees that the files are already installed, it marks those components not to be installed again. Its a mystery that why it happens for few files only. After costing is complete, RemoveExistingProducts action uninstalls the old product including .NET assemblies/ merge modules. Now when new install is performed, those components are marked not be installed, so final result is that those files are missing. When repair is performed, install will see those files missing, so those files will be put back again.
Solution is really very simple. Just move the RemoveExistingProducts action in Execute sequence before CostInitialize action. Thats it.

Wednesday, April 9, 2008

Logging of MSI Installation

Its very important to log the installations as it provides a very good mechanism for troubleshooting the install failures. A registry can be set which results in all msi based based installs to create a log file.

The registry is HKLM\Software\Policies\Microsoft\Windows\Installer.
Create a key with name logging with its value set to voicewarmup.

The explanation of these values is as follows:

v - Verbose output
o - Out-of-disk-space messages
i - Status messages
c - Initial UI parameters
e - All error messages
w - Non-fatal warnings
a - Start up of actions
r - Action-specific records
m - Out-of-memory or fatal exit information
u - User requests
p - Terminal properties
+ - Append to existing file
! - Flush each line to the log

Sunday, March 23, 2008

Objective of this blog.

Well, this is the first post for this blog. I have created this blog to post the different problems with their solutions that I have encountered during the software installations development.
We know that there are many resources available then what is the need to do so. I felt its need so that I have all information organized at one place that is searchable also. And posts contains only those problems for which I have found solutions. So if you find the problem you are facing on this blog, it is certain that you find solution too.
Secondly to reply to posts especially in macrovision community, I can simply provide the link instead of typing the entire content.
I hope that blog meets its objective.
Any comments/suggestions/correction related to the posts will be highly appreciated.