WiX Burn Bootstrapper 不调用 OnDetectRelatedBundle

WiX Burn Bootstrapper does not call OnDetectRelatedBundle

我有一个包含多个 ExePackage 和 MsiPackage 元素的捆绑包。它是一个 perMachine 包(所有 Msi 和 Exe 包都是 perMachine 或 ForcePerMachine) 我用 C# 写了一个自定义 BA;

安装正常,修改、卸载,Bundle 根据日志正确注册:

[06F8:0F3C][2015-10-07T11:12:32]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{eb3fd6f6-0cb2-4999-84e9-7d71f5ab1551}, resume: ARP, restart: None, disable resume: No
[06F8:0F3C][2015-10-07T11:12:32]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{eb3fd6f6-0cb2-4999-84e9-7d71f5ab1551}, resume: ARP, restart initiated: No, disable resume: No

但是,如果我再次启动 Setup.exe,根据我的理解,当调用 detect() 时,OnDetectRelatedBundle 应该触发——但实际上并没有。 (afaik 它应该记录,此外我添加了我自己的 Engine.Log 条目,它不会触发)

根据对注册表的调查(并在源代码中嗅探) 我发现密钥在 \HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft...

因为我打开了同一个包,应该使用同一个UpgradeCode。

问题:

注册在wownode上可以吗,相关bundle的检测也看wownode吗? (我没有 3.10 源代码,因为我找不到分支,但是从 3.8 代码来看,以下关于 writing/reading 注册表的常量似乎很有趣:

const LPCWSTR BURN_REGISTRATION_REGISTRY_UNINSTALL_KEY = L"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

)

关于相关的包检测,我还能错过什么?

Burn 引擎永远不会为当前正在执行的捆绑包调用 OnDetectRelatedBundle,因为它不是相关的捆绑包 - 它是 捆绑包。 OnDetectBeginfInstalled 参数将告诉您是否安装了捆绑包。

源代码位于 https://github.com/wixtoolset/wix3。 master 分支总是有最新版本的代码。