我在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
图书馆。
答案 0 :(得分:0)
您尚未发布整个错误,但我在使用您的示例时遇到的错误是:
未解决对“片段:”
部分中“媒体:1”的引用的引用
未解析的引用是缺少的媒体元素;文件需要存储在一个文件柜中,默认为File/@DiskId="1"
,这就是为什么它正在寻找“媒体:1”。您需要告诉WiX存储安装文件的位置。如果您使用的是WiX 3.7,请将其添加到<Package>
元素中:
<MediaTemplate EmbedCab="yes" />
如果您使用的是早期版本:
<Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />