如何在卸载后保留虚拟目录

时间:2012-11-26 20:44:04

标签: wix

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

您不能在WebSite下放置WebVirtualDir,因为它们不允许在组件外部使用,因此我无法手动创建VirtualDirectory1并使用它。我还尝试使用WebDir来定义VirtualDirectory1(随机),但是您无法在WebDir下定义WebVirtualDir。没有办法引用虚拟目录,因此我不能将其放入永久组件中,只是从另一个引用它。

这基本上是asked before但没有答案。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

  1. 创建包含根vdir的永久组件。或者您可以在多个产品之间共享该组件,然后在未卸载所有产品时不会删除根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>