【问题标题】:windows installer for COM componentCOM 组件的 windows 安装程序
【发布时间】:2011-04-03 20:28:18
【问题描述】:

我有一个需要为其制作安装程序的 C++ activex 控件。它需要删除 dll 并制作一些注册表项。

我有大约 6 个 .RGS 文件,我通过 regsvr32 进行自我注册,这些文件有效。

要进行安装程序,我手动将 RGS 脚本移植到 Visual Studio 2008 Windows 安装程序注册表 GUI。我觉得不可能做一个确切的端口(例如像 ForceRemove 这样的 RGS 关键字)。

难道没有办法从 IDL 文件生成这些文件吗?我做错了吗?

【问题讨论】:

    标签: com activex windows-installer idl rgs


    【解决方案1】:

    SelfReg 不是 MSI 安装中的最佳实践,因为它处于进程外且脆弱。 Visual Studio 2008 安装程序受到限制,但您应该能够将 Register 属性设置为 vsdrfCOM 而不是 vsdrfCOMSelfReg。这将导致从您的 DLL 中获取 COM 元数据并在 MSI 中本地创作。

    构建 MSI 后,您应该注意到 SelfReg 表是空的,并且注册表表中有大量为您的 COM 数据自动创作的行。

    注意:VDPROJ 在提取此 COM 时有点笨拙,因此它可能无法正常工作。您可能必须考虑使用更强大的工具,例如 InstallShield 或 Windows Installer XML。

    【讨论】:

    • 好的,是的,vsdrfCOM 是“无法提取注册信息”之类的。我去看看 WIX。有没有理由手动输入注册码?
    • 是的。 COM 提取可能是一个令人毛骨悚然的过程,有时它会失败。在这些情况下,我对 VM 进行快照/配置文件/差异分析以找出它遗漏的内容,然后手动将这些条目写入安装程序以进行补偿。
    【解决方案2】:

    你做错了。 .rgs 文件在那里,以便组件可以自行安装。任何安装程序都支持让组件自行安装。以 Visual Studio 安装项目为例,设置 Register 属性。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多