【问题标题】:WiX Burn Bootstrapper does not call OnDetectRelatedBundleWiX Burn Bootstrapper 不调用 OnDetectRelatedBundle
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢!我认为relatedbundle 被解雇了,因为我测试了好几次;可能每当它起作用时,我都会重新构建以使 dll 中的小变化成为捆绑包中的一部分,从而使其相关。
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多