ComponentGroupRef无法使用WiX库

时间:2013-08-12 17:01:35

标签: wix windows-installer wixlib

我在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图书馆。

1 个答案:

答案 0 :(得分:0)

您尚未发布整个错误,但我在使用您的示例时遇到的错误是:

  

未解决对“片段:”

部分中“媒体:1”的引用的引用

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

<MediaTemplate EmbedCab="yes" />

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

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