分发在 VB6 中开发的 Visio 插件

Distributing Visio addin developed in VB6

我有旧的 VB6 插件 (Visio) 源代码,它在编译时生成 DLL。我需要将此 dll 分发给最终用户,但是当我 运行 在用户的 PC 上以管理员身份执行以下命令时:

regsvr32 MyAddin.dll

它抛出:

The Module "MyAddin.dll" was loaded but the call to DllRegisterServer failed with error code 0x80004005.

为了调试这个,我创建了一个新的 VB6 插件项目,在 Connect.Dsr 中将应用程序更改为 "Microsoft Visio"。并尝试将此 dll 安装到新的 windows 10 个具有 Visio 的 VM。仍然有同样的错误。

因为这个 dll 在我的电脑上运行,我的电脑和 VM/user 的电脑之间唯一的显着区别是 VB6 Enterprise IDE,所以我安装了 "Visual Basic 6 Enterprise" 在 VM 上,之后我也可以在那里注册 dll。显然我不能要求最终用户安装 Visual Basic 6 Enterprise,我怎么知道 "Addin" 项目模板的依赖项?或者我应该在我的设置中捆绑 VB 6 Enterprise 中的最低限度文件吗?

这里是生成dll的依赖截图,没什么特别的

Windows 错误“0x80004005”尤其发生在用户因不可预见的原因而被拒绝访问应用程序、服务或设备的情况下。

来自 https://docs.microsoft.com/en-us/sysinternals/downloads/procmon 的 Process Monitor 可能会有一些帮助。 运行 作为管理员,创建一个合适的过滤器,看看是否弹出有用的东西。

事实证明,VB6 office 插件依赖于插件设计器对象库 (msaddndr.dll),而该库不可用 post Office 2013

我注册了 MSADDNDR.dll 并解决了问题。

更多详情https://blogs.msdn.microsoft.com/vsod/2012/11/21/vb6-based-add-ins-may-fail-to-work-in-office-2013/