Archiv f黵 die Kategorie 'Frequently Asked Questions'

What changed in Windows Installer (MSI) in Windows Vista Service Pack 1?

Wednesday, 30. April 2008 at 12:53 am

Stefan Krueger met with us a few weeks ago for the Microsoft MVP Global Summit. Among the many topics we discussed was a suggestion from Stefan that we use the team鈥檚 blog to communicate relevant bug fixes that we make in our releases. This posting is the result of that suggestion. (Thanks, Stefan!)


 


Windows Vista Service Pack 1 was recently released and you may have noticed that the version of MSI on the system has incremented to 4.0.6001.18000. Below you will find a list of the most important issues that we addressed in Service Pack 1 and the SDK.


 


Updates that can be found in Windows Vista Service Pack 1:


 


         User Shortcuts in Redirected Start Menu Do Not Get Removed On App Uninstall


If you attempt to uninstall an application that was installed for a roaming user, you may receive error 1910 and the shortcuts from the start menu will not get removed.


         Win32_product does not work on vista when more than one per-user application is installed


Queries to the Win32_Product WMI class will if the machine has at least 2 per-user applications installed with a generic failure error.


 


Updates that can be found in the Windows SDK for Windows Server 2008:


 


         PatchWiz 4.0 ignores the IgnoreMissingSrcFile property


This property in the TargetImages Table is often used to reduce the time necessary to generate a patch, but the property was ignored in patchwiz 4.0 that was included in the Windows Vista SDK.


         Patchwiz 4.0 does not recreate the Patch table if dropped


Previous versions of patchwiz would automatically recreate critical tables (eg: Patch, PatchPackage) if they were dropped in the patch. Patchwiz 4.0 did not include this behavior, which caused failures in some cases.


         PatchWiz 4.0 does not support authoring of OptimizeCA MsiPatchMetadata property


The OptimizeCA property can be included in the MsiPatchMetadata of a MSP to restrict custom action usage and improve performance during patch application. Using this property with patchwiz 4.0 caused a build failure.


         PatchWiz 4.0 is unable to build patch for products with large number of files (>32767)


Previous versions of patchwiz supported building patches with a large number of files, but patchwiz 4.0 did not.


         Orca crashes when a transform is generated and a row is deleted from the current table


Orca crashes if the user attempts to generate a new transform and deletes a row from an existing table.  (Using Orca, select New Transform, then delete a row from a table).


         ICE30 does not display all ICE errors


ICE30 only detects a subset of the total number of SFN/LFN collisions for components that contain files.


 


[Author: Tyler Robinson]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von

Request for suggestions for updating the 1603 KB article?

Friday, 18. January 2008 at 9:09 pm

Feedback on our existing Knowledge Base article for the error 1603 is that ‘it is not very useful.’


My first thought to update the KB would be to go over the troubleshooting techniques such as verbose logging and then how to find and read the errors in the log.


Before proceeding to writing, I thought I’d check-in with the Windows Installer community via this blog.


Are there things besides troubleshooting info you would recommend get covered in the 1603 KB?


Thanks for your consideration.


[Author: Robert Flaming]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von

Tips to find Windows Installer specific product support

Thursday, 3. January 2008 at 9:22 pm

Customers have mentioned having trouble finding Windows Installer support when they try to navigate the maze of Microsoft support offerings.


If you too need to find Windows Installer specific product support, the support staff dedicated to Windows Installer can be reached by



  1. For non-Premier Service accounts, see the Professional Support site


    1. Choose an option from the “Developer” row

    2. Mention key words “Windows Installer”, “MSI”, and “Development”

  2. For Premier Service accounts, contact your Technical Account Manager

Windows Installer product support services are provided by a dedicated team of specialists inside the larger Microsoft support organization.


If you stump these specialists with a difficult or rare issue, they have an escalation path into the Windows product group.


[Author: Robert Flaming]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von

Integration Hurdles for EXE Custom Actions

Saturday, 20. October 2007 at 4:35 pm

A while back, two sets of engineers were arguing whether simply calling an EXE custom action would be good enough for Windows Installer based package.  The first team with the EXE didn’t want to do the work to move to Windows Installer but they really wanted the second team to take a dependency.  The team based on Windows Installer said the integration problems with calling an EXE was so great they would not integrate without a Windows Installer package. 


As an attempt at arbitrating the disagreement, it was requested the Window Installer team provide an analysis.  A quick paper was written to capture the analysis.  This paper has since been shared in other similar circumstances. 


In a recent instance, Microsoft blogger Aaron Stebner suggested this quick paper would make a good blog.  Here it is.  Hope it’s useful ;^)


Integration Hurdles for EXE Custom Actions


Overview and Scope


Windows Installer (MSI) architecture was designed to work best when all the installation behaviors are native to the Windows Installer. When the native behavior (called Standard Actions) are insufficient, there is a way to provide extend behavior (called Custom Actions). Custom Actions come in various base types that are differentiated on the way the Windows Installer service instantiates the custom action in the appropriate sandbox. Among the types of custom actions are executable files and dynamic link libraries.


Bare custom actions are risky to the integrity of a Windows Installer base install and this document will consider the risks.


This document will not dive deep into the architecture or the possibilities to improve the custom action architecture in the future.


Integration Hurdles


The installation integrity risk running EXE custom actions come in a number of varieties


 



















































































































































 


Problem


 


Description


 


Mitigation


(by consumer of EXE)


Crash


Bad EXEs can bring down the custom action sandbox


None


Binary Dependency


Bad EXEs can require technologies that are not in the system at the time of the install.  Specific instance: MSXML custom actions required MFC 7 but it didn’t exist on machines.


None


Load


Bad EXEs can expect to load DLLs from the path but the path could be customized by the user on the machine.


None


Rights


Bad EXEs can require more rights (e.g. admin) than the package thus breaking scenarios (per-user)


None


Logging


EXEs do not have access to the Windows Installer Log so there is no integrated troubleshooting.


None (best effort, build DLL that provides log path to EXE and puts the log next to or into the Windows Installer log)


UI


EXE do not have access to the UILevel so they do not know whether it’s OK to display UI.


None (best effort, build DLL that reads UILevel and alters command line)


Progress


EXEs do not have access to the widows installer progress bar.


None (best effort, add entries to the ReserveCost table)


Hangs


EXE may hang and neither the Windows Installer nor the user has no way of knowing whether the install is hung or just taking a long time.


None (best effort, build DLL that calls CreateProcess and WaitForMultipleObjects)


Costing


EXE do not have any way of being integrated into the Windows Installer costing


None (best effort, build DLL that add ticks to the progress bar)


Rollback


- rollback behavior
- decision when to execute rollback (did failure occur in the FWD case thus calling the Backward case is extraneous?)


Bad EXE do not support rollback.


None (best effort, build DLL that calls EXE uninstall if exists)


Transparency and Predictability


EXEs are not data driven from the contents of the MSI thus are not transparent to users, especially admins.


None


Uninstall


Bad EXEs do not support uninstall


None (best effort, build DLL that calls EXE uninstall if exists)


Uninstall Rollback


Bad EXEs do not support uninstall rollback


None (best effort, build DLL that calls EXE install)


Repair/Resiliency


Bad EXEs do not support repair


None (best effort, build DLL that calls EXE install again)


First Run


Bad EXEs mix per machine installation with per-user installation that should be invoked at first run


None


Error Codes


Bad EXEs do not provide return codes or have return codes that do not match the custom action return code expectations.


None (best effort, best effort, build DLL that interprets errors returned from the EXE and returns the appropriate value)


Watson


EXE failures are difficult to map to Watson buckets (for teams that have implemented Setup Watson)


None (best effort, build DLL that initializes Setup Watson with the needed context to differentiate EXE error)


PSS Costs


When an EXE fails, the supports costs are absorbed by the enclosing product


None (best effort, build DLL that records needed context to differentiate EXE error)


Localization


Does installation or manipulation by the EXE cause strings to be written to the system?  If yes, how are the strings differentiated?


None


Selection


Some EXEs have different levels that can be installed (Minimum, Full).


None (best effort, build DLL that maps UI or feature selection to different levels in EXE)


Terminal Server and SMS


Bad EXEs do not run correctly on Terminal Server where there is no user logged in and will not have a user hive


None


Group Policy (Publishing, assignment)


<missing this context>


None


Debugging


There is no way to debug custom actions in EXE from MSI.


None (best effort, build DLL that uses dll debugging then alter EXE call from inside DLL)


Access to Database


EXEs are unable to access the database


None (best effort, build DLL that uses dll method to access the database)


Run From Source or Cache


EXEs are unable to be configured to run from source


None


Servicing


EXEs are more difficult to confirm they contain the right security fixes when servicing


None


Help


EXEs that contain 2.0 User Education integration may not have MSI’s namespace parents configured at the time they are called


None (best effort, move the EXE to a different location in the sequence after the html help custom actions)


Events


EXEs that produce events during install will appear outside the MSI context


None


Customization


Numerous third party tools exist to customize an install to the needs of a particular specialized user (usually LORGs)


None


File In Use


There is no way for a custom action to inform the user that files they want to manipulate are in use


None


Pending File Renames, File in Use, and Rollback


If a EXE custom action replaces files that are held in use and a MoveFileEx causes those files to end up in Pending File Renames, then the install rolls back it’s possible that the files will still be changed on the next boot.


None


Detection of When to Install (Resiliency v Rollback)


A rollback during repair or reinstall could cause premature removal of a EXE install that existed on the machine before MSI was installed.  If one implements rollback, one has to implement foolproof detection for existing installs of the component and not run the EXE package if the same version of EXE is already on the machine.  Otherwise, a cancel or failure in the MSI could cause a preexisting installation of the EXE component to be removed.


None


Reboot


If the EXE requires a reboot, there is no way to communicate the need for the REBOOT to the MSI


None


Cancel


As EXEs can not call MsiProcessMessage, they are unable to respond to the cancel button.


None (best effort, build DLL that calls MsiProcessMessage)


Watson


EXEs that crash may cause a Watson dialog during the install


None


Test Scenarios


When testing the MSI that contains this EXE, one needs to test the following



  • Deployment technologies


    • Group Policy Software Distribution


      • Publishing

      • Assignment

    • SMS deployment

    • Install from network share/media

    • Install from local cache

    • Hard drive imaging

  • Customer segments


    • Retail install

    • OEM pre-install

    • Enterprise deployment

  • User types


    • No user (install during winlogon, install by SMS agent) - these will not have a user hive

    • Lockdown user

    • Regular user

    • LUA without registry virtualization

    • Admin user

[Author: Robert Flaming]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von

What happened to Windows Installer 4.1?

Monday, 1. October 2007 at 4:29 pm

For a time, there was a release named Windows Installer 4.1 on the MSDN topic Released Versions of Windows Installer that was associated with Windows Vista SP1 and Windows Server 2008.  When this reference to 4.1 was removed, it naturally lead to the question: what happened to Windows Installer 4.1?


The back story here starts about this time last year when we were finishing up Windows Installer 4.0 in Windows Vista and asking ourselves “What’s next?”. At that time, we didn’t know the bar for features in Windows Vista SP1 and next major release of Windows.  For those of you watching Microsoft closely at the time, you may recall this is when there was a lot of change going on in the upper echelons of Windows



We also had the seeds of an out of band release were germinating in the organization.


In this fluid context, we had to figure out names for what appeared to be three simultaneous efforts from the Windows Installer team.  Knowing none of the feature and release criteria, our best guess at the time was that Windows Vista SP1 would ship first, an out of band release would ship next, and then the next full version of Windows would be our focus.  With this guess at timelines, we choose the names Windows Installer 4.1, Windows Installer 4.5, and Windows Installer 5.0 as the labels for the next three buckets of work from the Windows Installer team.


It just so happened that at this same time, the Windows Vista version of the Platform SDK was finishing up.  Given our best guess was that we’d be doing significant work in Windows Vista SP1, we added the reference to Windows Installer 4.1 for anticipatory completeness.


What changed was that the new guard in Windows had a very different bar for the Vista SP than had been in practice for previous releases (at least in my memory).  Generally there is lip service to no large feature work in a SP but this time folks listened.  Big feature adds were heavily scrutinized.  The items we wanted to fix in the SP, UAC tweaks, were big feature by the new bar. 


When the UAC tweaks were rejected for Vista SP1, the justification for 4.1 faded as there were no new features in the Windows Installer in Vista SP1.


[Author: Robert Flaming]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von

Will there be an updated ICE and _Validation table that supports the schema changes?

Sunday, 16. September 2007 at 7:33 pm

Our friends with WiX (principally blogger Rob Mensching) had some questions about the schema changes.  One of those questions was:


Question:
Will there be an updated ICE and _Validation table that supports the schema changes?


Context:


Windows Installer 4.5 supports adding a new bits



Which breaks ICE 45 and is out of range of the existing 4.0 _Validation table.


Answer:


Yes, we do have updates to our SDK Tools before we call development complete.  We have planned for this work to happen after the engine changes are complete.  Our habit is to make sure the engine changes are complete before we shift to SDK tools.


[Author: Robert Flaming]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von bingen

Where is good, comprehensive training covering the Windows Installer?

Saturday, 8. September 2007 at 4:04 pm

Our friend and blogger Aaron Stebner asked on behalf of his readers whether the Windows Installer had recommendations for “good, comprehensive training covering” the Windows Installer. This question comes up regularly and I’ve built up the following stock answer.



Windows Installer depends on our tools vendors to provide a considerable portion of our end to end story. There is an opportunity for the Tools Vendors to differentiate themselves in the market with the degree to which they onboard their users quickly and given them all the information they need to be successful.


Where education value from the tools vendors is not available or incomplete, one can drop down and build expertise in bare metal Windows Installer.  One should expect bare metal Windows Installer expertise does take time to build as we are a system technology with a lot of interdependencies with other parts of the system (the nature of being an installer). What we provide is the Windows Installer portion of the Windows Platform Software Development Kit which contains a lot of information on 鈥榳hat?鈥 is in Windows Installer but has very little 鈥榳hy?鈥, 鈥榳hen?鈥, and ‘how do I?’.


There is a broad range of resources available in the community for someone to build their expertise. In the Platform SDK, there is a topic 鈥Other Sources of Windows Installer Information鈥 which a long list of links to things like Whitepapers, Newsgroups, Blogs, Web Sites, Tools Vendors, Chat transcripts, and Knowledge Base articles.


If you鈥檙e interested in direct hands on help on a particular incident, there are a set of experts in Microsoft Product Support and Services that have deep knowledge of the Windows Installer. They are kind of hard to find so you may have to ask for the Windows Installer support team directly. If you鈥檙e in interested in training a group within your company, Microsoft Consulting Services does offer a week long on-site training on the Windows Installer. Mark Lathrope has provided the MCS services in the past.


One of the Windows Installer Most Valuable Professionals, Phil Wilson, has written a book 鈥The Definitive Guide to Windows Installer鈥 that I鈥檝e heard good reviews about. Inside the Windows Installer team, Phil’s book is on the list of new hire resources we recommend folks use to ramp up.


Another of the Windows Installer Most Valuable Professionals, Stefan Kruger, runs a web site http://installsite.org which offers training as well a number of other services. As I view Stefan’s catalog of classes, most of Stefan’s classes are specific to the authoring application that one uses to author packages.


I’ve noticed that when I give this answer in person, customers have appeared a bit deflated as they were hoping for more from the Windows Installer team itself. For us, it’s a tough trade-off as building better training and education competes with building features into the engine that folks would like us to have.


[Author: Robert Flaming]
This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.

Original post by Windows Installer Team

von bingen

Configuring Windows Vista Software Explorer

Friday, 6. July 2007 at 6:33 pm

One of the questions I received in the lounge area at Tech Ed 2007 in Orlando pertained to Windows Vista Software Explorer display of applications.  Specifically it centered on the ARP* property mappings to the Software Explorer information display.  Before I get to that, many thanks to those of you that saw me present in a breakout session at Tech Ed (and understand my love of Chick-fil-A庐 and how much I miss it while living in the Pacific Northwest).  Here鈥檚 a 鈥渟hout out鈥 to those of you that were there!  Thanks for coming!


Software Explorer is the new name of what was formerly called Add/Remove Programs (ARP) on prior Windows operating systems.  There have been a few modifications to the information displayed and how you navigate around the user interface, so I thought I鈥檇 take this opportunity to identify what values correspond to MSI properties and installation.  Many of you may already be familiar with the information as some of the basics are provided in the MSDN topic: Configuring Add/Remove Programs with Windows Installer.  The MSI properties haven鈥檛 changed, but here鈥檚 how they map to the Software Explorer UI.  Note: If you specify the ARPSYSTEMCOMPONENT property in your installation with a value of 1, then your application is only displayed in Software Explorer if you provide your own additional HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall key specification.


First, the default Software Explorer view hides some of the information from you.  The default view does not include all of the possible display information.  The initial set is Name, Published, Installed On, and Size.


Software Explorer Default


The view is configurable, so you can specify additional information that you鈥檇 like to include by simply right-clicking on the column header and then choosing 鈥淢ore鈥︹:


Software Explorer Configuration


Which then presents you with the column list to choose the detail information:


Software Explorer Column Selection


And given the column list, here鈥檚 the mapping of column list identities to MSI properties (much of this maps to existing Add/Remove Programs mapping info that鈥檚 already documented on MSDN in the topic: Uninstall Registry Key):

































































Column Identity (Detail)


MSI Property


Name


ProductName


Publisher


Manufacturer


Installed On


Determined and set by MSI


Size


Determined and set by MSI


Contact


ARPCONTACT


Help Link


ARPHELPLINK


Support Link


ARPURLINFOABOUT


Update Info Link


ARPURLUPDATEINFO


Comments


ARPCOMMENTS


Last Used On


Determined and set by Software Explorer


Location


ARPINSTALLLOCATION


Product ID


ProductID property available via MsiGetProductInfo[Ex] API


Readme


ARPREADME


Registered Company


COMPANYNAME property available via MsiGetProductinfo[Ex] API


Registered Owner


USERNAME property available via MsiGetProductInfo[Ex] API


Source


SourceDir


Support Telephone


ARPHELPTELEPHONE


Used


Determined and set by Software Explorer


Version


ProductVersion


Hopefully you now have a better idea of how your MSI package authoring impacts the Software Explorer display.


 


[Author:Carolyn Napier]


This posting is provided “AS IS” with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.


 

Original post by Windows Installer Team

von bingen