【发布时间】:2015-10-07 10:54:46
【问题描述】:
我有一个包含多个 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 代码来看,以下关于写入/读取注册表的 const 似乎很有趣:
const LPCWSTR BURN_REGISTRATION_REGISTRY_UNINSTALL_KEY = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
)
关于相关的捆绑检测,我还有什么遗漏的吗?
【问题讨论】:
标签: c# wix windows-installer burn