使用WiX创build一个IIS虚拟目录

我会在WiX邮件列表上问这个问题,但似乎是失败了。

我有一个应用程序,这是一个桌面应用程序和本地运行的Web应用程序。 我创build了几个基本的WiX安装程序,但尚未使用IIS扩展在IIS下创build虚拟目录。 我一直没能find一个简单的例子来说明如何做到这一点。 我所需要做的就是创build虚拟目录,设置其端口,并将其指向我正在使用其他安装程序创build的实际目录。

如果还没有启用的话,在机器上启用IIS会带来一个好处,但是我猜这是不可能的,对我来说也不算什么。

如果重要的话,这个安装程序将只能在Vista机器上运行。

Solutions Collecting From Web of "使用WiX创build一个IIS虚拟目录"

由于大卫提到的文章似乎已经失传,这里就是一个例子。 这也在虚拟目录中创建一个应用程序。

<?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> <Product Id="6f2b2358-YOUR-GUID-HERE-aa394e0a73a2" Name="WixProject" Language="1033" Version="1.0.0.0" Manufacturer="WixProject" UpgradeCode="225aa7b2-YOUR-GUID-HERE-110ef084dd72"> <Package InstallerVersion="200" Compressed="yes" /> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> <!-- Reference existing site at port 8080 --> <iis:WebSite Id="My.Site" Description="My Site"> <iis:WebAddress Id="My.Web.Address" Port="8080"/> </iis:WebSite> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="WixProject"> <Component Id="IIS.Component" Guid="{6FAD9EC7-YOUR-GUID-HERE-C8AF5F6F707F}" KeyPath="yes"> <iis:WebVirtualDir Id="My.VirtualDir" Alias="foo" Directory="INSTALLLOCATION" WebSite="My.Site"> <iis:WebApplication Id="My.Application1" Name="Web Application 1"/> </iis:WebVirtualDir> </Component> </Directory> </Directory> </Directory> <Feature Id="ProductFeature" Title="WixProject" Level="1"> <ComponentRef Id="IIS.Component" /> </Feature> </Product> </Wix> 

http://schemas.microsoft.com/wix/IIsExtension命名空间使用iis:WebVirtualDiriis:WebApplication

我以前有类似的问题,我发现下面的文章相当有用: Wix 3.0创建IIS虚拟目录

挖掘谷歌缓存(我认为现在已被谷歌清除)我想以下是代码丢失的博客条目大卫Pokluda包括在他的答案。 我必须做一些重新格式化才能把它变成这样,对不起,如果它很丑。

 <?xml version="1.0" encoding="UTF-8"?> <!-- IMPORTANT 1. need to add the schema iis.xsd to the property window 2. add the following iis namespace 3. add the Visual Studio reference WixIIsExtenion --> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> <Product Id="7b523f47-YOUR-GUID-HERE-fea6be516471" Name="Vince Wix 3 Web Service" Language="1033" Version="1.0.0.0" Manufacturer="Vince LLC" UpgradeCode="0a8c10df-YOUR-GUID-HERE-50b9ecdb0a41"> <Package InstallerVersion="200" Compressed="yes" /> <Media Id="1" Cabinet="WebAppWixProject.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="WebApplicationFolder" Name="MyWebApp"> <Component Id="ProductComponent" Guid="80b0ee2a-YOUR-GUID-HERE-33a23eb0588e"> <File Id="Default.aspx" Name="Default.aspx" Source="..\MyWebApp\Default.aspx" DiskId="1" /> <File Id="Default.aspx.cs" Name="Default.aspx.cs" Source="..\MyWebApp\Default.aspx.cs" DiskId="1"/> <iis:WebVirtualDir Id="MyWebApp" Alias="MyWebApp" Directory="WebApplicationFolder" WebSite="DefaultWebSite"> <iis:WebApplication Id="TestWebApplication" Name="Test" /> </iis:WebVirtualDir> </Component> </Directory> </Directory> </Directory> <!-- IMPORTANT Add a virtual directory to an existing web site If put it inside the Component, a new Web Site will be created and uninstall will remove it --> <iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='WebApplicationFolder'> <iis:WebAddress Id="AllUnassigned" Port="80" /> </iis:WebSite> <Feature Id="ProductFeature" Title="Vince Wix 3 Web Service" Level="1"> <ComponentRef Id="ProductComponent" /> </Feature> </Product> </Wix> <!-- IMPORTANT To get rid of light.exe location error, do the following on the Linker Tab: Set culture to: en-US Supress Schema Validation in the Advanced Button --> 

我对WiX不熟悉,但是可以使用WMI(Windows Management Instrumentation)对象来管理IIS 6和7。 我已经使用PowerShell和C#在IIS上创建网站,虚拟目录,权限等。 您应该能够从大多数脚本环境中获得这些对象。

以上片段以不正确的方式使用iis:WebAddress。 如果您希望此功能与所有与该名称和端口相匹配的网站一起使用,则需要添加IP =“*”。 上面的例子在安装过程中失败,如果有一个IP地址分配给IIS中的网站(wix通常不会找到它)

Rant:由于许多原因,wix是可怕的,我认为这是一个很好的例子。 如果该属性丢失,它将只适用于具有默认IP的网站 – 这是多么不直观。 Wix至少应该为缺少的IP元素发出警告。 此外,默认的IP(本地主机)在IIS元数据库中表示为*,同时在wix文件中*表示所有网站(不仅是*)。 所以它真的很混乱,而且根本不直观。