Installer Chat: General Discussion

Posted November 21, 2003

Chat Date: September 16, 2003

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

Introduction

Moderator: JPerry (Microsoft)
Greetings, everybody, and welcome to today’s Chat; Windows Installer Chat: General Discussion I'll now ask the hosts to introduce themselves...

Host: Carolyn (Microsoft)
Hello! I'm Carolyn Napier and I've been a developer on MSI for a little over 4 years, specializing in patching and upgrades, digital signatures and overall architecture. It's great to be chatting with you all today.

Host: Chris (Microsoft)
Greetings! I'm Chris, a developer on the Windows Installer Team. I've been working on MSI for about five years, with my areas of focus including custom actions, security, validation, source resolution, and overall architecture.

Host: KenWong (Microsoft)
Hi! My name is Ken and I am a tester on MSI team.

Host: Hem (Microsoft)
Hi, I am Hemchander, a developer on the Windows Installer Team. My areas of focus include installer performance and patching.

Host: omsharma (Microsoft)
Welcome! My name is Om Sharma. I am the Program Manager for the Windows Installer.

Moderator: JPerry (Microsoft)
And I'm John Perry, MVP Lead for Windows SDK, among others.

Start of Chat

Moderator: JPerry (Microsoft)
Let's get started! Fire away with your questions for our hosts.

Host: omsharma (Microsoft)
Q: Has the beta for MSI 3.0 started?
A: MSI30 Beta1 is underway. We are still accepting nominations.

Host: Chris (Microsoft)
Q: I have several questions. One, I have a user that upgraded from W98 to WXP. He gets an Internal Error 1606 whenever he tries to run an install. Any ideas?
A: The first thing to check would be to see if the product has any conditionalized components or features based on the platform. Some packages using conditions such as Version9X and VersionNT is component or feature conditions without marking the conditions to re-evaluate every time in case the OS upgrade happens. If that is the case, MSI may end up with 9X features installed for XP, something that can cause a little confusion. Another thing to look at is the possibility of the per-user\per-machine portions of the app being broken. Win98 does not have true user profiles, although it does allow multiple users to exist. When upgraded to XP, this dichotomy may cause some problems if the app itself doesn't understand why the registry is a bit off and tries to repair a CLSID or feature that doesn't exist. The log files and event log may help you diagnose this problem.

Host: Carolyn (Microsoft)
Q: one of my client is installing the MSI over the SMS and for some reason the installation fails or is only partial.. as it;s a major upgrade.....when he is trying to start the software next time...it;s running the self-repair mode.
A: The first thing to check would be the Application Event Log. It will indicate whether or not the original installation succeeded or failed. For the always running in self-repair mode, the application event log is a big help here as well. You'll want to look for MsiInstaller eventlog warnings (IDs 1001 and 1004) that indicate that detection failed. With MSI 2.0, it will also include the actual resource that failed detection. Using that information plus the package (and possibly verbose logfiles -- for auto-installs use the logging policy), you can try and track down the cause of the repeated installation.

Host: Hem (Microsoft)
Q: I installed the office installer from Windows Update, it then refused to let me install anything. What went wrong?
A: You need to get some information to help resolve this issue. You need to look at the event logs for any event messages from MsiInstaller. Also, you could get the installation logs to help isolate the issue. Check out the Windows Installer documentation on how to generate logs using policy at https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/windows_installer_start_page.asp

Host: Carolyn (Microsoft)
Q: There seem to be problems around companion file being used for a non-versioned file. This configuration will try to reinstall nonversioned file. Any chance of fixing it changing the behavior
A: What in particular is the problem? A nonversioned file using a companion file will be installed if the REINSTALLMODE property includes the options ("o" or "e") and the companion file's version is equal to a file already on the machine. See <https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/file_versioning_rules.asp> for more information. If this isn't what you want, can you clarify why you want the behavior changed?

Host: Chris (Microsoft)
Q: Regarding XP and System Restore: It would seem that MSI's "rollback" provides the same functionality as System Restore on XP. Thus it seems redundant for MSI to set a restore point prior to installing. Can you explain the differences between the two?
A: Rollback is a "in-transaction" robustness feature. If the install fails partway through, rollback puts the machine back at the state before the install started. Once the operation (install, etc) completes, the rollback data is removed and you can't rollback anymore. (i.e, once the product is installed, the way to remove it is to uninstall, not to roll back the install). System Restore is a post-transaction robustness feature. You can't restore to a checkpoint during an install, because the checkpoint isn't actually set until the install is finished. However once the operation completes, you can use System Restore to go back to the pre-install state at any point, even 3 years down the road.

Host: Chris (Microsoft)
Beyond a theoretical level though, System Restore is machine-wide. It takes the entire machine back to the specified point. Rollback only deals with the particular install opereation. Rollback is a dry-erase marker on your whiteboard, system restore is a sledgehammer through the wall. Both are very important and useful in their respective scenarios.

Host: Hem (Microsoft)
Q: When will Orca run completely under Win 2003?
A: If you mean running validations in Orca, then the answer is that, the upcoming SP1 for Win 2003 will let you run validations.

Host: KenWong (Microsoft)
Q: Is it possible to create one installation which can be run in german, english, russian and maybe chinese? (again: with which product)
A: You could apply language specific information during first time install within a transform file (.mst) to a msi package.

Host: Carolyn (Microsoft)
Q: Windows Installer 2.0 does not support installing from an https url, correct? However, there is a version that ships with Windows Server 2003 which does, I believe. Is it possible to load that version of Windows Installer on WinNT, Win2000, etc?
A: Yes, the original version of 2.0 (2.0.2600.X) does not support installation from https. Beginning with Windows Server 2003, https is supported because of the availability of winhttp which is what is now used by MSI for internet downloads. The upcoming release of MSI 3.0 (targeting Windows XP, Windows Server 2003, and Windows 2000 SP3+) may provide support for https if winhttp is available on the machine. Note that it will no longer support the gopher and ftp protocols. Are URL based installations prevalent in your organization?

Host: Carolyn (Microsoft)
Q: windows installer will support hebrew?
A: Windows Installer already supports hebrew. The list of languages supported by MSI can be found in the MSDN documentation. Try <https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/localizing_the_error_and_actiontext_tables.asp>.

Host: Carolyn (Microsoft)
Q: Is there any way to keep the registry settings from overwriting previous values if they exist?
A: The msidbComponentAttributesNeverOverwrite attribute on the component containing the registry settings that includes a registry keypath is a possible solution for you. Consult the documentation on the Component table for more information on how this attribute works.

Host: Hem (Microsoft)
Q: What would happen if the files or the application that I'm currently upgrading is already running?
A: The InstallValidate action notifies the user if one or more files to be overwritten or removed are currently in use by an active process. Commonly, a system reboot is required. To learn more about Windows Installer's handling of system reboots check Windows Installer documentation.

Host: Carolyn (Microsoft)
Q: Is there a script around that can actually copy the MSI..to the local machine and thenrun the install from there.
A: Windows Installer provides a scripting interface for installation operations. You can use the automation interface to install a product. MSI is a local node agent and only works on the local machine. You can of course provide a path to a package on a network or URL for MSI to execute an installation from. If you want to invoke an installation on a remote machine, you need to use a deployment tool or possibly WMI. The MSI automation interface is documented on MSDN.

Host: Carolyn (Microsoft)
Q: does anyone know where I could find instructions on how to deploy visual studio .net 2002 through active directory
A: Typically the VS .NET team would provide deployment instructions for the product, so if they were available, I would imagine that you would possibly find it on the VS .NET site of www.microsoft.com. Outside of that, the complexity of the VS .NET install makes it a bit difficult to deploy using Intellimirror. VS requires an installation of the .NET framework first. Because Intellimirror doesn't allow chaining of the deployment, you would possibly use a ZAP file for the deployment (in essence, a legacy style deployment) unless you deploy the Framework and VS .NET separately such that the Framework is installed first.

Host: Carolyn (Microsoft)
Q: what exactly does ADDLOCAL=ALL do? does it not copy the files locally and then install?
A: ADDLOCAL=ALL basically instructs the installation to install all features to the local disk. This means that in the majority of the cases, all files will be installed locally on the machine. A component marked as msidbComponentAttributesSourceOnly will still only be installed as run from source even if the ADDLOCAL setting specifies ALL.

Host: Carolyn (Microsoft)
Q: How can I tell what the full path is/was for a web installation?
A: Windows Installer supports installation from a URL where you specify the path as a URL, i.e. "msiexec /i https://www.example.com/mypackage.msi /qb". The Installer will download the file from the URL location and register the installation source as the URL. Querying the INSTALLPROPERTY_INSTALLSOURCE property in the majority of cases should provide you the original installation source location via the MsiGetProductInfo API (or use the automation equivalent ProductInfo property of the Installer object). If you included your .msi as an anchor tag reference on a html page to the .MSI package, MSI will register the source as the temporary internet cache location since that will be the path provided by the browser.

Host: Carolyn (Microsoft)
Q: is it possible to create update-installation? A User should go online and just install/download what he/she needs (depending on his/her version of the product). like them to download the whole EXE-file for example.. .but maybe only 2 new reportfiles if the exe is up-to-date
A: The patch recommendation is actually a good one for update. The thing that you have to remember is that the MSI database contains information about the state of the product which during product repairs is used to determine what the resultant files should be. The MSP provides both the updated file and the necessary transforms to ensure that the in-memory view that the Installer has of the product matches what the resulted machine state should be. If a subsequent repair is able to update the resources to the correct versions if the MSP was provided.

Host: Hem (Microsoft)
Q: When a feature is set to be installed locally, but a component within that feature is conditioned to not be installed the component's "installed" state is still set to local. How do I use WI to accurately detect if a component is local?
A: You could use MSI API. For example, MsiGetComponentState() can be used to determine the current installed state of a component and the action taken during the installation.

Host: Carolyn (Microsoft)
Q: Did you miss my follow up question. I was asking why a versioned companion file is handled differently from the associated non-versioned file. If the companion file is not being reinstalled or upgraded, it should not touch the non-versioned.....file also. The version rule and behavior should be global
A: The non-versioned files with companion files are treated in the same manner as indicated in the documentation. In that case, the behavior is "global". However, it is slightly different from versioned file behavior. Unversioned files by themselves are treated differently in a few cases (including when used as component keypaths -- not recommended) in order to ensure that the unversioned file is installed.

Host: Carolyn (Microsoft)
Q: but don't you think that this companion file behavior is in turn requiring access to the original source and messing up things. So is it not worthwhile to think about changing that behavior
A: The MsiFileHash table should be used to prevent unnecessary file copies for unversioned files. This should be respected for companion files as well.

Host: Carolyn (Microsoft)
Q: Not really we are talking about two types of files a versioned - no MsiFileHash, and non-versioned - which has no a MsiFileHash entry. So it should be different!
A: I'm not sure that I'm completely understanding the scenario here that you have. You may want to follow up in the newsgroup. An unversioned file that uses a companion file for file versioning is still subject to the MsiFileHash check to prevent unnecessary file copy. In general, you should ensure that all unversioned files have file hashes in the MsiFileHash table (whether they use companion files or not).

Moderator: JPerry (Microsoft)
This has been a GREAT chat. Thank you to everyone. Unfortunately, it is time to go.

Moderator: JPerry (Microsoft)
OK...bye everyone -

For further information on this topic please visit the following:

Newsgroups: microsoft.public.platformsdk.msi

MSI Transcripts: Read the archive of past MSI chats.

Website: Visit the Microsoft Windows Installer site.

Top of pageTop of page