提问人:lequinne 提问时间:4/10/2018 更新时间:4/10/2018 访问量:622
WiX 安装程序 - 使用不同的属性多次运行 MSI?
WiX Installer - Run an MSI multiple times with different properties?
问:
我正在使用 WiX 工具集(我的第一个)构建引导程序。它适用于 Microsoft Flight Sim 系列的附加包。MFSF 有多个版本,客户通常希望将我们的附加包安装到多个模拟器中。这自然意味着将许多相同的文件安装到多个不同的根目录中。我知道我可以通过将属性从引导程序传递到 MsiPackage 来轻松选择一个根文件夹。但是有没有办法让软件包安装到多个根文件夹呢?
我的标题可能有点误导 - 两次运行相同的 MSI 很可能是一个巨大的禁忌。我真的在问,将一组文件安装到多个用户选择的位置,而无需将它们多次包含在我的引导程序中,我可以采取的最佳方向是什么?
谢谢 法
答:
1赞
Christopher Painter
4/10/2018
#1
这听起来像是我必须在IsWiX安装程序中与Visual Studio集成所要做的事情。我有一堆文件需要安装到每个检测到的 VS 版本中。为此,我:
1) 创作 AppSearch 以设置具有目标的属性。
2) 创建组件并安装到我的目录。这些实际上从未被任何东西使用过,但它是无害的。
3) 使用 CopyFile 元素将文件复制到目标。如果 AppSearch 未找到目标,则 MSI 会隐式跳过重复。
https://github.com/iswix-llc/iswix/blob/master/Source/Installer/IsWiX/Code/Product.wxs
https://github.com/iswix-llc/iswix/blob/master/Source/Installer/IsWiXNewAddInMM/IsWiXNewAddInMM.wxs
评论
0赞
lequinne
4/11/2018
听起来完全一样的问题,我会尝试你的方法并让你知道。谢谢!
0赞
Stein Åsmul
4/11/2018
自从我使用此功能以来,它已经很久了,但我记得 MSI 甚至会在卸载时删除重复的文件 - 前提是在卸载期间卸载了托管组件。我认为这应该是一个很好的解决方案,但还有很多工作要做。祝你好运。如果软件包很大,无法编译,也许可以尝试使用未压缩的外部源文件或外部 cab 来加快编译过程?(我从未尝试过使用 WiX 的未压缩文件,但应该很容易做到)。或者,如果您有巨大的二进制文件,请在安装测试期间将它们替换为微小的测试文件?
0赞
Christopher Painter
4/11/2018
当然,它会删除它们。自 2008 年以来,我广泛使用这种模式。几乎没有什么可测试的。
0赞
Stein Åsmul
4/11/2018
感谢您验证 Chris - 我最近没有使用过很多东西。关于测试;我正在考虑一次安装多少个产品的不同组合。有一些排列,但你是对的,不是最糟糕的测试问题。我想这取决于要安装的产品有多大。如果他们很大,我希望 OP 有一些 QA 人员忙于帮助分担繁琐的测试。大包裹从来都不是一件有趣的事情,因为周转时间很长。
0赞
Christopher Painter
4/11/2018
我在他的问题中没有看到任何说这是一个大包裹的内容。我也看不出他必须安装多少文件。我的模式在扩展方面不是那么好......它只为少数几个文件而设计。
评论