当使用 CreateObject 从 VBScript 通过 COM 引用 C++ DLL 时,如何处理 DLL 版本?

How can you handle DLL versions when referencing C++ DLL's over COM from VBScript with CreateObject?

我们使用的软件要求使用 VBS,但我们的分析库是用 C++ 编写的,所以我创建了一个 C++ DLL 来抽象分析库并通过 COM 接口传递它们,这样我就可以使用 CreateObject.

在 VBS 中访问这些函数

我有一个安装程序在 ProgramFiles 中创建一个目录来存储相关的 DLL 文件,然后它使用 RegAsm.exe 注册这个目录以供 COM 使用。

目前运行正常,很好,但会导致以下问题:如果两个 VBS 脚本需要两个不同版本的 DLL,我如何指定在 VBS 中访问哪个版本?

CreateObject 似乎无法指定您想要的 DLL 版本,所以我不太确定从这里去哪里......处理这个问题的正确方法是什么?

目前如果有人想使用旧的 VBS 脚本,他们别无选择,只能 运行 相应的旧版本安装程序将他们的 DLL 降级到正确的版本。

我刚刚决定更新 ProgID 以包含每个主要版本的当前版本 build/release。

我不确定这是否被认为是好的做法,但这似乎是在 VBScript 中指定 DLL 版本的唯一方法。