【问题标题】:Creating a WiX patch from single file location从单个文件位置创建 WiX 补丁
【发布时间】:2013-04-16 18:53:43
【问题描述】:

我正在尝试为我的应用程序创建补丁。实现here 描述的示例按预期工作。但是,每个版本的文件都存储在不同的目录中。 1.0 版文件位于 c:sample\1.0 中,1.1 版文件位于 c:sample\1.1 中。如果我将文件移动到一个位置,请创建 1.0 安装程序,修改文件,然后创建 1.1 安装程序;火炬的 wixmst 输出没有差异。当我运行 pyro 时,我得到:

警告 PYRO1079:文件柜“media1.cab”不包含任何文件。如果此补丁不包含任何文件,则可以安全地忽略此警告。否则,请在首次构建转换时尝试将 -p 传递给 torch.exe,或者将 ComponentRef 添加到您的 PatchFamily 创作中以将更改的文件拉入文件柜。

这对我来说是个问题,因为我的项目文件保存在单个 git 存储库中。我们使用分支和标记来描述版本。因此,我只有一个文件目录。

我有两个版本的 .msi 和 .wixpdb。

在这种情况下如何创建补丁?

【问题讨论】:

    标签: wix patch


    【解决方案1】:

    Pyro 需要访问 .wixmst 以及新旧文件。如果您只有一组文件(新的或旧的),那么补丁显然不会发现文件差异。这就是你从 Pyro 收到错误的原因。

    如果您使用绑定路径来创建原始 .msi 文件(及其 .wixpdbs),那么您可以使用 -bt 开关提供旧路径到 pyro 和新路径到 -bu 开关。如果您没有使用 bindpaths 并且您需要为旧文件重新创建旧目录结构并为新文件创建新目录结构。

    如果您无法找到旧文件和新文件(bindpath 效果最好),那么您将不得不进行管理图像类型修补。

    【讨论】:

    • 我认为 .wixmst 是差异文件。为什么pyro还需要新旧文件?
    • .wixmst 仅包含 install 逻辑的差异。 Pyro 需要创建一个包含二进制文件之间差异的文件柜。因此 Pyro 需要新旧文件才能知道哪些文件发生了变化。
    • 我已经获得了新旧文件,更新了两个安装程序以使用绑定路径,并为 pyro 使用了 -b 参数。现在 pyro 给我“错误 PYRO0103:系统找不到文件 ''”。安装程序中的每个文件似乎都会出现此错误。这些文件肯定在指定的路径中。
    • 绑定路径必须关闭。如果不查看您的文件所在的位置、您的 .wxs 创作是什么以及 pyro.exe 的命令行是什么,很难变得更有用。对不起。
    • 啊。弄清楚了。我没有在我的 pyro 参数中包含绑定路径名称。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2011-08-11
    • 2015-04-12
    相关资源
    最近更新 更多