首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在链接wixlib时处理孤立组件

在链接wixlib时处理孤立组件
EN

Stack Overflow用户
提问于 2015-04-08 09:10:41
回答 2查看 1.8K关注 0票数 2

我的任务是构建两个安装程序基于相同的wixlib由第三方提供。完整的安装程序包括所有的组件,只有核心的东西。我假设wixlib有以下结构:

代码语言:javascript
复制
<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中生成的。这些组件包括在项目中的方式如下:

代码语言:javascript
复制
<Feature Id="ThirdPartyStuff">
  <ComponentGroupRef Id="CoreStuff"/>
  <?if $(var.Configuration) = "Full"?>
  <ComponentGroupRef Id="ExtraStuff"/>
  <?endif?>
</Feature>

最后,正如预期的那样,我得到了LGHT0267错误:

错误LGHT0267:找到孤立的组件‘BigFile1 1’。如果这是一个产品,每个组件必须至少有一个父功能。若要在模块中包含组件,必须将其直接包含为模块元素的组件元素,或通过ComponentRef、ComponentGroup或ComponentGroupRef元素间接包含组件。

有没有人想过如何有选择地使用wixlib中提供的组件?我可以为用户提供ExtraStuff作为单独的特性,但是这里的目标是缩小安装程序。我可以礼貌地请求ThirdParty提供两个单独的wixlib,但我想避免它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-15 09:00:09

经过一番努力,我终于找到了解决办法,令人讨厌的解决办法:

  1. 创建虚拟wixproject,并像通常那样包含wixlib。
  2. 添加虚拟项目作为最终项目的依赖项
  3. 在虚拟项目的构建后事件中,将powershell脚本设置为运行,该脚本将:
    • 使用二进制文件输出的dummy.msi (开关-x)使用dark.exe进行反编译
    • 基于new.wxs的工艺dummy.wxs文件包含标签,使组件具有条件性

  1. 在最终项目中包括new.wxs
票数 1
EN

Stack Overflow用户

发布于 2015-04-08 17:43:57

我不认为wix能够只使用wixlib包的一部分。将wixlib看作合并模块(没有可查看的表)。您不能只使用合并模块的一半,也不能只使用wixlib的一半。

恐怕你得要求第三方把他们的wixlib分解成两个包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29510444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档