【问题标题】:WiX: How to mix hand-generated and auto-generated .wxs content?WiX:如何混合手动生成和自动生成的 .wxs 内容?
【发布时间】:2014-07-09 16:59:50
【问题描述】:

我有一个包含大量文件的项目。在我们的软件版本之间,会添加新文件并删除一些文件。因此,在自动化我们的构建过程中,我想让 heat 自动生成一个.wxs 文件(我们称之为files.wxs)。

但也有一些手动生成的项目,例如带有关联版本的<product> 元素和我们需要设置的环境变量的<environment> 标签。这些永远不会改变(除了增加的版本号)。现在,我把所有这些都放在了一个名为product.wxs 的文件中。

我怎样才能最好地将它们组合成一个 .msi?我是否需要在<product> 元素内为files.wxs 文件中自动生成的每个片段创建一个<component> 元素?如果是这样,那就违背了自动生成该文件的目的。我希望有另一种方法。

帮助!提前谢谢。

【问题讨论】:

    标签: wix windows-installer auto-generate wix3.8


    【解决方案1】:

    我工作的安装程序有手动和热生成代码,我们的处理方式是:

    一个脚本构建目标文件结构,即将安装的所有文件复制到一个临时目录,模仿它们在目标机器上的结构

    然后在该目录结构上执行 Heat.exe 并输出到文件。

    然后我们应用一些转换,因为我们在安装程序中有多个功能(尽管如果您的安装程序只是一个功能,您可以使用 Heat.exe 创建的单个 ComponentGroup),转换根据目录结构将组件分组到 ComponentGroups .

    手册文件仅引用 ComponentGroups。

    如果添加或删除了文件,则会在脚本上完成工作(如有必要,部分脚本只会收集整个目录)。构建安装程序时,会自动为该文件生成一个新组件,并通过转换将其添加到适当的组中。无需任何工作,因为该组已在手册文件中引用。

    【讨论】:

    • 谢谢,瑞克!这肯定让我走得更远。但是现在我遇到了 Guid 生成问题,因为我的 ComponentGroup 没有植根于“ProgramFilesFolder”——但生成的 .wxs 文件将所有内容都指向“SourceDir”。我对目录的工作方式缺乏了解。在我看来,有两个概念:源目录(我从中获取文件的位置)和目标目录(安装时它们会去哪里。但是在 .wxs 文件中,我只指定 标签,它们似乎同时具备这两个功能:我在“SourceDir”下有一个“ProgramFilesFolder”。
    • 我认为这是一个不同的问题就足够了,我将其单独发布here
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多