使用Wix安装Web应用程序

时间:2010-09-13 21:24:56

标签: iis wix

所以我正在尝试安装一个Web应用程序,我偶然发现了这个问题:Using WiX to create an IIS virtual directory。当我尝试为我自己的应用程序调整它时,我收到一个错误:

W:\ projectlocation \ IssInstallationComponents.wxs(6,0):错误LGHT0204:ICE18:组件的KeyPath:'SiteInstallationComponent'是目录:'WEBDIRECTORY'。目录/组件对必须在CreateFolders表中列出。

我一直试图解决这个问题。这是我在受影响的文件中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
  <Fragment>
    <DirectoryRef Id="WEBDIRECTORY">
      <Component Id="SiteInstallationComponent" Guid="MY GUID">
          <iis:WebVirtualDir Id="ProductVirtualDirectory" Alias="[PRODUCTVERSION]" Directory="WEBDIRECTORY" WebSite="DefaultWebSite"/>
      </Component>
    </DirectoryRef>

    <iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='WEBDIRECTORY'>
      <iis:WebAddress Id="AllUnassigned" Port="80" />
    </iis:WebSite>
  </Fragment>
</Wix>

关于我的例子的一些注释。首先,我知道GUID是错误的,我从上面的示例中删除它,以便它不会被谷歌索引并被想要找出类似内容的人重用。在我的代码中,我有一个正确的GUID。我还将产品名称更改为“产品”以避免任何类型的IP问题。

有关如何使此代码正常工作的任何想法?

2 个答案:

答案 0 :(得分:12)

叹息

好的,我开始挖掘互联网并找到以下主题:http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03483.html

基本上我需要更改我的组件,使其看起来像这样:

  <Component Id="SiteInstallationComponent" Guid="MY GUID">
      <CreateFolder />
      <iis:WebVirtualDir Id="ProductVirtualDirectory" Alias="[PRODUCTVERSION]" Directory="WEBDIRECTORY" WebSite="DefaultWebSite"/>
  </Component>

我爱Wix,但有时它会让我发疯。

答案 1 :(得分:2)

以为我会为此添加一些内容。在我的情况下,我需要修改配置文件作为具有XmlConfig操作的补丁的一部分。我遇到了原来的问题,并试图通过在那里粘贴一个CreateFolder元素来解决它。但是这有一个障碍。如果您的组件是修补程序的一部分,则在其中放置CreateFolder条目会使其成为not uninstallable。这意味着你无法回滚补丁。

我最终做的是为组件创建不同的KeyPath。我给了它一个注册表项作为KeyPath,它不再困扰我关于CreateFolder条目。这意味着它将在安装和卸载时执行您想要的任何操作,并使用您提供的注册表项来跟踪组件是否已安装。

<RegistryKey Root="HKLM" Key="[REGISTRYKEY]\Settings\[TITLE]" Action="createAndRemoveOnUninstall">
  <RegistryValue Action="write" Type="integer" Name="MACHINEMEMORYLIMIT" Value="1" KeyPath="yes"/>
</RegistryKey>

(在这种情况下,REGISTRYKEY和TITLE是我们传递给安装程序的两个属性)