我的任务是根据第三方提供的相同wixlib构建2个安装程序。完整安装程序包括所有组件,Lite仅核心内容。我假设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:找到了孤立的组件&#39; BigFile1&#39;。如果这是一个产品,则每个组件必须至少有一个父功能。要在模块中包含组件,必须将其直接包含在Module元素的Component元素中,或者通过ComponentRef,ComponentGroup或ComponentGroupRef元素间接包含。
有没有人想出如何有选择地使用wixlib中提供的组件?我可以将ExtraStuff
包含为用户的单独功能,但此处的目标是缩小安装程序。我可以礼貌地问ThirdParty提供两个单独的wixlib,但是我想避免它。
答案 0 :(得分:1)
我不认为wix只能使用wixlib包的一部分。将wixlibs视为合并模块(没有可查看的表)。您不能仅消耗合并模块的一半,并且您只能消耗wixlib的一半。
我担心你不得不要求第三方将他们的wixlib分成两个包。
答案 1 :(得分:1)
经过一番奋斗,我得到了解决方法,讨厌的解决方法: