Reg-free COM - COM dll相对于客户端exe的位置

时间:2011-02-09 15:47:30

标签: com regfreecom

我想使用reg-free com,这样我就不必注册我的旧版com组件了。但是,我希望能够将com dll放在不在客户端exe目录之内或之下的位置,例如, .... \ lib中。我无法在服务器清单文件中执行此操作,因为它不允许相对或绝对路径。

有没有人知道是否有办法解决这个问题?


更新: 我只找到了在XP上工作的相对路径。但是,我可以使用Activation Context API在Windows Server 2008上使用绝对路径,这样很酷。我现在的问题是我的COM组件对托管数据库驱动程序具有静态依赖性,但目前它没有找到它。从我读到的关于清单文件的内容,我希望我可以简单地将另一个元素添加到指向此dll的COM reg-free清单中,因为它与COM dll位于同一目录中,但我无法使其工作。因此,总而言之,我在一个目录中有一个exe,它使用Activation Context API来引用它找到并正确加载的另一个目录(不是exe目录的子目录)中的COM清单/ dll。但是我在与COM dll相同的目录中也有一个托管数据库驱动程序DLL,我想知道如何使用清单文件加载它 - 如果可能的话。

1 个答案:

答案 0 :(得分:4)

我通过使用父目录作为当前目录运行exe来实现此目的。 即使用此文件夹结构

  • parentdir /
  • parentdir / MyApp的/
  • parentdir / somedependency /

然后使用“parentdir”作为当前目录,您可以运行您的exe作为 “\ MYAPP \ MyApp.exe的” 和myapp.exe.manifest可以包含对“somedependency”中某些内容的引用,如

<file name=".\somedependency\somecomassembly.dll" />

这适用于Windows Server