다음을 통해 공유


Windows Installer (January 11, 2005)

Posted February 8, 2005

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

Introduction

Andy Q (Moderator):
Welcome to today's chat. Our topic today is Windows Installer Chat: General Q & A.

Andy Q (Moderator):
We are pleased to welcome our Experts for today's chat. I will have them introduce themselves now.

Tyler_MS (Moderator):
Hello. My name is Tyler Robinson and I am the Program Manager on the Windows Installer.

Andy Q (Moderator):
I'm Andy Quig, Communities producer and your co-moderator for today

Carolyn_MSFT (Expert):
Greetings! I'm Carolyn, a developer on the Windows Installer team. I specialize in overall architecture and patching and upgrades among other things.

Start of Chat

Carolyn_MSFT (Expert):
Q: What's the distinction between a "Small Update" and a "Minor Update"?
A: The difference between a small update and minor update is basically the ProductVersion property. In a minor update, the ProductVersion property value changes whereas it does not change in a small update. Generally we've started to equate small updates with QFE's (quick-fix engineering) and minor updates with service packs. A minor update will typically be a roll-up of previously released QFEs. In MSI 3.0, minor updates form the basis of the binary delta patching baseline chain as well as the sequencing framework.

Carolyn_MSFT (Expert):
Q: Is "Minor Update" new to 3.1? It used to be "Small Update".
A: No, both concepts have been around since Windows Installer 1.X. Both a small update and a minor update are applied in a similar fashion using a product reinstall type operation. What's new in 3.1 is a new MsiPatchMetadata property called MinorUpdateTargetRTM that lets you build a patch solely against the RTM version of the product.

Tyler_MS (Moderator):
Q: What is approximate RTM for MSI 3.1 and in form will it be available?
A: The Windows Installer 3.1 is planned to be available in the 1st half of 2005. It will be part of the Windows Server 2003 Service Pack 1 release and also available as a down-level redistributable on the same platforms that Windows Installer 3.0 is available on today. We have just released the beta of Windows Installer 3.1, and if you are interested in the Beta, please go to https://beta.microsoft.com and use the Guest ID "MSI30".

Tyler_MS (Moderator):
Q: Are there resources available for describing the process of incorporating the .NET framework installation into a WIX setup?
A: Unfortunately, there are no WiX experts on this chat. You might want to check out Rob Mensching's blog at https://blogs.msdn.com/robmen for more information about WiX.

Carolyn_MSFT (Expert):
Q: MSI 3.0 Question: How to make the Support Info of the patch different from the product (i.e. ProductName with the patch version number for display name)? Can it be done through the PatchMetadata table in the PCP file? If it can, is it possible to use prop
A: All Add/Remove Programs related information for a patch is controlled by the MsiPatchMetadata table. You can author that information post patch build process using a tool like Orca to add the table to the MSP. Or you can alternatively author the the information during patch building via the PatchMetadata table in the Patch Creation Properties (PCP) file. The properties AllowRemoval, DisplayName, and MoreInfoURL control Add/Remove Program display for MSPs.

Rahul_MSFT (Expert):
Q: In an early install I created, I marked a registry component as permanent. Now I do not want this component to be permanent. If I change it, will Windows Installer recognize that the same component is now no longer permanent and remove it on uninstall?
A: Once a component is marked as permanent, there is no way to undo it later.

Carolyn_MSFT (Expert):
Q: abce: File versioning rules are global and i can't force overwrite just a single file. Why is it so?
A: File versioning rules are global in order to have standardized and predictable behavior for installation. The best method to ensure that a file is always overwritten would be to use the RemoveFile table to remove the file. The RemoveFiles action runs before the InstallFiles action so that file will be removed before install files goes to install it. Therefore there won't be anything preventing the file from being overwritten. Other options include assigning a fake version to the file to ensure that it'll always be installed (since the file on disk will never be high enough for the fake version).

Carolyn_MSFT (Expert):
Q: "Minor Update" has never been used in the msi.chm before. Unless, of course, I'm wrong.
A: It has in some respects. Perhaps it's because it was also referred to as "minor upgrade".

Carolyn_MSFT (Expert):
Q: I guess "dates" and "grades" are the same. Right?
A: Yes. "Minor Update" == "Minor Upgrade".

Rahul_MSFT (Expert):
Q: I have a large product with approx. 11,300 files. With the MSI 2 runtime, it took me 9 minutes to apply a patch that moved one daily build to another. With the MSI 3 runtime, the patch took aproximately twice as long to run. Why is this the case?
A: Unfortunately, it is not possible to answer the question based on the information provided. In MSI3.0 for the most part we have made changes to improve performance. However, there might be something about your upgrade scenario that makes it take longer. I would encourage you to post this query in the MSI newsgroups and we might be able to help you better there.

Carolyn_MSFT (Expert):
Q: Using an UpgradeCode: The UpgradeCode is primarily used for supporting major upgrades, although small and minor update patches may use the UpgradeCode for product validation.
A: True. The UpgradeCode represents a family of products. The UpgradeCode is also an aspect of patch applicability.

Tyler_MS (Moderator):
Q: What is considered best practice for changing properties in an application like Office, for example properties available on the Tools|Options dialog tabs. Currently our people "repackage" applications like this, is this possible in a transform?
A: A transform can only modify a resource that is contained in the MSI package. Furthermore, the installation and application must be authored in such a way that they expect that information to be changed by a transform. Your best option is to consult your application vendor for guidance on how to customize their installation in the way you want.

Carolyn_MSFT (Expert):
Q: Why do you suppose "upgrade" is in the glossary, but "update" isn't?
A: Perhaps it was just left out by the technical writers.

Rahul_MSFT (Expert):
Q: Followup to earlier question re: permanent components: Will msizap remove a permanant component (or at least Windows' knowledge of the component state)?
A: MSIZap should normally remove all the relevant product registration and hence the knowledge of the component's permanent state.

Carolyn_MSFT (Expert):
Q: Followup on the performance of patching. What should I look for in an MSI 3 verbose log to tell me if I'm getting the flyweight path for my patch?
A: Look for "Windows Installer will attempt to optimize this patch to the fullest!". However, you can still see that and not have flyweight patching. It's best to look for the converse where MSI turns off flyweight -- "Windows Installer is disabling patch optimizations for this install transaction"; "Disabling patch optimizations since major upgrade patch...". If you have flyweight patching, then some standard actions are optimized out. You'll see "Action %s is optimized out" in the log file when it's truly occurring.

Tyler_MS (Moderator):
Q: Is there an approved way of setting the install path of a product using a transform - e.g. I want to override the install path of several microsoft .msi files that install to e.g. Program Files\Microsoft Speech SDK 5.1 to obey the windows guidelines
A: The install path for a product can vary from MSI to MSI. Many installations use the property INSTALLDIR but this is not always guaranteed. You'll need to contact your application vendor for information on how to customize the installation. Generally speaking, you can usually configure the installation directory through a transform or on the command-line.

Rahul_MSFT (Expert):
Q: MSI 3.0 Question: Is the PatchSequence table in PCP optional? Patch is built and installed successfully without the table.
A: Yes, the PatchSequence table in the PCP is optional. However, note that if you do not provide the PatchSequence table in the PCP file, the sequencing information will automatically be generated for you. For most sequencing, the automatically generated information is sufficient. However, if you need to do more complex SKU management, you might want to override the automatic generation of sequence information for the patch. In this case, you would use the PatchSequence table in the PCP.

Carolyn_MSFT (Expert):
Q: I have a large product with approx. 11,300 files. With the MSI 2 runtime, it took me 9 minutes to apply a patch that moved one daily build to another. With the MSI 3 runtime, the patch took aproximately twice as long to run. Why is this the case?
A: Depends on what is happening in the patch. It could be some processing overhead in detection. It'd be interesting to have the log file data since that would include timestamp information on when actions started and finished. You could at least determine where the bottleneck is. I'd suggest submitting this via the MSI 3.1 beta site or in the newsgroup with additional details.

Tyler_MS (Moderator):
Q: We use Radia to deploy MSI packages, and Radia uses HTTP to distribute MSIs. I will be asking HP Novadigm as well, but what factors make an MSI package incompatible with HTTP installation?
A: Windows Installer packages can be run over https:// ... Please see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/downloading_an_installation_from_the_internet.asp for more information.

Andy Q (Moderator):
For those new to the chat - Our topic is Windows Installer Chat: General Q & A. We're about 20 minutes in, so keep those questions coming!

Carolyn_MSFT (Expert):
Q: How to edit the summary information stream for patches? The patch i created always shows "Windows Installer Patch" when i hover the mouse over .msp file.
A: That's the standard creation data for the patch. You can open a MSP with the 3.0 version of Orca (available from the psdk download site -- download the Windows Installer XPSP2 version). Then use the View->SummaryInformation option to view and edit the summary info data. Note that you could also use the wisuminf.vbs script to alter summary information data as well.

Tyler_MS (Moderator):
Q: Is there a product available that makes reading the log file a little easier yet?
A: The windows Installer SDK contains WILOGUTIL (https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/wilogutl_exe.asp) There are also several 3rd party tools for assisting in the analysis of Log Files.

Carolyn_MSFT (Expert):
Q: Is there an example to demostrate how to create external user interfaces for the installation that uses MSI?
A: Yes. In the Windows Installer documentation on MSDN, consult the topics on the "MsiSetExternalUI" API as well as "Handling Progress Messages Using MsiSetExternalUI", "Parsing Windows Installer Messages", and "Monitoring an installation using MsiSetExternalUI". As a side note, the Visual Studio .NET setup installation uses external UI for its setup UI.

Rahul_MSFT (Expert):
Q: Are there any plans to implement simple string manipulation "natively" in MSI; specifically, I need to write a directory value into the registry without a trailing backslash, such as [SystemFolder] to "C:\WinNT\System32". How can I do that now without a CA
A: At the moment, there are no plans to provide this type of functionality natively via an MSI.

Hem_MS (Expert):
Q: More on patch performance: the flyweight path is the fastest possible path for a patch, yes?
A: That's correct. When applying a fly-weight patch Windows Installer skips most of the unnecessary actions, thereby fastening the process even further.

Carolyn_MSFT (Expert):
Q: MSI3.0: The following commands documented in the “What's new in Windows Installer Version 3.0) fails to remove the specified patch. It removes both the patch and the product: Msiexec.exe /I <{product code}> MSIPATCHREMOVE=<{patch code GUID}>. Why?
A: Did you use "/qb" or "/qn"? Seems like you might have gone to full UI and then additionally included features to remove -- and end up removing all of the features as well. To see what actually occurred, generate a verbose log file. The InstallValidate action dump will contain the info about feature and component action states.

Carolyn_MSFT (Expert):
Q: I have a number of components that are 'versioned' but not in the traditional DLL style - e.g. CHM files etc. What is the best way of making sure these are updated during an upgrade of the software?
A: Normally this should update just fine as unversioned files. Just make sure your MsiFileHash table is updated correctly. Tools like wifilver.vbs and msifiler.exe in the Windows Installer SDK can do this automatically. The only time where you can potentially run into trouble is if the user has modified an unversioned file (in that way the creation date and modification dates differ). If that's the case, you can use the RemoveFile table to remove the file first (RemoveFiles runs before InstallFiles) so that it'll be updated always.

Andy Q (Moderator):
For those new to the chat - Our topic is Windows Installer Chat: General Q & A. We're about halfway in, so keep those questions coming!

Tyler_MS (Moderator):
Q: So with Office for example, I'm sort of screwed because the installer doesn't let me "choose the defaults" that I really want. This is precisely why our people repackage rather than transform. How about direct editing of the MSI...
A: Office contains a Custom Installation Wizard as part of the Office Resource Kit. https://office.microsoft.com/en-us/assistance/HA011362781033.aspx

Rahul_MSFT (Expert):
Q: After applying a patch to e.g. the office admin image on the network and selecting redeploy in the group policy editor, each machine seems to update the software locally, but then sticks at the applying software stage and does not succeed. Any ideas?
A: Unfortunately, with the information provided, it is not possible to diagnose the problem. It will require more investigation to get to the bottom of such a problem. I would encourage you to post your query to the MSI public newsgroups and someone should be able to help you / point you in the right direction.

Rahul_MSFT (Expert):
Q: Follow-up to String Manipulation Question: please consider this to be a feature request. There is a large number of applications (IBM Rational products, for example), which fail if encounter an unexpected backslash in the registry.
A: Yes, we will keep it in mind. Thank you for your suggestion.

Carolyn_MSFT (Expert):
Q: Does leaving things out of the documentation improve confusion?
A: Feedback is always welcome. If you see something missing from the documentation or is unclear, use the feedback link at the bottom of the documentation page on MSDN to submit your issue. The information that is submitted is regularly reviewed to make improvements. Usually at the bottom there's a "What did you think of this topic?" link that you can use to send direct feedback to the technical SDK doc writers.

Tyler_MS (Moderator):
Q: Thanks Tyler, I know about the Office Installation tools, I guess it was a bad example. Let's pick something like Diskeeper which is installed via MSI. How can I set the defaults for the program during install if the installer doesn't ask? Transform, CA?
A: If what you want to customize is a value written by the MSI, then you should be able to customize it through a transform. However, you really should consult the application vendor for guidance on how to customize their install. For example, there is no guarantee that a value written by the installation might be changed by the application at run time.

Carolyn_MSFT (Expert):
Q: I'd like to use the same patch for all product locales, so i didn't change the product code for each localized product. But still the English patch fails to update our french product because the Media Table has the last sequence number different in each
A: How did you set up your Patch Creation Properties (PCP) file? In some cases, the sequence number shouldn't matter do to the conflict management code used by Windows Installer. Any new files added by a patch must be added at the end of the sequence. Generally you'd have each localized product listed in both the TargetImages and UpgradedImages table. That will ensure that there are multiple sets of transforms that are created -- one set per language. In such a case, I'd also make sure that your ProductValidateFlags, specified in the TargetImages table, also include language validation. The installer will then choose the appropriate transform set that matches the localized product that's installed.

Andy Q (Moderator):
Please do not resubmit questions, doing so is a violation of the chat code of conduct. Our experts are working as fast as they can.

Tyler_MS (Moderator):
Q: Any ideas for this error code in an Office Verbose log, -2146234297 Translates to : 0x80131047 Not readily found in existing cases....
A: This question is really outside of the scope of this chat. You might want to check out the Office Knowledgebase or contact your support contact for assistance.

Hem_MS (Expert):
Q: MSI 3.0 Question: Is there any harm if the StreamRef column of the Patch table is removed?
A: The column Patch.StreamRef_ is a foriegn key to MsiPatchHeaders.StreamRef. It is supported by Windows Installer 2.0 and above. The primary purpose of these columns is to overcome the stream name limitation of OLE streams. If the File table key of the file that your patch updates is longer than 62 characters patch headers can not be generated in the Patch table. This warrants the use of Patch.StreamRef_. Please check the documentation on MsiPatchHeaders table for more information.

Carolyn_MSFT (Expert):
Q: Should the Merge module GUID be changed everytime when its contents change? What is the recommended approach to patch files that are in a MSM?
A: As a merge module (MSM) provider, the ability to service the MSM is quite difficult. Patching of files provided in an MSM requires that each consumer of the merge module consume the new updated version of the MSM into their setup and then build a patch for their setup. That's one of the problems with MSMs -- the servicing story. If you can tightly control consumers, it's easy because you have a known list of individuals to contact to build patches. If you know all of the products that consumed the MSM, it's possible to create a single MSP that can update all of the products at once. If you're authoring for MSI 3.0 sequencing, then the MSM should be controlled by its own family. The answer to the MSM GUID is based upon the ModuleSignature table information. If the MSM is backwards compatibile, then the GUID need not change and you can simply update the version.

Andy Q (Moderator):
We have about 20 minutes left in today's chat. Thanks for all the questions!!

Carolyn_MSFT (Expert):
Q: Is there a simple way to ask user permission before creating a shortcut in WiX
A: Most likely the best route would be to have a checkbox in your UI that is tied to a property. Then have the shortcut authored in a component that is conditionalized on the property for creation. For Wix specific questions, you're best bet is the wix related forums on sourceforge.net.

Rahul_MSFT (Expert):
Q: Does MSI3.0 / 3.1 include a system folder property for CommonData - e.g. All Users\Documents so that installing a program for all users installs data to that folder instead of PersonalFolder ?
A: There is no system folder property for CommonData. However, if it is a viable option, you might want to consider using CommonAppDataFolder (All Users\Application Data) which is also available with earlier versions of MSI.

Carolyn_MSFT (Expert):
Q: I didn't use /qb or /qn. Went through the GUI and select Remove. Is that the problem? Must patch uninstallation be done throught the /qn or /qb option?
A: In general patch uninstallation should happen in /qn or /qb UI. It's not required though. However, your UI for full-UI scenarios should be aware of patch uninstall and ensure that properties are set appropriately. When you go through and select Remove you automatically triggered a product uninstall as the REMOVE feature control property was set to ALL. This is sort of similar to patch install. If you're full UI isn't aware of patch application, then you can end up preventing files from being updated if someone uses the selection tree control to alter feature states.

Carolyn_MSFT (Expert):
Q: How to do this 'the proper way' for a generic install routine using an MST to deploy using Group Policy.
A: Not sure what you mean by "proper way". If you're attempting to deploy Office, then use the Office Customization and Installation Wizard to build your transform. For generic setups, authoring tools such as Wise and InstallShield and a large number of others (see www.installsite.org) author transform creation tools. You should also read in product-specific documentation that might discuss what is customizable for the product and what isn't. Group Policy has full support for adding the customization transform -- depending on which version of the deployment tools you are using you may have to use advanced setup to actually provide the transform.

Tyler_MS (Moderator):
Q: Is there an easy way to set the Read Only flag etc. for a FOLDER that is created by Windows Installer (as opposed to a file)
A: The LockObject column of the LockPermissions table can point to a file, registry key, or *folder*. So, yes, you can do this.

Hem_MS (Expert):
Q: For a patch which does not add new files but only modifies existing files, do I need to create an entry in the ImageFamilies table of the PCP?
A: Yes. ImageFamilies table summarizes the "families" of upgraded images. Basically, upgraded images that belong to a family typically share the same set of files and result in a CAB file that contains the binary diffs between the target-upgrade images. This CAB is eventually carried inside the created MSP. Please check the example @ https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/a_small_update_patching_example.asp that walks you through the entire process.

Rahul_MSFT (Expert):
Q: MSI 3.0 Question: A Patch is displayed as a sub node of the product in Add/Remove. How is this relationship reflected in Registry? (I could not locate the patch info in the Uninstall key (The product is there)). Thanks.
A: The format of MSI's configuration information stored in the registry is for the installer's internal use only and should not be examined directly since its format may change without notice. The recommended approach is to use the published enumeration APIs to gather this information. This is what Add / Remove programs does as well.

Carolyn_MSFT (Expert):
Q: Is there a way to find out what the current locale is during an installation, without writing a CA?
A: The installer sets the following properties: UserLanguageID and SystemLanguageID. The former is the current userss language. The latter is the default system language.

Tyler_MS (Moderator):
Q: Is there a way to set conditions so that LockPermissions only applies if a checkbox or feature is selected. I would like the user to be able to install and allow any user to change a shared data file - but only if the installing user selects it.
A: The LockPermissions table does not contain a way to condition the application of the security descriptiors. Every file, registry key, or directory that is listed in the LockPermissions table receives an explicit security descriptor, whether it replaces an existing object or not. The installer attempts to preserve the security on objects that already exist on the system. If an object is not listed in the LockPermissions table, and replaces an existing object, the replacement gets the security settings of the object it replaces.

Carolyn_MSFT (Expert):
Q: When does the Installer repair only the component and not the whole feature?
A: Repair is based upon the installer descriptor which consists of product + feature + component. The repair will include the feature to which the component belongs -- however it may not affect any other components of the feature if they are in a good state.

Carolyn_MSFT (Expert):
Q: What distinguishes an MSI 2 patch (MSP) from an MSI 3 patch?
A: If the patch contains the MsiPatchSequence table, it is considered a MSI 3 patch.

Tyler_MS (Moderator):
Q: Re LockPermissions table to set read only flag - I am referring to the folder properties such as RO / System / Hidden, not security.
A: You are correct. There is no "easy" way to do this. The File Table contains the ability to set these flags, but the Directory Table does not.

Carolyn_MSFT (Expert):
Q: MSI 3.0 Question: After building the existing MSI 2.0 project with MSI 3.0, system hangs during uninstallation. See log below. A hanging log:
Action ended 15:02:51: ISSetupFilesCleanup. Return value 1.
Action start 15:02:51: ISCleanUpSuccess.
1: Shutting down the PRC server...
1: RPC server shut down.
Action ended 15:02:52: ISCleanUpSuccess. Return value 1. A successful uninstallation would finish with the log below: 1: RPC server shut down. Action ended 15:02:52: ISCleanUpSuccess. Return value 1. Action ended 15:02:52: INSTALL. Return value 1. 1: MsiServerStartup ends Action ended 15:04:18: ISMsiServerStartup.
A: Looks like the culprit is most likely a custom action, but it's unclear. Use the '!' option for logging to flush each line to the log file. It'll make the logging process slower, but it helps with diagnosing hangs. I'd also try narrowing down the setup to exclude the custom action.

Rahul_MSFT (Expert):
Q: Are there any plans to better support nested setups in the next versions. This is/was really not really in the mainstream of the MSI creators. I never understood why. Especially for component based programming it would be fine to have an own setup for each
A: There are no immediate plans for making any changes to nested installs. However, plans are under consideration for future versions to improve the experience of installing multiple MSIs as a single application.

Tyler_MS (Moderator):
Q: Consider it a feature request to apply Conditional installation flags to the LockPermissions table - e.g. only apply/merge the security if the condition is true. This way data files can be set to modify for all users based on the ALLUSERS property.
A: Thank you. Also, if you have other feature requests please send those to MSIWISH@MICROSOFT.COM

Carolyn_MSFT (Expert):
Q: We have more than 20 features and everytime i click on Next on the "CustomSetup" dialog, it takes anywhere between 2 to 5 mins. to go to the next dlg. I have CAs to process the selection state of the features. Why is MsiSetFeatureState taking so long?
A: Altering the feature state can trigger some re-costing calculations. This is because MsiSetFeatureState affects not only the feature that you specify, but also the feature's children and the components that belong to the feature.

Andy Q (Moderator):
We've got about 5 minutes left, last questions!

Tyler_MS (Moderator):
Q: "There are also several 3rd party tools for assisting in the analysis of Log Files." What are they? What should I "search" on?
A: Off the top of my head, I know that both Wise and InstallShield include tools with their software packages that assist in the analysis of log files. I'm sure there are several others as well.

Hem_MS (Expert):
Q: Is it possible for me to "focus" MSI on updating a single file with standard properties when applying a patch vs. using REINSTALL=ALL?
A: Windows Installer 3.0 onwards if a patch is 1. NOT a major upgrade patch 2. NOT updating Run From Source features, 3. NOT down revving files (using 'a' option), 4. NOT pre-3.0 patch that sets REINSTALL property - only files updated in the associated MSP are updated.

Tyler_MS (Moderator):
Q: Thank you all at Microsoft and others around the world. These chats are important and they always help. -Wayne
A: We appreciate you joining us for this chat.

Carolyn_MSFT (Expert):
Q: Why does MSI set [SourceDir] even though I didn't authored a ResolveSource action in the sequences? This can only be seen if verbose logging is activated and it happens before the top action (ADMIN for example) is started. It isn't set for Repair.
A: On first-run, SourceDir will always be set. It's required for an install. If the Installer needs access to the original source , it will resolve the source -- thus causing the SourceDir property to be set. It's unclear exactly what you intend by your question -- but the SourceDir property is set when the installer resolves the source... either out of specific request by the setup (via the ResolveSource action) or by necessity (the Installer has to access the source).

Tyler_MS (Moderator):
Q: Are there any plans to release a Win9x version for MSI 3.0?
A: There are no plans for any future versions of MSI to be released for Win9x.

Tyler_MS (Moderator):
Q: Entries in the Lockpermissions table overwrites current security settings of an object (file, registry, folder, etc). Is this the same behavior in MSI 3.0 (Can we append instead of overwrite?)
A: There are no behavorial differences between MSI 2.0 and MSI 3.0 in the LockPermissions Table.

Andy Q (Moderator):
Great chat people! tons of questions, this is what we want. Look for the transcript "soon" at https://msdn.microsoft.com/chats/transcripts/default.aspx

Andy Q (Moderator):
Thanks for your participation, the experts are working on the questions still but please do not submit anymore at this time! Thanks!

Carolyn_MSFT (Expert):
Q: MSI 3.0 Question: In MSI 2.0, public assembly files in GAC are only available during commit action (they are not avaiable during differred action). Is this changed in MSI 3.0?
A: No, it's not changed in MSI 3.0. The reason for the requirement is to preserve transactional install behavior (rollback, etc.). Thus there's a two-phase process for installing assemblies. They are not fully committed to the GAC until the install completes at the end of InstallFinalize. Therefore only commit custom actions and post-InstallFinalize custom actions can access assemblies that were installed to the GAC via the setup.

Tyler_MS (Moderator):
Q: Thank you all at MS too! Please continue the Installer chat in the future.
A: Our normal chat time is 11 AM Pacific on the 2nd Tuesday of each month. Please check out the MSDN Chat Calendar at https://msdn.microsoft.com/chats/ for more information.

Hem_MS (Expert):
Q: In the ImageFamilies table of a PCP, if the patch is not adding files, do I leave the MediaDiskID and FileSequenceStart (and other) values blank? Are file sequence numbers 'used up' even tho new files are not being added?
A: MediaDiskId column is optional, you can leave it blank and PatchWiz will do the job for you. FileSequenceStart is also optional. File sequence numbers are "used up" even when the files are just updated in the sense that, the FileSequenceStart should not overlap with the biggest sequence number in the File table of the original MSI.

Carolyn_MSFT (Expert):
Q: How does a component's action state get set to Null when its requested state was Local? I had this happen during an upgrade and the log gave no specifics as to why this component's action was Null.
A: Most common reasons: (1) component was disallowed for installation via a keypath check (2) condition on component evaluated to false (3) component was marked to be never overwrite (4) keypath is a windows protected file

Hem_MS (Expert):
Q: How does a component's action state get set to Null when its requested state was Local? I had this happen during an upgrade and the log gave no specifics as to why this component's action was Null.
A: May be the component was marked as disabled or as never overwrite. Searching the log for the component's name or ID would help you.

Carolyn_MSFT (Expert):
Q: When using MSI installations on Terminal Server, do you see any need to remove advertising support (i.e. remove keypaths, install file associations, ProgIds etc as registry entries)? I would expect that Shadowkey replication would occur before MSI healing
A: No, you don't need to remove advertising support. And yes, the integration between MSI and Terminal Server should result in the proper replication with each new TS user session.

Tyler_MS (Moderator):
Q: Are there any MSI preview labs with Admins/Developers like some vendors have for their installation products?
A: There has been an MSI "Technology Preview" in the past. There is not one planned in the near future, however. Your best way to stay on top of the latest information is to attend these chats as well as enroll in the beta program.

Tyler_MS (Moderator):
We're about out of time. Thank you everyone for joining todays chat. Just a reminder that the Windows Installer 3.1 Beta is now available from https://beta.microsoft.com and the Guest ID is "MSI30". Also, any feature requests you might have for the Windows Installer can be sent to MSIWISH@MICROSOFT.COM ... (We're also finishing up the last few questions now.)

Top of pageTop of page