Wix 4 收获目录的解释?

Log*_*rim 3 wix wix4

我正在尝试学习 Wix 4.0 来为我正在开发的应用程序创建安装程序。构建我的应用程序后,我在一个文件夹中有一堆文件,我想将它们安装到程序文件中,我已经读到收获功能允许我简化此过程并为整个目录创建组件映射,但我不确定这个例子展示了什么。我很好奇这个<ItemGroup>标签是什么,并且我认为我对如何将其指向我的目录以便使用组件有一个根本性的误解。

<Project Sdk="WixToolset.Sdk">
  <ItemGroup>
    <HarvestDirectory Include="FilesDir">
      <ComponentGroupName>HarvestedComponents</ComponentGroupName>
      <DirectoryRefId>ApplicationFolder</DirectoryRefId>
      <SuppressRootDirectory>true</SuppressRootDirectory>
    </HarvestDirectory>

    <BindPath Include="FilesDir" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="WixToolset.Heat" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

谢谢,我将在需要时编辑更多信息。

小智 7

所以基本上<ItemGroup>只是将 WiX 项目文件中的不同元素组合在一起。

对于收获整个目录,以下元素很重要:

  • <HarvestDirectory Include="Folder/To/Harvest">:指定要收获的文件夹路径
  • <ComponentGroupName>ApplicationFilesComponent</ComponentGroupName>:指定将由热量生成的组件的名称(然后您需要在安装过程中包含此组件)
  • <DirectoryRefId>ApplicationDirectory</DirectoryRefId>:指定文件应写入的目录ID(更多信息: https: //wixtoolset.org/docs/schema/wxs/directory/
  • <BindPath Include="Folder/To/Harvest" />:再次在这里指定你想要收获的文件夹的路径

预防错误的技巧(我经过惨痛的教训才学到的):

  • 在您的包参考中包含版本,例如<PackageReference Include="WixToolset.Heat" Version="4.0.0" />
  • 指定文件夹时不要使用 \(反斜杠),而应始终使用 /(斜杠)

注意:我不太确定为什么有必要指定两次收获路径(文档缺少这一点)。如果有人有更多详细信息,请发表评论或编辑此答案。