Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 使特征依赖于其他两个特征_Wix - Fatal编程技术网

Wix 使特征依赖于其他两个特征

Wix 使特征依赖于其他两个特征,wix,Wix,我正在创建一个包含两个功能的安装程序:A和B。同时安装A和B时,我希望隐式安装第三个功能:C 为了理解我为什么要这样做,A和B是不相关的组件,C是连接A和B的“粘合”功能。因为A和B实际上是很多可选组件,我想对用户隐藏这种复杂性,只要选择A和B就安装C组件 我想我可以使用条件元素来实现这一点,但是我的天真方法((&A=3)和(&B=3))不起作用。最简单的解决方案是什么?MSI并不真正支持这一点。我建议几种方法中的一种 选项1-使特性C的所有组件也属于特性A和B 选项2-将功能C作为功能a和B的

我正在创建一个包含两个功能的安装程序:A和B。同时安装A和B时,我希望隐式安装第三个功能:C

为了理解我为什么要这样做,A和B是不相关的组件,C是连接A和B的“粘合”功能。因为A和B实际上是很多可选组件,我想对用户隐藏这种复杂性,只要选择A和B就安装C组件


我想我可以使用
条件
元素来实现这一点,但是我的天真方法(
(&A=3)和(&B=3)
)不起作用。最简单的解决方案是什么?

MSI并不真正支持这一点。我建议几种方法中的一种

选项1-使特性C的所有组件也属于特性A和B

选项2-将功能C作为功能a和B的父功能。必须安装C才能安装子功能a或B

选项3-将功能A B和C作为兄弟,并使用自定义操作强制执行业务规则,即如果选择A或B,则必须安装C


就我个人而言,我会选择第二种#1如果你真的想隐藏C的存在,这取决于你的场景。选项3适用于更复杂的场景,不太纯粹。

谢谢!我只是想澄清一下,我试图完成“和”的情况,而不是“或”的情况(否则选项1将是一个完美的匹配)。但是我怀疑第一句话就是答案,MSI没有原生的方法来做这件事。你的代码会允许一些依赖注入吗?如果A和B中的组件(比如XML或注册表配置数据)都不存在,您可以将功能C组件与A或B一起放置并进入休眠状态吗?C组件可以与A或B一起安装,但由于它们只有在两者都存在时才有意义,我更希望它们只在两个功能都存在时才存在,因为C组件可能会有其他依赖性导致安装相当大。它可能会把CAN踢到路上,但你可以考虑至少让C自己的MSI,并使用A来安装/卸载A、B、ABC,使用C on。但是,如果你不得不编写自己的WIX引导程序,那么它就相当于@Chris的选项3。