【问题标题】:WIX - Heat.exe - Does Heat.exe support multiple multiple harvest typeWIX - Heat.exe - Heat.exe 是否支持多种多收获类型
【发布时间】:2016-09-09 03:35:38
【问题描述】:

我想使用 Heat.exe 命令构建一个 WIX 文件 (.wxs)。我想知道 heat 是否在同一命令中支持多种收获类型,如(文件和注册)。

我尝试了以下命令,但它没有在生成的输出中添加两种收获类型的条目:

“C:\Program Files (x86)\WiX Toolset v3.11\bin\heat.exe”文件“C:\Users\ragh.jenkins\jobs\ODBC\workspace\bin\Win32\Debug\driver. dll" -reg "C:\DIS\master_latest\odbc\DEBUG_64.reg" -cg RegistryEntries -out "C:\Users\ragh\Documents\Visual Studio 2013\Projects\SetupProject1\SetupProject1\jenkinsprod.wxs"

电流输出:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <ComponentGroup Id="RegistryEntries">
          <Component Id="cmpD31B63367AF259550643AC8C1AB78978"  
            Directory="TARGETDIR" Guid="PUT-GUID-HERE" KeyPath="yes">
           <RegistryKey Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" 
                Root="HKLM">
            <RegistryValue Name="NelDriver64" Value="Installed" Type="string" />
           </RegistryKey>
         </Component>
         <Component Id="cmp56B0ADF81BA4CE92E17B4BF179176FCE" 
           Directory="TARGETDIR" Guid="PUT-GUID-HERE" KeyPath="yes">
           <RegistryKey Key="SOFTWARE\ODBC\ODBCINST.INI\NelDriver64" 
               Root="HKLM">
              <RegistryValue Name="UsageCount" Value="1" Type="integer" />
              <RegistryValue Name="Driver" Value="C:\
                 {PROJECT_FOLDER}\bin\x64\Debug\driver.dll" Type="string" />
              <RegistryValue Name="Setup" Value="C:\
                 {PROJECT_FOLDER}\bin\x64\Debug\driver.dll" Type="string" />
              </RegistryKey>
         </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

预期输出:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" 
      Manufacturer="Test" UpgradeCode="fc444cfd-b871-44c5-a920-8b7fc99674c1">
   <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is 
       already installed." />
     <MediaTemplate />
     <Feature Id="ProductFeature" Title="SetupProject1" Level="1">
        <ComponentGroupRef Id="ProductComponents" />
     </Feature>
  </Product>
  <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="SetupProject1" />
            </Directory>
        </Directory>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
        <Component Id="driver.dll" Guid="*">
        <File Id="driver.dll" KeyPath="yes" 
Source="C:\Users\ragh\.jenkins\jobs\ODBC\workspace\bin\Win32\Debug\driver.dll">
        </File>
      </Component>
      <Component Id="RegistryEntries" Guid="*">
        <RegistryKey Root="HKLM"
                     Key="Software\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers" >
          <RegistryValue Type="string" Name="NelDriver" Value="Installed"/>
        </RegistryKey>
        <RegistryKey Root="HKLM"
                     Key="Software\Wow6432Node\ODBC\ODBCINST.INI\NelDriver" >
          <RegistryValue Type="string" Name="UsageCount" Value="dword:00000001"/>
        </RegistryKey>
        <RegistryKey Root="HKLM"
                     Key="Software\Wow6432Node\ODBC\ODBCINST.INI\NelDriver" >
          <RegistryValue Type="string" Name="Driver" Value="[INSTALLFOLDER]\driver.dll"/>
        </RegistryKey>
        <RegistryKey Root="HKLM"
                     Key="Software\Wow6432Node\ODBC\ODBCINST.INI\NelDriver" >
          <RegistryValue Type="string" Name="Setup" Value="[INSTALLFOLDER]\driver.dll" />
        </RegistryKey>
      </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

【问题讨论】:

    标签: wix heat


    【解决方案1】:

    热量不会产生您预期的输出。它创建一个 ComponentGroup 而不是创建产品。因此,您将拥有多个文件。因此,热量处理多个输入没有优势。

    你可以这样做:

    1. 为每个输入运行 heat,创建一个命名的 ComponentGroup。
    2. 在适当的地方,为每个包含一个 ComponentGroupRef。如果需要,您可以创建一个父 ComponentGroup(例如 ProductComponents)。

    【讨论】:

    • 如果两个目录中包含同名文件,就会产生冲突。
    【解决方案2】:

    您是否尝试使用 heat 的 'dir' 选项,它会收集指定目录中的所有文件,我会假设注册表文件具有 'reg' 选项,而常规文件具有相应的 'file' 选项。如果您需要调整输出或从输出中排除某些组件,那么您始终可以使用 XSL 转换选项来提供热量。

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 2020-01-07
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多