如何将整个目录或项目输出添加到WiX包

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

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

我无法在WiX中find任何类似的function。 WiX似乎需要一个目录条目和一个文件条目为每个目录和文件。 这就要求我们在每次添加文件时都要更改WiX源文件,在我看来,由于我们有这么多文件,所以这个文件是令人望而却步的。

是否有任何与WiX做到这一点的集成方式,或者我必须写我自己的任务,在调用蜡烛之前创build一个WiX源?

对于WiX 2.0,牛脂非常有限; 石蜡和锦葵提供额外的function。 对于WiX 3.0,热量提供与牛脂相同的function,稍微好点。

在我的情况下,我已经使用了mallow源代码并修改了一下,因为石蜡需要3.5版本的.Net。

你可以使用锦葵

或石蜡工具生成WiX碎片: 入门 , WiX的痛苦 , 更好的 动物 脂,石蜡 , 下载 , 石蜡的WiX 3.0

我一直在使用WIX 3.5中的heat.exe来达到这个目的。 上次我检查了一下,3.5版本的文档并不是最新的,所以记住这一点。

这里是一个例子:

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

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

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

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

就像Brian Rogers写的那样,我相信Heat v3现在也允许你做很多事情(或者全部?)。 对于Paraffin通过保持静态GUID来更明确地做这些事情,我仍然感到更加自在,但是现在的Heat看起来是一个不错的select。

经过进一步的研究,似乎有一个名为tallow.exe的包含二进制文件就是这样做的。 它通过recursionsearch文件从目录创build一个片段。

在我使用WIX的时候,我从来没有遇到过让你一次添加整个文件目录的function。 这是因为可以使用给定文件的许多方法(系统不知道是否稍后想要引用该文件夹中的特定文件等等,并且需要知道它们),还因为安装本身需要非常具体。

这不会阻止你编写你自己的WIX前端,它将在通过目录结构的内容parsing之后生成WIX XML文件(或其部分)。 这基本上是我们工作中使用的系统之一。 这和任何代码或文本文件生成工具都是一样的。 只要遍历树,并生成适当的文本。

编辑:通过这种方式,您可以将WIX视为定义设置的“低级语言”,并将您的实用工具作为“高级语言”。 如果你需要帮助写一个,让我们知道。

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