Windows Installer Properties and Conditions

In many languages, some variables can take a value of different types but with the same meaning. Variants in script, for example, can take 0 or false; or they can take any non-zero value and true. The following JScript example prints “Same”. if (0 == false) WScript.Echo(“Same”); The same is not true of Windows Installer… Read more


Sequencing Windows Installer patches is typically straight forward but when the original product install or a previous, non-superseded patch defines ARPSYSTEMCOMPONENT as 1 in the Property table a custom supersedence plan is necessary to support writing Add/Remove Program registry keys correctly with patch supersedence and sequencing in mind. The Dangers of ARPSYSTEMCOMPONENTUsing the ARPSYSTEMCOMPONENT Windows… Read more

A Better Way of Working with ARPSYSTEMCOMPONENT

Just when you thought the series on ARPSYSTEMCOMPONENT was over, I present to you an improved plan for supporting custom supersedence so that you can ship effectively superseded patches and still support N-1 patches, which are patches that apply to the RTM or a previous Service Pack, but are produced after the SP that should… Read more

Supporting our Lifecycle Policy with ARPSYSTEMCOMPONENT

To conclude the series of the problems with ARPSYSTEMCOMPONENT, we will extend the workaround to support setting ARPSYSTEMCOMPONENT=1 to support Microsoft’s lifecycle policy on support N and N-1, where N would be a service pack, and N-1 would be the previous service pack or the RTM. Since we’ve essentially already developed our own sequencing feature… Read more


Continuing the series on the perils and necessity of ARPSYSTEMCOMPONENT, it’s time to explain one solution for having your cake an eating it too. If you have determined that you need to define ARPSYSTEMCOMPONENT=1 in your product RTM, remember that your product nor patches will not show up in the Add/Remove Programs (ARP) control panel… Read more


Last week I blogged about how ARPSYSTEMCOMPONENT is dangerous, but there are reasons for using it. Two reasons ARPSYSTEMCOMPONENT is defined in the product MSIs for the .NET Framework 2.0 and Visual Studio 2005 is to localize the Add/Remove Programs (ARP) entries, and to change certain registry values so that the external UI handler is… Read more


Back in March I wrote about the dangers of using the RunOnce and Run registry keys. This is another post to help you avoid some other pitfalls. The ARPSYSTEMCOMPONENT property in Windows Installer does not actually do anything directly to your installation — Windows Installer doesn’t even check for it. What does happen, however, is… Read more