我对 WiX 世界还很陌生,所以如果以下问题看起来微不足道,请多多包涵。
我无法让我的 WebVirtualDir 别名为空。即,我想允许用户指定虚拟目录,如果他不指定,则 Web 应用程序安装在 DefaultWebSite 中。
我已经制作了一个项目,除了用户必须在安装时清除虚拟目录才能安装在 DefaultWebSite 中之外,它可以正确完成所有操作。所以我剩下要做的就是让“默认”虚拟目录显示为空。
我的 WiX 片段如下所示:
<Fragment>
<DirectoryRef Id="WEBINSTALLFOLDER" />
<ComponentGroup Id="IIS.Setup">
<Component
Id="$(var.WebSiteName)"
KeyPath="yes"
Guid="$(var.WebsiteCode)"
Directory="WEBINSTALLFOLDER">
<iis:WebSite
Id="WEBSITE_NAME"
Description="[WEBSITE_NAME]"
Directory="WEBINSTALLFOLDER"
ConfigureIfExists="no"
AutoStart="yes"
StartOnInstall="yes">
<iis:WebAddress Id="AllUnassigned" IP="*" Port="80"/>
</iis:WebSite>
<iis:WebAppPool
Id="AppPool"
Name="[APP_POOL_NAME]"
ManagedRuntimeVersion="v4.0"
IdleTimeout="0"
RecycleMinutes="0"
ManagedPipelineMode="$(var.IIS_ManagedPipelineMode)" />
<iis:WebVirtualDir
Id="vDir"
Alias="[WEB_APP_NAME]"
Directory="WEBINSTALLFOLDER"
WebSite="WEBSITE_NAME">
<iis:WebApplication
Id="$(var.WebApplicationName)"
Name="$(var.WebSiteName)"
WebAppPool="AppPool" />
</iis:WebVirtualDir>
</Component>
</ComponentGroup>
<Feature Id="IISSetup">
<ComponentGroupRef Id="IIS.Setup" />
</Feature>
我尝试了多种方法来做到这一点,包括:
- 从 WebVirtualDir 中删除 alias 属性:我知道这是一个 nogo,因为 alias 是必需的属性
- 明确设置 alias="" :也是不行的,但至少我在编译时得到了错误
- 将 [WEB_APP_NAME] 设置为空:但我再次收到编译时错误,即特定值可能不为空。
那么我应该怎么做才能做到这一点呢?