【问题标题】:Help with ActiveX Install? Merge Modules - Windows Vista and Windows 7帮助 ActiveX 安装?合并模块 - Windows Vista 和 Windows 7
【发布时间】:2010-04-07 22:15:44
【问题描述】:

我正在 VS2008 中构建一个 ActiveX 控件安装程序,它使用 CRT 和 MFC 合并模块进行安装。当我的控件尝试在 Windows 7 上注册时失败。

Dependency Walker 说我在尝试注册我的控件并且安装失败时缺少 mfc90u.dll、msvcr90.dll 和 msvcp90.dll 依赖项。合并模块是否应该处理这个问题?我的输出 OCX 正在使用 vsdrpCOMSelfReg 选项进行注册。从我在其他论坛上阅读的内容来看,这可能不是最好的方法,此时我应该尝试什么?

在 Windows XP 上可以正常安装。

2010 年 4 月 8 日更新:

更改为 vsdrpCOM 并且安装成功(不足为奇),但是之后找不到 msvcr90.dll。我认为这是由 CRT (microsoft_vc90_crt_x86.msm) 的合并模块处理的?在 Windows XP 上,Dependency Walker 在 Windows/System32 中找到它,而不是像我预期的那样在 SxS 文件夹中。在 Windows 7 上,它根本找不到它。我应该自己将 msvcr90.dll 放入 Windows/System32 吗?好像不是。

2010 年 4 月 20 日更新:

看起来 Dependency Walker 似乎在控件本身的顶级依赖项中找到了 msvcr90.dll,尽管 msvcp90.dll 和 mfc90u.dll 都对 msvcr90.dll 也有隐式/转发的依赖项,而那些不可能在 Dependency Walker 中解决。但是,该控件可以正常注册并运行加载这些库。这是可以忽略的吗?

【问题讨论】:

    标签: dll windows-7 installation merge-module


    【解决方案1】:

    您需要的两个模块是: - Microsoft_VC90_MFC_x86.msm - Microsoft_VC90_CRT_x86.msm

    对于 64 位应用程序,您应该使用 - Microsoft_VC90_MFC_x86_64.msm - Microsoft_VC90_CRT_x86_64.msm

    不幸的是,自行注册会导致很多问题,您应该手动将所需的注册表项添加到安装项目中。 (WiX 的“加热”工具提供了一种非常简单的方法来捕获这些信息,尽管如果您编写了 DLL,您应该已经知道所需的条目)。自注册的真正问题是,如果它失败了,那么安装程序就会死掉。最明显的问题是,如果您的 DLL 需要额外的模块来成功完成自我注册并且它们正在被安装同时,那么您不能保证系统会发现它们存在于自我注册中。注册完成。

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2014-05-03
      • 2013-06-22
      • 2011-06-26
      • 2011-04-06
      相关资源
      最近更新 更多