gpt4 book ai didi

c - 为什么 Windows 安装程序在依赖于其他 DLL 时不使用我的 EmbeddedUIHandler?

转载 作者:行者123 更新时间:2023-11-30 17:14:09 32 4
gpt4 key购买 nike

我正在尝试处理 .msi 中的所有用户界面 (UI) 对话框安装软件包,带有 EmbeddedUIHandler为此,我创建了一个 setupui.dll其中包含三个方法:InitializeEmbeddedUI, ShutdownEmbeddedUI, EmbeddedUIHandler ,并将其放入 MsiEmbeddedUI 内表(使用 installshield)并且工作得很好。

问题是当setupui.dll时依赖于其他外部 DLL,这次 Windows 安装程序不会使用我的 dll,它使用默认的 ui,我使用 Installshield 添加了其他 DLL 依赖项,如下所示:

enter image description here

最佳答案

我不确定 Windows Installer 在这里允许什么。然而,有三件事引起了我的注意:

  • MsiEmbeddedUI table的 Attributes 列对于 SetupUI.dll 应该为 3(正如它所做的那样),对于其余的为 0。根据文档,如果 1 位不存在,则忽略 2 位,但所有其他文件都可以更好地描述为“它可能是用户界面使用的资源。”
  • 详细日志:它是否表明发生了什么?它是否显示加载提供有用错误代码的SetupUI.dll 失败(提示:找不到文件可能指的是依赖项)?这是否表明它甚至没有尝试加载您的 DLL?查找带有 EEUI 的行,至少在成功的情况下是如此。
  • 如果 Windows Installer 确实尝试加载 SetupUI.dll,它会进行到什么程度?如果它足够让您运行一些代码并显示一个消息框,那么此时已经提取了哪些文件?如果提取依赖项,能否通过SetDllDirectory或AddDllDirectory确保其目录在DLL路径上?如果未提取依赖项,它们是否会在稍后出现,因此延迟加载等方法可能会有所帮助?

对于第三点,如果您无法在其中看到消息框,进程监视器可以帮助您诊断正在发生的情况,但可能不太清楚。或者,使用加载程序快照和调试 View 可能会为您提供一组相关信息,但它可能会被额外的噪音淹没。

关于c - 为什么 Windows 安装程序在依赖于其他 DLL 时不使用我的 EmbeddedUIHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30458397/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com