如何使用HEAT.exe进行dll注册表

时间:2014-08-08 04:45:40

标签: dll wix wix3.5 wix3.6 wix3.7

我需要注册一个dll。现在正在注册下面的dll

<CustomAction Id='comReg' Directory='INSTALLLOCATION'  Impersonate='no' Execute='deferred'  
                ExeCommand='"[NETFRAMEWORK40CLIENTINSTALLROOTDIR]regasm.exe" "[INSTALLLOCATION]myProduct.dll"  /codebase' Return='check' />

但所有人都建议在互联网上随时随地使用HEAT.exe。我甚至经历过this link.但是他们只有语法等等。我真的不知道如何通过知道这些语法来处理它。

我需要一些一步一步的程序或一些好的博客,精心讲述如何收集一个dll以及如何将其推入wix代码以及如何完成注册表,以便我我也可以根据条件注册我的dll。即使我试过这个link alse

此致

1 个答案:

答案 0 :(得分:0)

通过标准Windows Installer操作和表来注册COM组件。需要许多表条目,因此WiX提供heat.exe来收集COM文件。它的工作原理是检查文件中的类型库,如果存在DllRegisterServer入口点,则在注册表沙箱中运行它,其中拦截和捕获更改。 (在Windows Installer [1999-present]的时代,DllRegisterServer实际上已被弃用于任何其他目的。)

您可能知道,功能是用户可选择的最小安装单位。组件是一个或多个产品中的一个或功能的成员。 Heat为其收获的每个文件创建一个组件,为每个收获运行创建一个ComponenentGroup。因此,您必须选择一个ComponentGroup Id并在一个或多个功能中引用它。您还必须为ComponentGroup的目标选择目录ID。

现在,只需编辑项目文件即可收集文件。要编辑项目文件,您可以使用文本编辑器,但Visual Studio都是为它设置的。请参阅How to: Edit Project Files

  1. 将HarvestFile元素添加到新的或现有的ItemGroup,输入所需的ComponentGroup ID和目录ID

    <ItemGroup>
        <HarvestFile Include="comserver.dll">
            <ComponentGroupName>COM</ComponentGroupName>
            <DirectoryRefId>ServerDir</DirectoryRefId>
        </HarvestFile>
    </ItemGroup>
    
  2. 在Product.wxs或其他地方,将ComponentGroupRef添加到一个或多个功能。