April 2007 - Posts

How to support Vista's Restart Manager in your Application and Setup

Richard Macdonald of the Windows Installer team at Microsoft has posted another great blog article in which he describes how to make your application restart manager aware and how to add the MsiRMFilesInUse dialog to your setup using a .msi table editor like Orca.

(Re-)Start Me Up ...

As I mentioned in a recent post, I'm currently working on a Windows Vista workshop. As part of that, I've created a simple application that demonstrates the basic interaction of the Windows Installer with Vista's new Restart Manager (RM). I thought I'd post some information on how easy this was to do, which you might find useful for your own applications and packages.

http://blogs.technet.com/richard_macdonald/archive/2007/04/13/756894.aspx

Posted by stefan | with no comments

Beware of the UAC Prompt Timeout

Recently I encountered a strange problem when I tried to install an MSI based setup on Windows Vista. I ran through the dialog sequence and clicked the “Install Now” button. The progress bar dialog was displayed as usual, and I left the computer to get a cup of coffee, expecting that the software would be successfully installed when I return.

But to my surprise on my return I was greeted with the “Setup was interrupted before the software was installed” dialog. In the log I found the following entries:

MSI (s) (00:B8) [15:02:24:944]: MSI_LUA: Elevation required to install product, will prompt for credentials
MSI (s) (00:B8) [15:04:59:002]: MSI_LUA: Credential Request return = 0x800704C7
The operation was canceled by the user.
MSI (s) (00:B8) [15:04:59:052]: MainEngineThread is returning 1602 

MSI error 1602 means “User cancelled installation” and error code 0x800704C7 translates to “The operation was canceled by the user”. But of course I did not cancel the installation. Michael Urman of Macrovision helped me to understand what was going on, and I was able to reproduce the problem - without coffee ;-)

Some time after the progress bar dialog was displayed, the UAC consent dialog came up and asked me if I wanted to proceed. After two minutes of waiting, the UAC dialog disappeared automatically and the setup was cancelled.

So the UAC Prompt has a 2 minute timeout after which the operation is cancelled automatically without user interaction. This timeout, which I didn’t find documented anywhere, applies to other UAC prompts as well, like control panel actions that require elevation etc.

Unfortunately the return code 0x800704C7 doesn’t indicate whether the operation was cancelled by the user or by the timeout.

Note that there actually was that UAC shield icon on the “Install Now” button, but it was too subtle to make me wait for the UAC dialog. In my tests I have seen delays of more than one minute after the Install Now button was pressed until the UAC dialog came up.

I contacted the Windows Installer team at Microsoft about this problem. Tyler Robinson, the Lead Program Manager, told me that both the MSI team and the UAC team are aware of the issue, but they don’t have a solution at this time. He identified two main factors that are causing the delay:

  • System Restore. For compatibility reasons the restore point for the setup is created before the UAC prompt is displayed. Turning off system restore can speed things up.
  • Digital signature verification. UAC has to verify the digital signature of the msi package because the UAC dialog has a different banner color and text for setups that have a valid digital signature, as described here. Depending on the size of the .msi file this verification can take a while.

So if you have users complaining that the setup failed unexpectedly on Vista, ask them whether they saw the UAC dialog.

Posted by stefan | with no comments

Windows Installer Rant from a End User's Perspective

In his blog Philip Hofstetter posted a couple of rants about Windows Installer setups. He complains about limitations in the technology as well as poorly authored setups. While I don't fully agree on all his points, it's quite interesting to read because it is written from the perspective of a user who has to install the setup. I think it's important for setup authors to understand the end users' pain points.

Windows Installer - Worked around

"It's my gut-feeling that 80% of all bigger software packages in Windows can't live with MSIs default feature set and they have to work around inherent flaws in the design of that tool. Here's what I found installers doing (in increasing order of stupidity)..."

 

Posted by stefan | with no comments

Understanding Windows Installer Log Files

Windows Installer log files tend to be both verbose and cryptic. Richard Macdonald of the Windows Installer team at Microsoft has posted a great article in his blog to help developers understanding MSI logs. He starts with some general information how to activate logging and about the general syntax of the log file. But the best part in my opinion is the annotated log file he posted. I highly recommend reading his article:

There just one bit I'd like to add regading the log syntax. Richard explains what the lines tagged with (c) and (s) mean (client and server process, respectively), but there's a third tag: (N) for nested. Nested install custom actions are deprecated, but (N) also applies to the automatic uninstall of the old product version during a Major Upgrade.

Posted by stefan | with no comments

SP 2 for InstallShield 12 available

Service Pack 2 for InstallShield 12 has been released and is available via automatic update. It mainly fixes some bugs that have been introduced with SP 1.

At this time the service pack is avalaible for the English edition of InstallShield 12. For the Japanese edition only SP 1 is available. No service packs are available for the German version.

 

Posted by stefan | with no comments

Tips for Preparing your Application and Installation for Vista Certification

There is an article at the Code Project that explains some of the Vista logo requirements and test cases and offers tools and tips to pass them. Among others it shows how to modify a MSI setup created with Visual Studio Setup & Deployment project to make it Vista logo compliant. The article also has links to essential logo guideline documentation. Even if you don't plan to submit your application for Vista logo certification it's a good idea to know and follow these guidelines.

Certified For Vista: How to ensure an application gets certified.