Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向Windows Installer XML注册COM对象_Com_Wix - Fatal编程技术网

如何向Windows Installer XML注册COM对象

如何向Windows Installer XML注册COM对象,com,wix,Com,Wix,我有以下问题:在我的WiX设置中,我需要注册一个COM对象。我有一个“.tlb”文件和一个“.dll”文件(在我的示例中:xycomon.dll和xycomon.tlb) 现在我想进行设置以注册TLB。 如何在Windows Installer XML中执行此操作 我的第一次尝试是使用CustomAction并打开“Regasm.exe”并注册它-但我不知道如何使用Regasm.exe注册xycomon.tlb 有什么帮助吗?谢谢使用名为的WiX收割机实用程序。它将生成包含正确注册(和注销)CO

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

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


有什么帮助吗?谢谢

使用名为的WiX收割机实用程序。它将生成包含正确注册(和注销)COM对象所需的注册表项的WiX源

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

如果否:则只需对这两个文件运行Heat(读取命令行参数并对其进行实验以获得所需的输出),必要时清理它们,然后将它们添加到项目中

如果是:

如果您想尝试将Heat作为Visual Studio预构建事件运行,那么这个答案应该会给您一些指导:

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

对单个文件使用加热的示例:

heat.exe文件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:指定要在目录myDirectory上运行heat
  • gg:为组件生成guid
  • g1:生成不带花括号的GUI
  • suid:禁止为文件和组件创建唯一生成的ID,而是使用文件名作为ID
  • svb6:禁止获取VB6运行时的COM信息。注意:如果要注册使用VB6运行时的COM对象,则需要使用此标志,以免覆盖VB6运行时注册表项

啊,我忘了一些必要的东西:我正在Visual Studio 2012中构建我的项目。整个项目都在Visual Studio中。你能帮我吗?你好,布莱恩,谢谢你的快速回答!我要试试热的。但是,你能帮我吗?或者给我看一个链接,我需要写哪些参数来注册文件?@SebastianSchwarz,我添加了一些示例。这些参数是我在Visual Studio-Propertys-预构建事件中使用的吗?你需要-gg,如果你的COM对象是VB6组件,那么你也需要-svb6。剩下的你可能不需要了。如果作为预构建事件运行并试图使所有内容正确编译,则可能需要进行一些其他调整,但您可以尝试一下并发布任何问题。