安装期间注册类型库

时间:2013-11-03 09:35:49

标签: visual-studio com automation installation typelib

我已经为我编写的应用程序添加了自动化接口。类型库作为资源存储在应用程序中,启动时,应用程序调用{​​{1}}自动注册类型库。

我刚刚发现这个对RegisterTypeLib的调用仅在开发期间有效,其中应用程序是从Visual Studio启动的,因为Visual Studio以管理员身份运行,并且应用程序继承了它。从命令行运行调试版本时,或者运行安装程序安装的应用程序时,应用程序未以管理员身份运行,并且对RegisterTypeLib的调用失败。

所以我想我应该在安装期间注册类型库(这也会产生很好的副作用,即无需先运行应用程序即可使自动化界面可用)。安装程序是Visual Studio中的Windows Installer项目。

是否可以在安装过程中实现RegisterTypeLib的效果(如果是,如何)?当安装程序解决方案打开时,Visual Studio会显示一个名为“Registry”的编辑器,可以将键添加到注册表中,但我无法单独添加每个键 - 我需要以一种方式添加整个类型库,像RegisterTypeLib那样。

编辑:在manuell的暗示和我自己的一些研究之后,问题归结为: 我需要从安装程序中调用RegisterTypeLib(这也将创建其他不需要MyApp /RegServer创建的注册表项);一个人怎么做到这一点?我在Visual Studio安装程序解决方案中添加了“安装”自定义操作,但尚未找到如何触发它。

1 个答案:

答案 0 :(得分:1)

usal方式是让安装程序使用命令行参数/ regserver或/ unregserver启动应用程序。如果您使用Framework(MFC / ATL),则会自动完成所有注册(注销)步骤的处理。

如果你想自己做所有事情,请检查“main”的参数,并调用RegisterTypeLib。 Windows安装程序应该使用/ regserver启动EXE,如果它知道这是一个com服务器。