【问题标题】:How to add a whole directory or project output to WiX package如何将整个目录或项目输出添加到 WiX 包
【发布时间】:2010-09-29 16:55:01
【问题描述】:

我们决定从 VS 集成设置切换到 WiX。

但是,我们目前所做的是使用项目输出文件作为设置项目的输入。这让我们可以轻松地将应用程序文件添加到目录(用于图像、示例和其他资源...),并且这些文件会在我们构建时自动添加到设置中。

我在 WiX 中找不到任何类似的功能。 WiX 似乎对每个目录和文件都需要一个目录条目和一个文件条目。这将要求我们在每次添加文件时更改 WiX 源,在我看来,这是令人望而却步的,因为我们有这么多的文件。

是否有任何集成方式可以使用 WiX 执行此操作,还是我必须编写自己的任务来在调用蜡烛之前创建 WiX 源?

【问题讨论】:

    标签: wix installation build-automation paraffin


    【解决方案1】:

    对于 WiX 2.0,tallow 非常有限;石蜡和锦葵提供额外的功能。 对于 WiX 3.0,热量提供了与动物脂相同的功能,但要好一些。

    在我的情况下,我使用了 mallow 源并进行了一些修改并使用它,因为石蜡需要 3.5 版本的 .Net。

    您可以使用Mallow

    或石蜡工具生成 WiX 片段: Getting started, The pain of WiX, A better tallow, Paraffin, Download, Paraffin for WiX 3.0

    【讨论】:

    • Sundar 那里的小链接很好。非常感谢。我编辑了答案,使其成为完整的官方答案。
    【解决方案2】:

    我在 WIX 3.5 中使用 heat.exe 就是为了这个目的。上次我检查时,documentation 不是最新的 3.5 版本,所以请记住这一点。

    这是一个例子:

    "$(WIX)bin\heat.exe" 目录 "$(SourcePath)" -cg 我的文件 -gg -scom -sreg -sfrag -dr INSTALLDIR -out "$(ProjectDir)Fragments\FileFragment.wxs" -var wix.InstallerPath

    【讨论】:

      【解决方案3】:

      正如其他人指出的那样,MapGuide 开源项目目前正在使用 John Robbins 的Paraffin 3.0

      基本上,对于给定的发布版本,第一次运行时,我们将使用“generate”操作运行安装程序脚本,该操作为源文件夹创建新的 .wxs 文件,每个文件都有特定的选项。

      在同一版本的后续构建中,调用“regen”操作以确保使用已添加的任何新文件/目录更新 .wxs 文件。

      我相信 Heat v3 现在还允许您做很多(或者可能全部?)这方面的工作,例如 Brian Rogers writes 。我仍然对 Paraffin 通过维护静态 GUID 更明确地执行此操作的方式感到更自在,但当前的 Heat 看起来是一个不错的选择。

      【讨论】:

      • 示例:。 Project.WixProj 内部。将“MyProject”替换为要包含其编译文件的项目。您将项目作为参考添加到您的 wix 项目中,以使 var.MyProject.TargetDir 存在。
      【解决方案4】:

      经过进一步研究,似乎有一个名为tallow.exe 的包含二进制文件可以做到这一点。它通过递归搜索文件从目录创建片段。

      【讨论】:

      • 哦,你每天都能学到新东西!我没有意识到牛油做到了。 =)
      【解决方案5】:

      在我使用 WIX 时,我从未遇到过让您一次添加整个文件目录的功能。这是因为可以通过多种方式使用给定文件(系统不知道您以后是否要引用该文件夹中的特定文件等......并且它需要知道它们),而且因为安装本身需要非常具体。

      这不会阻止您为 WIX 编写自己的前端,该前端将在解析目录结构的内容后生成 WIX XML 文件(或其中的一部分)。这基本上就是我们在工作中使用的系统之一。这与任何代码或文本文件生成实用程序的想法相同。只需遍历树,并生成适当的文本。

      编辑:这样,您可以将 WIX 视为用于定义设置的“低级语言”,并将您的实用程序视为“高级语言”。如果您需要帮助编写一个,请告诉我们。

      此外,您可以通过将此实用程序添加到 VStudio 中的自定义构建步骤来生成 WIX 文件作为构建过程的一部分。这样一来,您实际上就没有任何人构建的“已保存 WIX 文件”,系统只是在最后构建它,并在构建后步骤自动考虑新文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        • 2020-08-31
        相关资源
        最近更新 更多