53

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

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

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

有没有使用 WiX 的集成方式,或者我必须编写自己的任务来创建 WiX 源,然后再调用蜡烛?

4

5 回答 5

24

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

就我而言,我使用了锦葵源并进行了一些修改并使用了它,因为石蜡需要 3.5 版本的 .Net。

你可以用锦葵

或用于生成 WiX 片段的石蜡工具: 入门WiX 的痛苦更好的牛油、石蜡下载WiX 3.0 的石蜡

于 2009-01-05T23:18:55.437 回答
19

为此,我一直在 WIX 3.5 中使用 heat.exe。上次我检查时,文档不是最新的 3.5 版本,所以请记住这一点。

这是一个例子:

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

于 2011-04-25T21:04:06.077 回答
4

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

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

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

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

于 2009-04-29T23:28:56.967 回答
3

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

于 2009-01-05T22:31:42.257 回答
0

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

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

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

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

于 2009-01-05T22:29:56.363 回答