0

我正在尝试使用 WiX 安装程序在 COM 上注册一个库,但它似乎忽略了我。

到目前为止我尝试过的是:

  1. 使用heat.exe收集与 .dll 对应的所有信息。

  2. 创建了一个片段,其中包含我从 heat.exe 获得的所有信息。 我将所有收集到的信息复制到一个组件中,以使事情变得更容易。

  3. 我使用 a 调用组件ComponentRef,该组件指向包含要注册的 dll 相关信息的组件。

  4. 我使用自定义操作将其注册到 COM:

<CustomAction Id="RegisterComLibrary" Directory="ComPublishDllFolder" ExeCommand="regsvr32.exe /s [ComPublishDllFolder]MyLibrary.dll />

  1. 插入:CustomAction_InstallExecuteSequence

    <InstallExecuteSequence> <Custom Action="RegisterComLibrary" After="InstallFinalize">NOT Installed</Custom> </InstallExecuteSequence>

但是,当我尝试使用oleview在 COM 中查找 .dll或尝试将其与 Visual Studio 一起使用时,我看不到它。

我做错了什么?

注意:我在尝试手动注册时收到以下消息:

The module "MyComObject.dll" was loaded but the call to DllRegisterServer failed.

Ensure that "MyComObject.dll" is a valid DLL or OCX and try again.

4

1 回答 1

0

对不起,这完全是我的错。对在 COM 中发布的 .Net dll 如何工作的误解。

当我在 COM 中发布我的 .Net 编译 dll 并尝试在 .Net 项目中使用它时,它会发出一条消息,说我不能使用在 .Net 中编译的 COM 库,因为它是一个 .Net 库。

起初我认为这是一个错误,但实际上,如果我尝试在 C++ 项目中使用该库(例如),它可以正常工作。

问题是 Visual Studio 不允许使用以与您构建项目相同的语言发布的 COM 库,显然......

于 2013-11-04T10:09:19.267 回答