gpt4 book ai didi

com - 如何使用 Windows Installer XML 注册 COM 对象

转载 作者:行者123 更新时间:2023-12-04 14:09:30 29 4
gpt4 key购买 nike

我遇到了以下问题:在我的 WiX 设置中,我需要注册一个 COM 对象。我有一个“.tlb”文件和一个“.dll”文件(在我的例子中:XYCommon.dll 和一个 XYCommon.tlb)
现在我想进行设置以注册 TLB。
如何在 Windows Installer XML 中执行此操作?

我的第一次尝试是使用 CustomAction 并打开“Regasm.exe”并注册它 - 但我不知道如何将 Regasm.exe 带到注册 XYCommon.tlb

任何帮助?谢谢

最佳答案

使用名为 Heat 的 WiX 收集器实用程序.它将生成包含正确注册(和取消注册)您的 COM 对象所需的注册表项的 WiX 源。

您的 COM 对象(XYCommon.dll 和 XYCommon.tlb)会经常更改吗?

如果不是:然后只需在这两个文件上运行 Heat(读取命令行参数并试验它们以获得所需的输出),如有必要,清理它们,并将它们添加到您的项目中。

如果是:

如果您想尝试将 Heat 作为 Visual Studio 预构建事件运行,这个 SO 答案应该会给您一些指导:Add a folder to installer in wix not files?

有时当您使用 Heat 时,您仍然需要稍微调整然后生成的 .wxs 文件。因此,您可能希望编写一些包装实用程序,在文件列表或目录上调用 heat,然后按照您的意愿清理输出。然后您可以将该实用程序添加到您的构建过程中。

在单个文件上使用热量的示例:

heat.exe file myFile.dll -gg -g1 -suid -svb6 -out myFile.wxs



在整个目录上使用 heat 的示例:

heat.exe dir myDirectory -gg -g1 -suid -svb6 -out myDirectory.wxs



我使用的一些参数的分割:
  • heat.exe:如果它不在您的路径中,您必须指定可执行文件的完整路径
  • 文件 myFile.dll:指定要在单个文件 myFile.dll 上运行 heat
  • dir myDirectory:指定要运行heat的目录,myDirectory
  • gg:为组件生成 guid
  • g1:生成没有花括号的 guid
  • suid:禁止为文件和组件创建唯一生成的 ID,而是使用文件名作为 ID
  • svb6:禁止为 VB6 运行时收集 COM 信息。注意:如果要注册使用 VB6 运行时的 COM 对象,则需要使用此标志,以免覆盖 VB6 运行时注册表项
  • 关于com - 如何使用 Windows Installer XML 注册 COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158955/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com