Rod Maupin recently blogged ‘Installations for IIS on Vista Require SP2‘ :
If you are developing an installation that will install to Internet Information Services 6.0 on Windows Vista, be aware that you must have Service Pack 2. If you don’t, the installation will probably fail in the middle, and roll back any changes that have been made.
Rod’s post is light on details and didn’t really say why it would (probably) fail so I thought I’d post my observations and experiences on this subject. I have successfully created Web Installers for Vista SP1 but there are certainly a few gotchas to watch out for:
1) Make sure you are using an authoring tool with properly behaving IIS Custom Actions. I highly recommend InstallShield 2010 SP1. I’m currently withholding judgement on InstallShield 2011 until it’s been in the wild for awhile and has it’s own SP1. You need custom actions that can properly handle the various versions of IIS without requiring backwards metabase compatibility shims. ( Yup, I’m looking at you WiX. )
2) Make sure your web.config is not marked as read-only when you build your installer. MSI will deploy the file with the read-only attribute set and IIS really, really doesn’t like this.
3) Make sure your web.config doesn’t have xml namespaces declared. The IIS API will throw and exception which will bubble back up as a Custom Action error. In my case it was a namespace declaration added to the web.config when the developer added an Nlog reference. Once we removed the namespace the installer started working.
Also there’s a good read over at the InstallShield community forum:
If you still have problems or have seen another edge case, please feel free to document it with a comment below.