【问题标题】:ComponentGroupRef not working with WiX libraryComponentGroupRef 不适用于 WiX 库
【发布时间】:2013-08-12 17:01:35
【问题描述】:

我在 WiX 中创建了一个包含单个 ComponentGroup、Component 和 File 的库,这样:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
  <ComponentGroup Id="MyComponentGroup" Directory="WindowsFolder">
    <Component Id="MyComponent" Guid="...">
      <File Id="MyFile" Source="file.txt" KeyPath="yes" />
    </Component>
  </ComponentGroup>
</Fragment>
</Wix>

然后我创建了一个 WiX 项目,添加了对该库的引用(作为项目引用),我正在使用此代码:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="My Product" Language="1033"
         Version="1.0.0.0" Manufacturer="Myself"
         UpgradeCode="xxxxx">
  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

  <Feature Id="Feature_Product" Title="Main Product"
         Level="1" Absent="disallow" Description="Core functionality.">
    <ComponentGroupRef Id="MyComponentGroup" />
  </Feature>
</Product>

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="WindowsFolder" />
  </Directory>
</Fragment>
</Wix>

但是我收到了Unresolved reference 的错误消息。有什么我想念的吗? 或者库是否只适用于 UI 而不是文件?

编辑:

我添加了完整的代码。

如果我使用 FeatureRef 并将 Feature 移动到库中,它可以工作,但我想将功能保留在主项目中,并且库中只有 Component

【问题讨论】:

  • 如果您发布构建库和主项目的方式会很棒

标签: wix windows-installer wixlib


【解决方案1】:

你还没有发布你的整个错误,但是我在使用你的例子时得到的错误是:

“片段:”部分中对符号“媒体:1”的未解决引用

未解析的引用是缺少的媒体元素;文件需要存储在一个文件柜中,默认为File/@DiskId="1",这就是它寻找“Media:1”的原因。您需要告诉 WiX 在哪里存储安装文件。如果您使用的是 WiX 3.7,请将其添加到您的 &lt;Package&gt; 元素中:

<MediaTemplate EmbedCab="yes" />

如果您使用的是早期版本:

<Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />

【讨论】:

  • Media 元素存在于我的包中,但不在我的摘录中。真正的问题是缺少对目录结构的引用。
  • 如果不是问题的解决方案,则不应将其标记为答案...
猜你喜欢
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 2014-07-18
  • 1970-01-01
相关资源
最近更新 更多