2010-08-18 36 views
0

我有维克斯安装它创建通过以下的IIS虚拟目录:维克斯+ IIS:创建具有绑定在一个网站上的虚拟目录的80端口禁用

<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> 

但是这个失败,如果绑定端口80已被删除该网站。

<iis:WebAddress />元素和Port属性都是强制性的,但在这种情况下是完全多余的 - 我不在乎网站的端口是什么,只要它创建了我的虚拟目录!

有没有办法让上述安装程序成功创建虚拟目录而不提示用户输入端口号?

+0

如果你创建一个虚拟目录,你为什么认为这个端口无关紧要?虚拟目录 - 在哪里?在一个网站上。什么网站?在港口xyz – abatishchev 2010-08-18 12:07:35

+0

@abatishchev - 为什么**会**重要?一旦我确定我想在网站上创建描述为“XYZ”的虚拟目录,可以指定一个存在于该站点的端口,在这种情况下它可以工作(并为所有端口创建虚拟目录)或者我指定一个不存在的,它不起作用 - 它本质上是一个非常复杂的“安装时失败”布尔标志。 – Justin 2010-08-19 01:43:38

回答

1

我发现只要提供了SiteId属性,端口实际上被忽略了。我的问题的解决方案是因此改变我的WebSite元素是:

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

注意,Port属性仍然是必需的(而不能为0),即使SiteId属性然而被忽略*(意思是该描述用于标识该网站)。

有关更多信息,请参阅WebSite Element (WiX documentation)

+0

没有为我工作。安装程序更新了与http和端口1的绑定 – galets 2014-07-16 17:43:35

+0

更新:我知道了!如果您不想根据http://wixtoolset.org/documentation/manual/v3/xsd/iis/website.html创建网站,iis:WebSite不能位于组件之下:在产品,片段,或Module导致在IIsWebSite表中创建网站“locator”记录。这意味着该网站本身既没有安装也没有被MSI软件包卸载 – galets 2014-07-16 17:54:57

1

所有的虚拟目录都植根于一个网站。 WebSite元素可用于创建网站如果WebSite元素在组件元素下或用于找到如果不是网站。 VirtualDir元素必须以某种方式引用WebSite元素。这就是IIS的设计,因此WiX模型就是这样的。

注意:有人可能会争辩说,不在组件元素下的WebSite元素应该被命名为“WebSiteSearch”或其他东西。

+0

我得知VirtualDir元素必须以某种方式引用WebSite元素,但为什么WebSite元素即使在使用现有网站时也需要显式指定端口? – Justin 2010-08-19 01:44:49

+0

我在我的IIS7上有大量网站,其中大多数都有虚拟目录,而且我没有在根目录网站和其他网站之间看到任何提及。 – abatishchev 2010-08-19 06:12:09

+0

随着时间的推移,网站元素已经慢慢变形,以允许不同的方式找到你想要的网站。最初的想法是,网站唯一保证唯一的价值是它的端口。后来我们增加了按id和描述查找网站的功能。看看文档。元素比现在要复杂一点,因为我们对IIS的理解随着时间的推移而变化......并且IIS将IIS5的指导改为IIS6到IIS7。 – 2010-08-19 19:57:41