Search code examples
iiswixvirtual-directory

Wix + IIS : Creating a virtual directory on a web site with bindings for port 80 disabled


I have a Wix installed which creates a virtual directory in IIS via the following:

<DirectoryRef Id="INSTALLLOCATION">
  <Component Id="VirtualDirectory" Guid="29BEECCC-AA5F-11DF-BBB1-9C0AE0D72085">
    <iis:WebVirtualDir Id="MyVDir" Directory="INSTALLLOCATION" Alias="MyVDir" WebSite="DefaultWebSite">
      <iis:WebApplication Id="MyApplication" Name="MyVDir" />
    </iis:WebVirtualDir>
    <CreateFolder />
  </Component>
</DirectoryRef>
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site">
  <iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>

However this fails if the bindings for port 80 have been removed for that web site.

The <iis:WebAddress /> element and Port attributes are both mandatory, however completely superfluous in this case - I don't care what the Port of the web site is, as long as it creates my virtual directory!

Is there any way of getting the above installer to successfully create a virtual directory without prompting the user for a port number?


Solution

  • I've found that as long as the SiteId attribute is provided the port is in fact ignored. The solution to my problem was to therefore change my WebSite element to be:

    <iis:WebSite Id="DefaultWebSite" Description="Default Web Site" SiteId="*">
      <iis:WebAddress Id="AllUnassigned" Port="1" />
    </iis:WebSite>
    

    Note that the Port attribute is still required (and cannot be 0), however is ignored even if the SiteId attribute is * (meaning that the description is used to identify the site).

    See WebSite Element (WiX documentation) for more information.