【问题标题】:Changing a property inside a WIX Bundle更改 WIX Bundle 中的属性
【发布时间】:2015-01-12 22:18:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    您可以使用命令行将属性传递给 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。

    【讨论】:

    • 我想将变量烘焙到客户从网站下载的 MSI/exe 中,以便它包含客户特定的设置。
    • @RobertWagner “使用 WIX 将其捆绑到另一个充当引导程序的 MSI 中”表明您没有使用 WiX 引导程序。如果你要切换到那个,克里斯的回答会很有意义。
    • @TomBlodget 我正在使用 WIX 来创建引导程序
    • @ChrisEelmaa 感谢您提供有关传递参数的信息。我研究了即时生成安装程序。如果我使用构建输出中的 .wixobj 文件,我不需要太多。不过目前,我正在内存中编译一个包装引导程序的 exe。
    • @RobertWagner 很高兴您正在寻找解决方案。但是,WiX Bootstrapper 是 EXE,而不是 MSI。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多