0

我为我编写的应用程序添加了一个自动化接口。类型库作为资源存储在应用程序中,在启动时,应用程序调用RegisterTypeLib自动注册类型库。

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

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

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

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

4

1 回答 1

1

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

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

于 2013-11-03T11:15:20.370 回答