Visual Studio Setup

Installation and containerization of the Visual Studio family of products

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 however, and conditions ...

ARPSYSTEMCOMPONENT and Sequencing

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. ...

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 supersede them and...

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 ...

Working with ARPSYSTEMCOMPONENT

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 unless ...

A Reason for ARPSYSTEMCOMPONENT

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 invoked...

The Dangers of ARPSYSTEMCOMPONENT

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 that ...