我有一个需要为其制作安装程序的 C++ activex 控件。它需要删除 dll 并制作一些注册表项。
我有大约 6 个 .RGS 文件,我通过 regsvr32 进行自我注册,这些文件可以工作。
要进行安装程序,我手动将 RGS 脚本移植到 Visual Studio 2008 Windows 安装程序注册表 GUI 中。我觉得它不可能做一个确切的端口(例如像 ForceRemove 这样的 RGS 关键字)。
没有办法从 IDL 文件生成这些文件吗?我做错了吗?
我有一个需要为其制作安装程序的 C++ activex 控件。它需要删除 dll 并制作一些注册表项。
我有大约 6 个 .RGS 文件,我通过 regsvr32 进行自我注册,这些文件可以工作。
要进行安装程序,我手动将 RGS 脚本移植到 Visual Studio 2008 Windows 安装程序注册表 GUI 中。我觉得它不可能做一个确切的端口(例如像 ForceRemove 这样的 RGS 关键字)。
没有办法从 IDL 文件生成这些文件吗?我做错了吗?
你这样做是不对的。.rgs 文件在那里,以便组件可以自行安装。任何安装程序都支持让组件自行安装。例如,一个 Visual Studio 安装项目,设置 Register 属性。
SelfReg 不是 MSI 安装中的最佳实践,因为它已超出进程且易碎。Visual Studio 2008 安装程序受到限制,但您应该能够将 Register 属性设置为 vsdrfCOM 而不是 vsdrfCOMSelfReg。这将导致从您的 DLL 中获取 COM 元数据并在 MSI 中本地创作。
构建 MSI 后,您应该注意到 SelfReg 表是空的,并且注册表表中有大量为您的 COM 数据自动创作的行。
注意:VDPROJ 在提取此 COM 时有点笨拙,因此它可能无法正常工作。您可能必须考虑使用更强大的工具,例如 InstallShield 或 Windows Installer XML。