0

我们有一个在 Visual Basic 6.0 上运行的项目,我们尝试在桌面桥中迁移。当我们使用 DAC 命令提示符时,一切正常。转换后的应用程序按原样转换,在任何测试计算机上都可以正常工作。

我们甚至设法添加了一个 COM Interop .NET 程序集,以便能够使用 UWP 功能(如 toast)

在任何开发机器上一切正常,但在测试机器上却不行。好吧,从 Visual basic 加载 COM Interop .Net 程序集似乎不起作用。

测试机和开发机的主要区别:

  1. 在开发机器上,Visual Studio 2017将 dll 注册为 COM 互操作(使用regasm, Under the Hood)
  2. 在测试机器上,我们首先制作一个.msi安装文件(使用Visual Studio 6 安装程序,是的 OLD 一个 interdev 风格的 IDE;),然后我们将 DAC 命令行应用到这个新的 .msi

因此,看来我们必须在目标测试机器上手动注册此程序集,使用regasm... 因为Visual Studio 6 安装程序不知道如何注册互操作程序集(使用regasm

我们如何应对这种情况?

作为细节,我们有一些简单的东西:

  • MyApplication.exe (vb6)
  • MyWrappers.dll(和.tlb)(为 COM 互操作标记的 .net C# 程序集并引用 UWP SDK 以便能够启动通知)

再一次,“安装”不会崩溃。仅调用 COM 互操作程序集以启动 toast 通知。

实际上,如果 DAC 没有为 COM 互操作打包此程序集,则此错误似乎很明显,这是有道理的。

任何想法 ?:)

塞巴斯蒂安

4

1 回答 1

1

是的,您必须将 COM 注册作为包部署的一部分。

一种方法是将 COM 注册添加到现有安装程序(或链接两个安装程序),然后再次在其上运行 DAC。

另一种选择是“手动”将 COM 注册添加到您已经拥有的 DAC 输出中(即添加到 registry.dat 文件中)。

第三种选择是根本不使用 COM,而是使用普通的 Win32 互操作从您的 VB6 应用程序调用 UWP API。

我已经发布了一篇关于后者的示例/博客文章: https ://blogs.windows.com/buildingapps/2017/02/01/adding-uwp-features-existing-pc-software/

于 2017-05-31T23:31:41.560 回答