在 WIX Bundle 中更改 属性

Changing a property inside a WIX Bundle

我的构建系统使用 Wix 创建了一个 MSI,然后使用 WIX 将其捆绑到另一个充当引导程序的 EXE 中。引导程序确保安装了所有依赖项(.NET 等)。

我想根据下载者更改 MSI 中的一些属性。构建完成后很久我才会知道设置。

我可以通过编辑属性数据库来使用 MSI 做到这一点。但是,当我对捆绑包尝试相同的技术时,它(WIX 互操作库)说它无法打开文件。

那么,我该如何做这些事情之一:

  1. 在 WIX 捆绑包 EXE 中编辑一个 属性(然后我可以将其传递给捆绑包)
  2. 提取并重新插入捆绑的 MSI

您可以使用命令行将属性传递给 wix 包。然后捆绑包可以将 属性 传递给 MSI。

WiX Bootstrapper: How do I set burn variables from the command line?

Pass parameters from bootstrapper to msi bundle package

我能想到的另一个解决方案:如果您编写自己的自定义引导程序,您将可以访问 IBootstrapperEngine::SetVariable,并且您可以用它做任何您想做的事情,包括设置 MSI 可以读取的属性. https://wixwpf.codeplex.com/ 应该很容易。

如果你问是否有像 orca.exe 这样的 Wix 刻录工具,我会说没有。

可能的选择:

  • 即时生成 wix burn 安装程序(包括编译)
  • 拆分可执行文件:将 Compressed 属性设置为 "no"。然后您就可以访问 *.msi。