wix - 将特定目录中的所有文件包含到 msi 包中

标签 wix

我有一个包含多个文件的目录,我想将这些文件包含在 Wix 项目构建的 msi 包中。

/database
/database/migration11.txt
/database/migration21.txt
/database/migration32.txt

这些文件经常更改或添加了新文件,我不想使用每个新的迁移文件来调整我的 Wix 文件。

基本上,我想说在我的 wxs 文件中 包含目录数据库中的所有文件,并在安装时将它们放入目录 [INSTALLLOCATION]/database .

有什么办法可以实现这个目标吗?

添加:

刚刚找到了这个解决方法:use HEAT但我很好奇是否还有其他推荐的方法。

最佳答案

您可以在 wixproj 文件中使用任务:

<ItemGroup> 
... Your wxs files ...
<HarvestDirectory Include="$(variable)\YourDirectory\">
  <ComponentGroupName>CG_YOUR_GROUP</ComponentGroupName>
  <DirectoryRefId>DIR_REFERENCE</DirectoryRefId>
  <AutogenerateGuids>false</AutogenerateGuids>
  <GenerateGuidsNow>false</GenerateGuidsNow>
  <SuppressUniqueIds>true</SuppressUniqueIds>
  <SuppressCom>true</SuppressCom>
  <SuppressRegistry>true</SuppressRegistry>
  <SuppressRootDirectory>true</SuppressRootDirectory>
  <PreprocessorVariable>var.Property_Preprocessor</PreprocessorVariable>
</HarvestDirectory>
</ItemGroup>

此任务在构建期间调用 Heat。希望这对您有帮助。

关于wix - 将特定目录中的所有文件包含到 msi 包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9513775/

相关文章:

WiX 预处理器 <?ifdef ?> 具有多个变量和 "OR"

wix - 使用WiX在安装过程中卸载另一产品

wix - 使用 WIX 通过脚本而不是 SQLDatabase 元素创建数据库

groovy - 使用 Gradle 执行 wix

Wix3.8 WixUI_Advanced对话框如何跳过许可协议(protocol)

WIX:如何检测是否安装了第三方应用程序?

c# - 使用 WiX 作为 Windows 服务安装 .NET Core 3.0 Worker 服务

com - 为什么 Regasm 将 ProgId 放入 HKEY_CURRENT_USER 中?

WiX:在更改焦点之前启用/禁用按钮