wix burn 自定义引导程序 - 自定义编译器扩展

wix burn custom bootstrapper - custom compiler extension

我有一个使用 burn 的自定义引导程序,其中我必须在启动时检测特定打印机的驱动程序版本并将此值存储在 burn 变量中以供以后使用。到目前为止,我是在 BootstrapperApplication 的覆盖 Run 方法中这样做的,但我宁愿创建一个 WixExtension,以便能够做这样的事情:

<customUtil:PrinterDriverVersion PrinterName="somePrinter"
                                 Variable="variableToStoreVersionValue" />

这类似于 wix UtilExtension 中的 RegistrySearch 元素。

书"WiX 3.6: A Developer's Guide To Windows Installer XML"中有一个CompilerExtension的例子,但我不明白。为什么我需要一个新的 msi table?我只想在 burn 中使用它,而不是在 msi 安装程序中使用它?

我查看了 wix 的源代码,试图了解 RegistrySearch 元素的工作原理。所以 UtilCompiler 只是解析 xml 属性,然后在 WixRegistrySearch table 中创建一些行。此 table 由活页夹迭代,活页夹将所有搜索写入 BurnManifest,然后创建结果输出文件 (.exe)。但是这种搜索在运行时何时何地执行?

CompilerExtension 是否能够完成我的任务,还是我走错了路?

WiX 目前没有此功能。 VSExtension 也需要此用例来支持使用捆绑包将 VSIX 包安装到 VS2017 中,因为需要执行代码来检测 VS2017 实例。我创建了一个功能请求 here

UtilExtension 搜索很特殊。如您所说,它们最终出现在 BurnManifest 中。执行搜索的代码在 Burn engine.