Windows Installer

Posted August 25, 2004

Chat Date: June 8, 2004

Please note: Portions of this transcript have been edited for clarity

Introduction

Moderator: Eric_S (Microsoft)
Welcome to today's Chat. Our topic is Windows Installer. Questions, comments, and suggestions are welcome.

Moderator: Eric_S (Microsoft)
Let's introduce our hosts for today!

Host: Rahul (Microsoft)
Hi. I am Rahul. I am the development lead for Windows Installer.

Host: Carolyn (Microsoft)
Hello! I'm Carolyn, a developer on the Windows Installer team. Looking forward to chatting with you all today.

Host: OmSharma (Microsoft)
My name is Om Sharma, I am the Program Manager for the Windows Installer (MSI).

Host: KenWong (Microsoft)
Greetings! My name is Ken and I am a tester on the windows Installer Team.

Host: asharma (Microsoft)
Hello! I'm Ashish, a tester on the Windows Installer team.

Moderator: Eric_S (Microsoft)
Welcome everyone, let's get started!

Start of Chat

Host: Carolyn (Microsoft)
Q: How does MSI support MSDE installation ? I cannot directly call another MSI installation under my Custom Installation and Merge Modules are not advised. Can you please tell me which way I shall follow to install MSDE through my installer
A: You'll need to use a bootstrap executable to install MSDE. This is the recommended method.

Host: Carolyn (Microsoft)
Q: Thanks Carolyn. can you point me to some URL where I can get the code for the bootstrap executable ?
A: There's no standard bootstrap executable for including MSDE, but there are some bootstrap executable (plus source code) out there that will allow you to customize it for your needs. For example, the setup.exe referenced in the Windows Installer documentation on MSDN is completely customizable. You can add whatever functionality you need. Information on the bootstrap is https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/internet_download_bootstrapping.asp and you'll find a link there to the Platform SDK download where you can obtain the source code.

Host: Rahul (Microsoft)
Q: What is the recommended approach for avoiding nested installs. We have multiple applications that need to be installed as a single "suite". Is the recommended approach to write a launcher executable so the individual MSI's can be managed together?
A: Yes. The recommended approach is to use a setup bootstrapper that can orchestrate the install of the various applications.

Host: Rahul (Microsoft)
Q: The current debug logging in MSI 3.0 writes out changes in property values. Will this be included in the final release?
A: That is correct.

Host: Carolyn (Microsoft)
Q: MY second question is - I am running a SQL script (a.sql) using OSQL.exe (running this as custom action of type 3170 ). Now this custom action gets called, how will I come to know that whether the script ran successfully or failed somewhere ?
A: It generally depends on return codes. For the Windows Installer, a custom action is considered successful if it returns ERROR_SUCCESS. For more information, consult the MSDN Windows Installer topic "Custom Action Return Values". So if the OSQL.exe is written to return error codes depending on successful execution, then that will tell you success (unless of course you mark your custom action to ignore return codes).

Host: Rahul (Microsoft)
Q: Is there anyway by which I can have very precise logging in MSI . I may not want all the details that i get every time i turn on the verbose logging using MSIEXEC /L*v. Is precide logging possible using MSIEXEC flags ?
A: Yes. We offer a higher level of granularity in the type of information you want logged. Look at the command line options for msiexec @ https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/command_line_options.asp

Host: OmSharma (Microsoft)
Q: Is it possible that the release of the redistributable for MSI 3.0 will occur before XP SP2 if there are release delays in SP2? Or will a redistributable for MSI 3.0 only be released after XP SP2 has been released?
A: MSI3.0 redist will be released after XPSP2

Host: StefanKrueger (MVP)
Q: Are there plans to display a Product's Featue-Selection display in ARP?
A: Yes, many setups display the feature tree dialog when the user clicks the Modify button in ARP

Host: Carolyn (Microsoft)
Q: Can you explain the disk space requirements as it pertains to an msi installation? That is, if I have a 600MB app, what is the space required by windows installer? Someone in our org says it's double the app size for caching/rollback.
A: It depends on both the package authoring and the machine state as well as whether or not you have rollback enabled for the installation. Whenever the Installer is going to overwrite a file, it will save that file off for rollback. Additionally, the Installer will cache the installation database as well -- plus there are some transient disk costs associated with the install script and the rollback script.

Host: StefanKrueger (MVP)
Q: I am running a SQL script (a.sql) using OSQL.exe (running this as custom action of type 3170 ). Now this custom action gets called, how will I come to know that whether the script ran successfully or failed somewhere ?The log says my custom action got executed and Retunr Value is 1
A: if OSQL has no way to report success or failure, there's no way for MSi to find out, You could write another SQL script that checks for the modifications the first script made to see if it ran successfully. You could write another SQL script that checks for the modifications the first script made to see if it ran successfully

Host: Rahul (Microsoft)
Q: If we wrap multiple MSI's in a bootstrapper we still want to be able to manage the installs from the wrapper. Are there any examples of bootstrappers that manage modifications/repairs/upgrades/uninstalls of installs.
A: Depends on what you mean by manage. If you want to make sure that your bootstrapper is launched via Add/Remove programs, some apps have done this by marking the individual MSI's with the ARPSYSTEMCOMPONENT property and add a separate entry for the bootstrapper. However, if by "manage" you mean the ability to deploy the whole package via intellimirror, that's something that will not be possible since Intellimirror only supports deploying individual MSI packages.

Host: Carolyn (Microsoft)
Q: suppose I have a number of .msi's to install, bootstrapper can start off one main .msi, could you be more specific on how to use bootstapper for multiple .msi's?
A: Your bootstrapper would know which .msi's you were dealing with. It would start by installing the first one -- MsiInstallProduct("package1.msi", ""). Once that installation completes, it would then invoke the installation of the second one MsiInstallProduct("package2.msi", ""). Your bootstrapper is responsible for managing all of the installs. Because MSI does not support concurrent installations, your bootstrapper would establish the chain and install them in the order that you want.

Host: StefanKrueger (MVP)
Q: What about handling the current installation of our app out there? We release quartely updates, and I'm unclear on if we switch to msi, how these current installs by installshield would be handled by the new msi
A: MSI will not detect the older version automatically. If you want to upgrade it, you would run the uninstall of the legacy setup in a custom action or in your launcher

Host: OmSharma (Microsoft)
Q: why exactly are nested installation custom actions not recommended, what to expect if I do use them?
A: Issues with nested install- Cannot service the child product- Nested products don't support administrative install- Child MSI is controlled by the parent. Uninstall of parent is the only way to uninstall a nested product- Can't create a patch - Patching requires two administrative images

Host: OmSharma (Microsoft)
Avoid nested installs, use a bootstrapper that can orchestrate the install of various applications

Host: Carolyn (Microsoft)
Q: Iam trying to register and start a service which is both a COM class and COM server. Now here the MSI way of registering this service fails. Is there any other way to do this ?
A: Can you be more specific about how registering the service fails? What exactly is failing? Are you unable to start the service? Have you verified your service registration information?

Moderator: John_P (Microsoft)
Hi all, this is John, taking over for Eric - thanks for stepping in, Eric!

Host: StefanKrueger (MVP)
Q: Why aren't the "PackageCode" and the "UpgradeCode" listed as required properties?
A: The Package Code isn't a property, it's not set in the Property table but it lives in the Summary Information Stream, and is required

Host: Rahul (Microsoft)
Q: Is there a native way in windows Installer to install components in COM+ and configure a proxy to use the server?
A: For installing components in COM+, you can use the Complus table. However, you will need to use a custom action to configure the proxy.

Host: Rahul (Microsoft)
Q: Can you describe a little bit more about using a custom action to configure the proxy? What exactly does this mean?
A: Hmm. My mistake. I misunderstood your original question. You shouldn't need a custom action. The Complus table along with the RegisterComplus action should do it for you...

Host: Rahul (Microsoft)
A: For additional information on deploying application proxies, you can also look at https://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgdeployingapplications_65gz.asp ...

Host: Rahul (Microsoft)
A: Also, https://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgdeployingapplications_5xmb.asp has more information on deploying COM+ applications.

Host: Rahul (Microsoft)
Q: When will ARP change to show an expandable hierarchical display? XP SP2?
A: ARP in XPSP2 will have the ability to show a list of updates. For MSI apps, the updates will be listed under the corresponding application.

Host: Carolyn (Microsoft)
Q: The service fails to start at all
A: Unfortunately this doesn't provide enough information to provide a full diagnosis. For troubleshooting issues like this, try the following (1) create a verbose log file and look through that (2) verify your service registration information is correct - on NT systems, this is looking at HKLM\System\CurrentControlSet\Services. If your problem is in starting the service, adjust your package so that the StartServices action is conditionalized out. Then use the services control manager (start->run: services.msc) to try to manually start your service. If your service can't be started there, it won't be startable by MSI. Also note that services relying upon global assemblies cannot be started using the StartServices action -- especially if your installation is also installing the global assemblies. This is because the assemblies won't be available during the install.

Host: OmSharma (Microsoft)
Q: what is the channel to report found issues in msi? How to verify if something is a known bug and find any suggested work-arounds?
A: Issues with MSI3.0 Beta release should be posted to the bug database on beta.microsoft.com

Host: OmSharma (Microsoft)
For released products you can send mail to MsWish. You can get work-around help from the msi newsgroups (microsoft.public.windows.msi or microsoft.public.platformsdk.msi)

Host: Carolyn (Microsoft)
Q: I've noticed that when using the ServiceInstall table to add and remove services, the behavior is flakey. Specifically uninstalling a service won't stop a running service and if it is stopped, having the services applet open will stop the service being deleted properly. Any plans to improve this. I have run some tests using API calls and have managed to get it to work a lot more predictably.
A: This is an interesting report and not something we've heard of before. First thing is to make sure that your package is authored correctly for your service. Use verbose log files to troubleshoot the service uninstall -- verifying that the opcodes generated by the Installer include an attempt to delete your service (component to which service belongs is being removed, etc.). If you're still able to repro this after all that and have the correct authoring, post the repro to microsoft.public.platformsdk.msi and someone from the MSI team should be able to follow up at some point.

Host: Carolyn (Microsoft)
Q: Why aren't the "PackageCode" and the "UpgradeCode" listed as required properties?
A: PackageCode isn't a property in the Property table. It's a property used in the summary information stream (and it is required). That's why the PackageCode isn't listed there. UpgradeCode dates back to when Windows Installer originally shipped as the 1.0 version with Office 2000. The UpgradeCode was not required then and wasn't even usable since major upgrade support wasn't added until the 1.1 version. It is highly recommended that all products use an UpgradeCode (and note that the original MSDN documentation talked about authoring the UpgradeCode as a requirement for preparing the application for future upgrades).

Host: OmSharma (Microsoft)
Q: When is 3.0 going to be available?
A: MSI3.0 is native on XPSP2. The MSI3.0 redist for Win2k/SP3+, WinXP and Win2k03 will be avaliable soon after the XPSP2 release.

Host: OmSharma (Microsoft)
Q: Will there be a new release for Longhorn?
A: At this time we are not ready to discuss plans for the Longhorn release. But it is expected that there will be a new release of MSI to support LH specific features

Host: OmSharma (Microsoft)
Q: Will the redist for MSI 3.0 support and upgrade without requiring a reboot like the current version? I mean postpone the reboot till after the product has been installed
A: The MSI3.0 redist will require a reboot, and it will be possible to postpone the reboot till after your product install

Host: Rahul (Microsoft)
Q: What is the biggest problem you're working on with MSI 3 at the moment?
A: At a high level, the main issues we addressed with MSI 3.0 are application servicing via MSI and performance of the MSI engine. In doing so, we also needed to ensure that we do not break backward compatibility. So I would categorize these as some of the big problems we worked on for MSI 3.0.

Host: Rahul (Microsoft)
Q: Will there be a managed 'version' of WI?
A: Not at the moment.

Moderator: John_P (Microsoft)
Thanks all, it's been a great chat - we're out of time, though.

Moderator: John_P (Microsoft)
We'll also have the transcript available there in a few days.

Moderator: John_P (Microsoft)
Thanks for joining us today and thanks for the questions. It's time for us to go now. If we couldn't get to your question, please post it in one of the following newsgroups: <> for developer questions and <>

for end-user/administrator questions.

For further information on this topic please visit the following:

VB .NET Transcripts: Read the archive of past MSI chats.

Website: Visit the Management Technologies Community Center site.

Website: Visit the Microsoft Windows Installer site.

Top of pageTop of page