我当前的构建过程使用 MSBuild 进行 .NET 构建,然后我的所有项目 DLL/EXE 和第 3 方 DLL 都位于同一目录中,而一些资源位于子目录中。
我想将此 bundle 打包到 MSI 中。我环顾四周,发现 WiX,它有很多可用的任务。不过,我似乎需要维护一个 .wxs 文件,其中包含对 DLL 完整列表的引用。我真的很想避免手动维护此文件或任何其他文件。
实际上,我有许多项目使用共享构建脚本,因此每个项目都以一致的方式构建。因此,我希望 MSI 步骤也能够自动化,否则每个项目都必须使用当前 DLL 列表 + 任何资源文件来维护 .wxs 文件。
是否可以使用 WiX 或其他任何工具,只需将其指向一个目录并让它打包每个文件/子目录,而无需配置文件?
最佳答案
引用the documentation for Heat (Wix 的一部分)并在构建过程中使用它。
举个例子,类似这样的东西应该有效:
heat.exe dir C:\Build\Release -srd -ag -suid -cg AutoHarvestCG -out c:\Build\Setup\AutoHarvest.wxs
然后AutoHarvest.wxs
将自动生成并包含 C:\Source\Release
中的所有文件在ComponentGroup
下叫AutoHarvestCG
您可以将其包含在 ComponentGroupRef
中任何功能元素中的元素。
您仍然需要维护一个 .wxs 文件,其中包含您的产品、软件包和功能信息,以及您可能具有的任何自定义操作。
关于wix - 使用 nant 创建 MSI 的最快途径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570079/