我的任务是基于第 3 方提供的相同 wixlib 构建 2 个安装程序。完整安装程序包括所有组件,精简版仅包含核心内容。我假设 wixlib 具有以下结构:
<Fragment>
<ComponentGroup Id="CoreStuff">
<!-- List of components for this bit, roughly 5MB -->
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="ExtraStuff">
<!-- List of components for this bit, roughly 45MB -->
<ComponentRef Id="BigFile1"/>
</ComponentGroup>
<Component Id="BigFile1">
<File Id="BigFile1_bin" Name="BigFile1.bin"/>
</Component>
</Fragment>
安装程序是在 msbuild 中构建的。这些组件通过以下方式包含在项目中:
<Feature Id="ThirdPartyStuff">
<ComponentGroupRef Id="CoreStuff"/>
<?if $(var.Configuration) = "Full"?>
<ComponentGroupRef Id="ExtraStuff"/>
<?endif?>
</Feature>
最后,正如预期的那样,我得到了 LGHT0267 错误:
错误 LGHT0267:找到孤立的组件“BigFile1”。如果这是一个产品,每个组件必须至少有一个父功能。要将组件包含在模块中,您必须将其直接包含为模块元素的组件元素,或通过 ComponentRef、ComponentGroup 或 ComponentGroupRef 元素间接包含。
有没有人想出如何有选择地使用wixlib中提供的组件的解决方法?我可以ExtraStuff
为用户包含单独的功能,但这里的目标是缩小安装程序。我可以礼貌地要求第三方提供两个单独的 wixlib,但我想避免它。