Visual Studio Setup

Installation and containerization of the Visual Studio family of products

Latest posts

Jan 31, 2006
Post comments count 0
Post likes count 0

Developer Division Servicing Site Launched

Heath Stewart

Servicing a large product like Visual Studio or a side-by-side component like the .NET Framework is no small task and is full of challenges. This blog currently describes some of those challenges in hopes of helping others avoid some of the same problems.Today, a site dedicated to servicing Visual Studio and the .NET Framework has launched on MSDN with more information on our processes, roadmaps to future patches like service packs and QFEs, and more.See http://msdn.microsoft.com/vstudio/support/servicing/ for details.It also aggregates the Developer Division Customer Product-lifecycle Experience team's blog...

Jan 26, 2006
Post comments count 0
Post likes count 0

Setup.exe Bootstrap Sample and APPVER

Heath Stewart

On an internal alias - which inspires many of my blog entries - someone wasn't able to run the sample bootstrap executable setup.exe, found in the Samples/SysMgmt/Msi/Setup.exe folder in your Platform SDK installation root. The error was "setup.exe is not a valid Win32 application" when run on Windows 2000 but the sample worked fine on Windows XP. Right away it would seem that something in the PE headers of the sample something is wrong. Take a look at part of the dumpbin.exe output: Because the subsystem version is 5.01 the executable will run on a minimum operating system of Windows XP. So how did ...

Jan 23, 2006
Post comments count 0
Post likes count 0

Why is My Feature Advertised?

Heath Stewart

If you're patching a feature or features of a Windows Installer package and see that a feature you know to be installed locally is now advertised, look for the following in your Windows Installer log:MSI (c) (B8:C0) [12:00:00:000]: SELMGR: ComponentId '{01234567-89AB-CDEF-0123-456789ABCDEF}' is registered to feature 'FeatureA', but is not present in the Component table. Removal of components from a feature is not supported! MSI (c) (B8:C0) [12:00:00:000]: SELMGR: Removal of a component from a feature is not supportedThe reason is documented is Changing the Product Code in the Windows Installer SDK: components c...

Jan 23, 2006
Post comments count 0
Post likes count 0

Suppressing Console Windows for Custom Actions

Heath Stewart

If you have authored a custom action into your installer package and are annoyed by the console window that always pops up when the custom action runs, it's because the custom action executable is running under the console subsystem.When you link your object files with the VC++ linker you can specify the subsystem using the /SUBSYSTEM switch. If you're using the C# or VB.NET compilers the /target switch allows you to specify which subsystem to use for the executable. However you specify the subsystem or however it's determined depending on which entry point you use, you shouldn't use the console subsystem for c...

Jan 23, 2006
Post comments count 0
Post likes count 0

Waiting to Install

Heath Stewart

If you've ever tried to install a Windows Installer package and had returned (1618) it's because the Windows Installer execution server is already processing another install, administrative install, or advertisement action. That is, Windows Installer is processing the InstallExecuteSequence table, the AdminExecuteSequence table, or the AdvtExecuteSequence table, respectively. This is because right before the action is run in the server context Windows Installer grabs the _MSIExecute mutex. Take a look at the log below: === Verbose logging started: 10/3/2005 14:26:48 Build type: SHIP UNICODE 3.01.4000.2435 Cal...

Jan 20, 2006
Post comments count 0
Post likes count 0

Windows Live Favorites Now More Useful

Heath Stewart

Microsoft announced Windows Live back in November. Since then I've used several of the new services, including my favorite - Windows Live Local (previously MSN Virtual Earth in an earlier incarnation). One service to which I just couldn't see any benefit yet (I know, it's still beta) was Windows Live Favorites.Years ago Netscape 4 had a feature I loved - roaming profiles. You could set up a directory for WebDAV access or a proprietary module for Apache - if I recall correctly - and your profile would be downloaded when the browser suite opened and uploaded again when the browser was closed. No matter where I went...

Jan 18, 2006
Post comments count 0
Post likes count 0

Error 2262: Not Necessarily a Fatal Error

Heath Stewart

Someone wondered if the following found in a Windows Installer log was indeed an error:MSI (c) (A8:A0) [14:38:51:427]: Transforming table Error.MSI (c) (A8:A0) [14:38:51:427]: Note: 1: 2262 2: Error 3: -2147287038Recall from Diagnosing Installation Errors that field 1 in the second line indicates the Windows Installer error. If you look that up in the Windows Installer Error Messages reference documentation you'll see that error 2262 (in English) reads, "Stream does not exist: [2]. System error: [3]." If you format the message using the fields in the second log line you'll read, "Stream does not exist: Error. Sys...

Jan 16, 2006
Post comments count 0
Post likes count 0

Guidelines for COM Interoperability from .NET

Heath Stewart

Below is a running list of posts with guidelines for exposing types from .NET to COM clients. I make occasional updates and will add newer updates to the top of this list. This article serves as an easy reference point with a user-friendly URL to which others or I can refer.

Jan 16, 2006
Post comments count 0
Post likes count 0

Guidelines for COM Interoperability from .NET (Update 1)

Heath Stewart

Sometime back I posted Guidelines for COM Interoperability from .NET where I enumerated several practices to follow when exposing types from your managed assemblies to COM. This update is to provide some additional information with the release of the Microsoft .NET Framework 2.0 as well as correct one statement I made with regard to inheritting interfaces when those interfaces are exposed either as automation interfaces (inheriting from ) or dual interfaces (inheriting both from and ).Previously I mentioned that you should declare class interfaces explicitly and implement them as the first interface on your class...