VS2015安装项目报错80040154Class未注册

VS2015 Setup project error 80040154 Class not registered

我的公司正在开发一个使用 BOSCH Video SDK 的应用程序。我已经在我的安装项目中包含了所需的 DLL 文件,我相信它们在我的项目安装时被注册了,但是我在 运行 时收到 "Class not registered" 错误..

我怀疑我的问题是因为此应用程序是在 x64 中编译的,并且使用的是来自 BOSCH Video SDK 的 64 位 DLL。这是有意的,我们绝对希望在 64 位模式下安装和 运行。

准确的错误信息是"Retreiving the COM class factory for component with CLSID {D12FF18F-AFC2-4E6E-9FEB-8FC4B57FFC93} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))"。

在我的安装项目中,所有依赖项都标记为 Register: vsdraCOM。

我的设置项目和应用程序项目本身都将目标设置为 'x64'。

在我的安装项目中,我还实现了找到 here 的解决方案,其中详细说明了使用 Fix64bitInstallUtilLib.js 脚本和 64 位 InstallUtilLib.dll 正确安装 64 位项目而无需运行进入 BadImageFormatException 问题。我的项目安装和启动没有任何问题,但是当它到达使用 BOSCH Video SDK 的第一行时,我收到 "Class not registered" 错误。

我也曾尝试使用 regsvr32.exe 的 32 位和 64 位版本手动注册 DLL 文件,但每次我都收到错误消息 "entry-point DllRegisterServer" was not found。

我不确定还有什么可以尝试的。我觉得我缺少这个难题的关键部分。如果需要任何其他信息,请告诉我。

我们的最终目标是能够将我们的 setup.msi 文件部署到新的客户端机器上,而无需先手动安装 BOSCH Video SDK。我认为这会像包含所需的 DLL 文件和设置 Register: vsdraCOM 一样简单,但我想这并不那么简单。

我明白了。答案是将 Bosch Video SDK Runtime 包含在我的安装程序中,在我的项目中创建一个应用程序清单,然后将 SDK 作为依赖项添加到清单中。使用条件 'Release|x64' 将 PropertyGroup 添加到 CSPROJ 文件也很方便,这样清单仅在以发布模式编译时包含。

  1. 将 Bosch Video SDK Runtime 文件夹添加到源代码管理。

  2. 将运行时文件和文件夹添加到安装项目中的应用程序文件夹。

  3. 将 app.manifest 文件添加到项目并添加 SDK 的依赖部分。

  4. 使用文本编辑器编辑您的 CSPROJ 文件并添加带有条件 'Release|x64' 的 PropertyGroup,以便您的清单仅用于发布版本。

希望这在某些时候对某人有用。这里真正的教训是不时实际阅读帮助文件..