1

我在 IIS 中创建了一个网站。我想在它下面创建一个虚拟目录,然后在它下面创建另一个。当我卸载时,如果第一个虚拟目录中有东西,我只想卸载最后一个虚拟目录。(我不在乎是否没有 - 可以卸载或可以离开它。)

-Website
|-VirtualDirectory1
||-VirtualDirectory2

这是我当前的组件:

version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
  <!-- Setup IIS. -->
  <Fragment>
    <!-- Since these are outside of a component, they're not being created, just referenced.
         http://www.wintellect.com/cs/blogs/jrobbins/archive/2011/01/25/install-a-new-virtual-directory-to-default-web-site-with-wix.aspx -->
    <iis:WebSite Id="Services" Description="Services">
      <iis:WebAddress Id="ServicesBindings" Header="[Hostname]" Port="80" />
    </iis:WebSite>
    <iis:WebAppPool Id="ToolkitServicesAppPool" Name="Toolkit Services" />

    <ComponentGroup Id="IISComponents" Directory="InstallDirectory">
      <Component Id="Toolkit.Services.App" Guid="PUT-GUID-HERE" KeyPath="yes">
        <iis:WebVirtualDir Id="ToolkitDir" Alias="Toolkit" Directory="Toolkit" WebSite="Services">
          <iis:WebVirtualDir Id="AppDir" Alias="App" Directory="InstallDirectory">
            <iis:WebApplication Id="AppApp" Name="App" WebAppPool="ToolkitServicesAppPool" />
          </iis:WebVirtualDir>
        </iis:WebVirtualDir>
      </Component>
    </ComponentGroup>
  </Fragment>
</Wix>

您不能将 WebVirtualDir 放在 WebSite 下,因为它们不允许在组件之外,所以我不能手动创建 VirtualDirectory1 并使用它。我也尝试使用WebDir(随机)定义VirtualDirectory1,但是不能在WebDir下定义WebVirtualDir。没有办法引用一个虚拟目录,所以我不能把它放到一个永久组件中,而只是从另一个组件中引用它。

这基本上已经被问过,但没有答案。任何想法,将不胜感激。

4

1 回答 1

0

你可以这样做:

  1. 创建一个包含根 vdir 的永久组件。或者您可以在多个产品之间共享该组件,这样在所有产品都没有卸载的情况下,root vdir 不会被删除。
  2. 使用别名“root_vdir_name/new_vdir_name”创建另一个组件。

    <Component Id="Toolkit.Services.App" Guid="PUT-GUID-HERE" KeyPath="yes" Permanent="yes">
      <iis:WebVirtualDir Id="ToolkitDir" Alias="Toolkit" Directory="Toolkit" WebSite="Services" />
    </Component>
    
    <Component Id="Toolkit.Services.App" Guid="PUT-GUID-HERE" KeyPath="yes">
      <iis:WebVirtualDir Id="AppDir" Alias="Toolki/App" Directory="InstallDirectory" WebSite="Services">
        <iis:WebApplication Id="AppApp" Name="App" WebAppPool="ToolkitServicesAppPool" />
      </iis:WebVirtualDir>
    </Component>
    
于 2014-01-17T08:44:29.010 回答