【问题标题】:Harvesting a .csproj with heat.exe in Visual Studio 2008 and WiX(v3)在 Visual Studio 2008 和 WiX(v3) 中使用 heat.exe 收集 .csproj
【发布时间】:2010-10-19 05:14:30
【问题描述】:

我发现 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. 意识到肯定有人将这些工具用于类似目的,并且可能会为我指明正确的方向。

有人(公平地)指出 v3 尚未“完成”(因此缺乏文档和教程)。我现在得到的感觉是,在我的构建脚本中自动执行此操作并非易事,而且工具正在不断增长以简化此操作。

【问题讨论】:

    标签: wix fragment wix3 csproj heat


    【解决方案1】:

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

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

    【讨论】:

    • 我挖了一下,Paraffin 现在确实支持 v3。 wintellect.com/CS/blogs/jrobbins/archive/2008/12/22/… 这看起来是一种潜在有用的方法,因为它能够“记住”一些自动生成的状态。
    • 我之前会评论新链接,但我不确定如何支持 cmets 中的链接...看起来 URL 已被识别。我猜它支持与答案/问题相同的 wiki 语法?
    【解决方案2】:

    关于自动生成设置的升级影响,read this。带回家的信息:

    Windows 安装程序不允许您 在小升级中删除组件

    如果您自动生成设置,则很难保证组件继续存在。因此,您必须在自动生成组件和进行小升级之间做出选择。

    如果您有一些自动生成的组件,那就坚持进行重大升级。可以以this sample by Rob 为例。

    【讨论】:

    • 谢谢,这确实明确了对自动生成的唠叨疑虑。
    【解决方案3】:

    感谢您提供背景信息,我不知道他们正在开发新版本的 Wix。根据项目页面,它还不是 RTM,所以这可以解释你遇到的问题。我希望收到 WIX 开发人员的回复。

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

    祝你好运,

    戴夫

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 我能在 Gábor DEÁK JAHN 的教程中找到唯一提到 heat.exe 的地方,它非常简短,在参数和含义方面不是最新的。 -help 选项确实是我唯一的线索,表明 v3 中提供了更高级的方法。
      • 查看您安装 WiX 的“DOC”目录。连同 wix-users 邮件列表一起,您就可以上路了 :)
      • 我从 doc 目录中的 chm 开始。唯一提到的是:“Heat”-“从各种输入格式生成 WiX 创作”。你指的还有别的吗?我对命令行参数的了解来自 -help 命令(如背景部分所述)
      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      相关资源
      最近更新 更多