다음을 통해 공유


Windows Installer

Posted September 8, 2004

Chat Date: July 13, 2004

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

Introduction

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

Moderator: KenM (Microsoft)
I'll now have the hosts introduce themselves.

Host: Carolyn (Microsoft)
Hello! I'm Carolyn Napier, a developer on the Windows Installer Team. I just reached my 5 year milestone with the team.

Host: Rahul (Microsoft)
Welcome. I am Rahul, the development lead for MSI. I look forward to chatting with you.

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

Host: trobinson (Microsoft)
My name is Tyler Robinson and I am the new Program Manager for the Windows Installer.

Host: Hem (Microsoft)
Hi, I am Hemchander, a developer on the Windows Installer Team.

Host: OmSharma (Microsoft)
Hi, I am Om Sharma. Old Program Manager for the Windows Installer .

Host: YuanQing (Microsoft)
Hello! I'm YuanQing, a tester on the Windows Installer Team.

Moderator: KenM (Microsoft)
Ken McGrath here, Web and Communities Producer.

Start of Chat

Host: Carolyn (Microsoft)
Q: It would be nice to have more examples on how to access the data from the various Dialog boxes. This information seems hard to find. - Thanks!
A: Can you be more specific? What type of data are you trying to access from the dialog boxes? Are you trying to dynamically populate like a listbox control or combobox control from a custom action are you looking for something else?

Host: Carolyn (Microsoft)
A: It sounds like you are trying to control the UI from VB or possibly drive an install using the UI. Is that correct? Note that in an authored dialog (using the Control and Dialog tables) with a radio button group control, the radio button is associated with a property. The property is then set to the chosen selection (and the initial value of the property controls the initial radio button selection).

Host: Carolyn (Microsoft)
Q: For example, I would like to ask the user a question and give a list of radio button options. How is this information returned to VB?
A: It sounds like you are trying to control the UI from VB or possibly drive an install using the UI. Is that correct? Note that in an authored dialog (using the Control and Dialog tables) with a radio button group control, the radio button is associated with a property. The property is then set to the chosen selection (and the initial value of the property controls the initial radio button selection).

Host: Carolyn (Microsoft)
Q: I know this must seem like a simple question, but I really have tried hard to find this. Maybe if I had the Pro version of VS.NET there would be more information.
A: Visual Studio .NET is not a fully capable authoring tool environment for building MSI packages (even the Pro version). The UI dialogs that you can add are somewhat limited. However, you can always take the generated MSI package from Visual Studio NET and then use the Orca tool in the Windows Installer SDK to customize it. The https://www.installsite.org website also has a comparison of various authoring tools and their features.

Host: OmSharma (Microsoft)
Q: wjvii : I have joined late so this question may have been asked already. When do you expect to release version 3.0?
A: Windows Installer v3.0 (MSI3.0) is part of the WindowsXP/SP2 release. MSI3.0 will also be available as a redist for Win2k/SP3, WinXP (RTM & SP1) and Win2k03/RTM. The redist packages will be available shortly after the WinXP/SP2 release. We expect to deliver MSI3.0 to release in late CY-Q3/2004.

Host: Rahul (Microsoft)
Q: Are there any plans to enhance the handling of unversioned files? Currently Windows Installer will replace an unversioned file at the target location if the modify and create timestamps are identical, whether or not the file included in the install is actually newer than the target file.
A: Unfortunately, by their very nature, it is not possible to determine if an unversioned file is newer or older. So we use versioning rules that ensure that user modified files don't get overwritten. You can use companion files to get this functionality. We had looked at other ways to ameliorate the issues, but there are not immediate plans to change anything in this area.

Host: Carolyn (Microsoft)
Q: Does Installer Support MS Office Applications for Distribution?
A: The Microsoft Office products, since Office 2000, use Windows Installer as the setup engine for installation. Distribution of software is a separate layer on top of the Windows Installer. SMS, Active Directory / Group Policy Software Deployment and other tools all provide those layers to allow distribution of software to remote machines. These layers interact with the Windows Installer on the client computer. More information on deploying Office can be found in the Office Resource Kit at https://www.microsoft.com/office/ork/2003/default.htm.

Host: Rahul (Microsoft)
Q: How to make registry key to be permanent on the target machine which means it will not be deleted after uninstall?
A: I wouldn't recommend leaving things behind on uninstall. But if you must do it, you could either use a custom action or a permanent component.

Host: OmSharma (Microsoft)
Q: Der-Albert_com : Q: Why has an actual JET MSI a size greater then 12 MB .... so, if you add also MDAC you have 18 MB only for Jet Engine ... it is possible to get an optimized JET msi with the actual ServicePack integrated and not as separate setups inside the msiDer-Albert_com : Off course, ein mean msm
A: Can you clarify your question - Is the issue the size of the JET msi package and the MDAC msi package. The MDAC team has started providing full MSI packages and does not plan to offer MSMs (merge modules) for redist.

Host: Hem (Microsoft)
Q: During a Major Upgrade a file whose version has not changed is being removed from the GAC. I have RemoveExistingProducts before InstallInitialize. Is this a bug? Or am I failing to do something?
A: The RemoveExistingProducts action can be placed in four different locations as has been summarized in the Windows Installer SDK @ https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/removeexistingproducts_action.asp

Host: Hem (Microsoft)
Specifically, if RemoveExistingProducts is placed between InstallValidate and InstallInitialize the old application is entirely removed. This is not an efficient placement of this action if some files of the old application will be reused.

Host: Carolyn (Microsoft)
Q: Where I can find permanent component? is it a property?
A: It's an attribute you set in the Attributes column of the Component table for the Component. The actual attribute is msidbComponentAttributesPermanent. Note that by setting this attribute, you make the entire component permanent. Therefore resources that constitute the component are not removed on uninstall. For more information, consult the Windows Installer documentation on MSDN. Try https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/component_table.asp for starters.

Host: Carolyn (Microsoft)
Q: I would like to share my concerns... A VS.Net project for installation is not good enough for Server Side customization. I mean configuring ODBC, IIS, SQL database is so painful. Is MS trying to makes it easier or we need to by Instalshield, wise, etc?
A: The setup authoring capabilities within Visual Studio .NET are designed for very simple setups. If you need more fully-featured authoring tools, then there are a number available to you. The website https://www.installsite.org offers a comparison for many of them. Additionally, Microsoft recently provided an open source XML authoring tool called WIX. WIX makes authoring setups easy and provides some built-in custom actions for configuring IIS and SQL. You can find out more on WIX at https://sourceforge.net/projects/wix/. Rob Mensching's blog site at https://blogs.msdn.com/robmen also discusses WIX in great detail (he is the project owner).

Host: Rahul (Microsoft)
Q: Comment: The creation date on certain unversioned files is meaningful to our applications. I currently resolve unversioned file issues by including a sub-install written in NSIS (Nullsoft) containing those files.
A: Not sure what you are using the creation time for. Perhaps you can elaborate?

Host: Carolyn (Microsoft)
Q: it's not a file, it a registry key that we created during installation, I haven't found any option to make it permanent. A file does have that option but not a registry key
A: The attribute msidbComponentAttributesPermanent that is set on the component in the Attributes column in the Component table will make the component permanent. Any registry keys that belong to that component will therefore not be removed when the product is uninstalled.

Host: OmSharma (Microsoft)
Q: Der-Albert_com : Q: The MDAC Install does not contain a Jet Engine .... so if my software use jet than I must supply the jet engine ... but the msm for jet has a size of over 12 MB ... in this msm are a base installation, an the service packs each windows version so that the total size of Jet Engine Support using ADO or OLEDB is about 18 MB .... plus the application so you can get easy an msi of 20-25 MB ... to much for shareware download with a modem. So it would be created if Microsoft provided an optimized msm package for the jet engine
A: We can provide your feedback to the MDAC and JET teams. Note that most product groups are being encouraged to deliver redistributable software as an msi package rather than merge modules. MSMs have known issues with regard to servicing - a flaw in a merge module cannot needs to be corrected by each consuming application.

Host: KenWong (Microsoft)
Q: What enhancements are being made regarding patch deployment? Will something along the lines of Windows Update be available to install developers?
A: The upcoming version of SUS (software update services) will support deployment of Windows Installer Patches. You can find out more on https://www.microsoft.com/windowsserversystem/sus/default.mspx

Host: Carolyn (Microsoft)
A: The current version of WIX does not support the new features of MSI 3.0. It's important to note that MSI 3.0 is all about servicing, so features in WIX that would pertain to MSI 3.0 would be in conjunction with building patches. There are plans to add this to WIX in the future. Note that WIX is an open source project, so the community can contribute enhancements to it as well.

Host: Rahul (Microsoft)
Q: I am using the creation date of unversioned files--that end users do not modify--to install updated project schema for our applications.
A: In my opinion, that approach sounds a little unreliable. You might be better off exploring the use of companion files for your project schemas.

Host: OmSharma (Microsoft)
Q: wjvii : Will WIX be integrated into VS.NET 2005?
A: At time we cannot comment about VS.NET 2005 feature set.

Host: Hem (Microsoft)
Q: I am not so worried about efficiency in this case, but placing it after InstallFinalize causes conflicts between the Upgrade and the original. Specifically an assembly registered for COM interop is having it's registry keys destroyed when the product
A: I think in that case your other option of placing RemoveExistingProducts ahead of InstallInitialize is a good one except that it results in an unmodified file to be removed during RemoveExistingProducts (REP) and is installed when the new product insta

Host: Hem (Microsoft)
If this is not what you are seeing, then it might potentially be an issue with REP which runs as a nested uninstall.

Host: KenWong (Microsoft)
Q: So are you saying we can use SUS or its replace WUS to push out msp updates to custom and third party applications?
A: A minor correction on my previous response. WUS [the next version of Software Update Services] will allow administrators to deploy Windows Installer Patches.

Host: trobinson (Microsoft)
Q: I suppose I will lose my investment if I decided to invest on a fully-featured authoring tools for VS.Net 2003 and migrate my code to VS 2005. Is it true or not?
A: Fernando -- can you elaborate, please?

Host: Carolyn (Microsoft)
Q: When you say MIS 3.0 is "all about servicing" what all do you mean other than improving the patching process?
A: MSI 3.0 has many new features designed to improve servicing of applications. A few highlights include: ability to apply multiple patches in a single transaction, patch sequencing, patch uninstall, better use of delta compression updates, support for patching elevated applications by non-admins, enhanced inventory support, full sourcelist API support, and performance improvements. Some of the MSI 3.0 information is already available on the MSDN website.

Host: Rahul (Microsoft)
Q: Can custom actions be writing using C#, VB.NET or other languages that support the .NET runtime in MSI 3.0?
A: MSI 3.0 does not provide any enhancements over MSI 2.0 as far as running managed custom actions is concerned.

Host: KenWong (Microsoft)
Q: So are you saying we can use SUS or its replace WUS to push out msp updates to custom and third party applications?
A: WUS supports MSPs but it does not allow administrators to add their own content. =You might want to look into SMS for deploying updates to third party applications..

Host: OmSharma (Microsoft)
Q: fernando : I mean. If I decide to buy the current version of Installshield, I suppose I will have to upgrade to a new installation packaged compatible with VS.Net 2005 installation requirements.
A: You will need to contact InstallShield to determine if an upgrade is necessary

Host: Carolyn (Microsoft)
Q: setup.exe in "NETFX1.1_bootstrapper.exe" has broken icon... how it is possible to pass alpha & beta testing anf release such a bug?
A: If you have an issue with the NETFX1.1 bootstrapper, I'd highly recommend reporting it to the Visual Studio .NET and/or the .NET framework team. They should be happy to address your problem. You can use one of the public newsgroups for Visual Studio or the framework. The Windows Installer team didn't provide that bootstrapper setup.exe.

Host: YuanQing (Microsoft)
Q: Is there a way to disable repair mode for specific components? For instance, if the install users to recompile that .dll, but doesn't correct versioning rules, can we ignore that file in repair mode
A: You cannot disable repair mode for a specific component. If the dll has wrong version, you need to correct the versioning of the file.

Moderator: KenM (Microsoft)
Thanks for joining us today. It's time for us to go now.

For further information on this topic please visit the following:

Newsgroups: microsoft.public.platformsdk.msi

Microsoft Windows Installer 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