我有一个使用刻录的自定义引导程序,我必须在启动时检测特定打印机的驱动程序版本,并将此值存储在刻录变量中供以后使用。到目前为止,我在Run
的覆盖BootstrapperApplication
方法中执行了此操作,但我宁愿创建一个WixExtension
,以便能够执行以下操作:
<customUtil:PrinterDriverVersion PrinterName="somePrinter"
Variable="variableToStoreVersionValue" />
这类似于wix RegistrySearch
中的UtilExtension
元素。
“WiX 3.6:Windows Installer XML开发人员指南”一书中有一个CompilerExtension
的示例,但我不明白。为什么我需要一个新的msi表?我只是想在刻录中使用它,而不是在msi安装程序中使用它?
我查看了wix的源代码,试图了解RegistrySearch
元素的工作原理。所以UtilCompiler
只解析xml属性,然后在WixRegistrySearch
表中创建一些行。该表由绑定器迭代,绑定器将所有搜索写入BurnManifest
,然后创建生成的输出文件(.exe)。但是这个搜索何时何地在运行时执行?
CompilerExtension
是否有能力完成任务,或者我的方向错误了?
答案 0 :(得分:1)
今天WiX没有此功能。 VSExtension还需要此用例来支持使用bundle将VSIX软件包安装到VS2017中,因为需要执行代码来检测VS2017实例。我创建了一个功能请求here。
UtilExtension搜索很特别。正如你所说,他们最终进入了BurnManifest。执行搜索的代码位于Burn engine。