What I would like to do is show the installer user a list of the websites on their server and allow them to choose one (using the method described here: http://www.cmcrossroads.
OK it is possible (in IIS6 or IIS7 with Metabase compatibility), thanks to this post to the mailing list explaining the slightly bizarre way the iis:Website element works. The useful part is:
Using a fragment like this and test with v3.0.5120.0:*
The following work:
1. If WebSite/@SiteId="*" then a case sensitive match on WebSite/@Description happens.
2. If WebSite/@SiteId matches the site id than WebSite/@Description is ignored and a match on site id happens.
3. If WebSite/@SiteId has any value WebAddress/@Port is ignored (although the syntax requires it and it can't be 0).
4. If WebSite/@SiteId is missing WebAddress/@Port is used and WebSite/@Description is ignored.
5. Once a website is created and gets site id, you can rename it (therefore its site id is not the hash of its name), the WebSite/@SiteId="*" syntax will match on the WebSite/@Description.
So my WiX code ends up looking like:
The iis:WebAddress element should never be used but is necessary for the project to compile.