WIX - Heat.exe - Heat.exe 是不是支持多种多收获类型

     2023-02-16     281

关键词:

【中文标题】WIX - Heat.exe - Heat.exe 是不是支持多种多收获类型【英文标题】: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>

【问题讨论】:

【参考方案1】:

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

你可以这样做:

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

【讨论】:

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

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

【讨论】:

Wix Installer Heat.exe 错误 参数“exePath”无效

】WixInstallerHeat.exe错误参数“exePath”无效【英文标题】:WixInstallerHeat.exeerrorParameter"exePath"isinvalid【发布时间】:2021-02-1713:21:15【问题描述】:我正在构建一个独立的.NetCore工作者服务,我将其作为Windows服务运行。现在我... 查看详情

WiX 安装程序:使用 xslt 和 heat.exe 如何在找到父/子匹配后更改父 ID 的值?

】WiX安装程序:使用xslt和heat.exe如何在找到父/子匹配后更改父ID的值?【英文标题】:WiXInstaller:Usingxsltwithheat.exehowdoIchangethevalueoftheparentIdafterfindingaparent/childmatch?【发布时间】:2019-12-0502:49:03【问题描述】:我有以下来源:<Dir... 查看详情

Wix、Heat 和 Wxi 文件

】Wix、Heat和Wxi文件【英文标题】:Wix,HeatandWxiFile【发布时间】:2009-10-2106:39:02【问题描述】:我正在使用heat.exe生成文件列表,我需要替换File/@Source="SourceDir"所以我传递-var和目录名称,但这些变量是在我的.wxi文件中定义的如何... 查看详情

WiX 安装程序:将 xslt 与 heat.exe 一起使用时,如何在还使用匹配属性时找到匹配的子字符串?

】WiX安装程序:将xslt与heat.exe一起使用时,如何在还使用匹配属性时找到匹配的子字符串?【英文标题】:WiXInstaller:Usingxsltwithheat.exehowdoIfindamatchingsubstringwhenalsousingamatchattribute?【发布时间】:2020-02-1322:34:44【问题描述】:我有... 查看详情

wix heat 使用 xsl 文件移除命名空间

】wixheat使用xsl文件移除命名空间【英文标题】:wixheatremovenamespaceusingxslfile【发布时间】:2014-07-0620:56:10【问题描述】:这是我的预构建脚本:"%WIX%\\bin\\heat.exe"dir"$(SolutionDir)Export\\Release\\SkyCam\\Config"-t"$(SolutionDir)IQStudioInstaller\\Simu... 查看详情

如何在 WiX 安装程序中将应用程序添加为防火墙例外

...】:我有一个需要安装大量文件的安装程序。我正在使用heat.exe来收集所有文件。这个heat命令实际上是我的构建脚本的一部分,后面跟着Candle.exe和light.exe等其他命令。现在,我的应用程序t 查看详情

无法使用 WIX 安装程序注册 dll

...【问题描述】:我有我的上下文菜单外壳扩展dll。我使用Heat.exe为我的dll创建组件,并在安装时完全正常。但我无法使用wix安装程序注册我的dll。我尝试了各种选择,但没有任何效果。如果我尝试使用regasm.exe/codebaseMyfile.dll进行... 查看详情

如何使用 Wix 和项目参考部署本机映像 (NGen)

....NET解决方案构建安装程序。我使用项目引用(内部使用heat.exe我认为)包含来自其他项目(EXE和DLL)的二进制文件。我现在要做的是,在安装过程中使用ng 查看详情

WiX 升级后的加热错误

】WiX升级后的加热错误【英文标题】:HeaterrorsafterWiXupgrade【发布时间】:2013-03-0312:50:54【问题描述】:我将WiX从3.5版升级到3.7版,现在在安装程序的预构建步骤中遇到错误。有问题的预构建步骤是"%wix%\\bin\\heat.exe"dir"... 查看详情

如何使用绑定路径创建 WiX 补丁?

...】:我正在使用cmake/cpack通过WiX构建我的项目。cmake运行heat.exe(或类似的东西),它会生成包含我项目文件的files.wxs,格式如下:我们假设在名为“bin”的文件夹中有一个名为a.txt的文件。该项目在桌​​面上的NewFold 查看详情

wix 快捷方式 xsl 文件

...【发布时间】:2013-06-1322:10:33【问题描述】:我正在使用heat.exe为我的调试和发布目录生成.wxs文件。通常我使用这个.xsl文件来生成我的快捷方式。但是在我的应用程序中,我需要有一个发布版本的快捷方式另一个用于调试版本... 查看详情

WIX 项目无法加载指定的预构建事件

...:2013-05-2215:09:49【问题描述】:经过很多麻烦,我有一个heat.exe命令字符串应该运行并将文件夹的文件放入WXS文件中。看起来像这样heatdir"$(var.SolutionDir)Web\\obj\\$(var.MyProject.Configuratio 查看详情

Wix 重大升级,无论文件版本较新,都替换文件

...)使用MajorUpgrade进行更新。要安装的文件在预构建中使用heat.exe收集。当前(旧)msi文件包含一个文件nlog.dll(随NuGet包v4 查看详情

如何在 Wix(命令行)中引用热量输出(wxs)

...令行)中引用热量输出(wxs)【英文标题】:HowtoReferenceaHeatOutput(wxs)inWix(CommandLine)【发布时间】:2016-08-2617:01:39【问题描述】:我正在使用heat.exe生成一个.wxs文件,以将文件包含在我的主安装程序中。我有两个问题:我将使用哪... 查看详情

将自定义 wxs 文件提供给 CPackWIX

...ckWIX,用于我们的CMake项目。似乎CPackWIX背后的想法是使用heat.exe创建一个安装程序,该安装程序完全包含安装目录中存在的文件。是否可以改为提供自定义wxs文件?我们的想法是在我们的开发环境中 查看详情

wix的wix简介

参考技术A现在,您可以使用WiXVisualStudio程序包在VisualStudioIDE中直接创建和构建基于WiX的部署程序包。这是代号“Rosario”的VisualStudioTeamSystem的一项附加功能,帮助您更轻松地为您的应用程序创建安装程序。现在,您可以完全控制... 查看详情

wix3.0正式发布

2009年7月4日Wix项目组正式发布了Wix3.0版本,可以从http://sourceforge.net/projects/wix/files/下载。WiXv3.0RTMbuildnum...2009年7月4日Wix项目组正式发布了Wix3.0版本,可以从​​http://sourceforge.net/projects/wix/files/​​​下载。WiXv3.0RTMbuildnumbe 查看详情

WiX 技巧和窍门

】WiX技巧和窍门【英文标题】:WiXtricksandtips【发布时间】:2010-10-0301:17:50【问题描述】:我们使用WiX已经有一段时间了,尽管人们通常抱怨易用性,但它运行得相当不错。我正在寻找的是关于以下方面的有用建议:设置WiX项目... 查看详情