在Visual Studio 2008和WiX(v3)中使用heat.exe收集.csproj

时间:2009-04-13 20:29:53

标签: wix fragment wix3 csproj heat

我发现Wix v3使用工具(heat.exe)将信息“收集”到WiX片段中。要么我正在寻找错误的位置,要么这是一个很薄的文件。

为包含媒体文件的复杂文件夹结构自动生成WiX片段(可能使用heat.exe)的最佳方法是:

  • 各种类型(ico / png / xaml / etc)
  • 可能会定期更改(名称/位置/添加/删除)
  • 它被归类为“内容”并包含在.csproj

这样他们可以通过WiX内置到安装程序中,并且能够承受升级和补丁吗?

背景资料

  1. 我找到了heat.exe,它似乎解决了自动生成WiX片段的要求
  2. 在让“dir”收割机工作时,我注意到了“项目”收割机(命令行帮助)
  3. 媒体已经在C#项目文件中,因此注意到“-pog:Content”可能做得很好
  4. 粗略搜索发现未提及“项目”收割机的过时文档
  5. 实现整个项目安装程序可能与“项目”收割机完成,但不确定支持的程度如何,以及存在的缺陷。
  6. 看到“PUT-GUID-HERE”的产生,并意识到guid的自动生成可能会有升级/补丁的影响。
  7. 意识到必须有人将这些工具用于类似目的,并且可能会指出我正确的方向。
  8. (相当)指出v3还没有“完成”(因此文档和教程的稀缺性)。我现在的感觉是,在我的构建脚本中自动执行此操作并非易事,而且现在工具正在增长以简化此操作。

4 个答案:

答案 0 :(得分:2)

根据我的经验,John Robbins'Paraffin解决了很多与tallow.exe(v3中的heat.exe)有关的问题。我不确定Paraffin是否能很好地使用v3,但它可能值得一试。

仅供参考,我在构建过程中使用了Paraffin,它允许我删除前面涉及PowerShell脚本的2-3步清理过程。

答案 1 :(得分:1)

有关自动生成设置的升级含义,read this。带回家的消息:

  

Windows Installer不允许您这样做   删除次要升级中的组件

如果您自动生成设置,很难保证组件继续存在。因此,您必须在组件的自动生成和进行轻微升级的能力之间进行选择。

如果您有一些自动生成的组件,那么只需坚持主要升级。您可以使用this sample by Rob作为示例。

答案 2 :(得分:0)

感谢您的背景,我不知道他们正在开发新版本的Wix。根据项目页面,它还不是RTM,因此可以解释您遇到的问题。我希望在其中一篇回复中听取WIX开发人员的意见。

我无法帮助您使用开发不足的heat.exe功能。但是,我一直在你的情况下,我的解决方案是创建一个工具,将目录和文件信息作为输入并生成有效的wix项目文件作为输出。 .vsproj文件只是一个XML文件,您可以使用XSL,C#的LINQ,PowerShell或许多其他工具来完成工作。我个人使用(pre-LINQ)C#/ XMLDOM来解析VS项目文件。

祝你好运,

戴夫

答案 3 :(得分:0)

有关文档,请查看随WiX一起安装的帮助文件 - WiX.chm 提供最新信息(以及命令行-help选项)。