【问题标题】:MSI generated by WIX doesn't copy executable, copies other files, worked beforeWIX 生成的 MSI 不复制可执行文件,复制其他文件,以前工作过
【发布时间】:2012-03-15 16:12:56
【问题描述】:

我一直在使用 Pandion(一个开源 XMPP 客户端),它带有 wix 脚本来生成安装程序。

到目前为止,发布补丁已经奏效:我运行包含的批处理文件,该文件运行 wix 二进制文件并创建了一个 msi。

但是,使用最新更新后,安装程序不再将可执行文件 (Pandion.exe) 复制到安装目录。所有其他 400 多个文件均已正确复制。

编辑:更新是指我所做的更改,仅限于几个 javascript 文件。 wix 文件全部不变。

我一直在试图找出问题所在,但我对 wix/msi 的经验并不丰富,也不知道该去哪里找。

我启用了详细日志记录,它确认除了可执行文件之外的所有文件都已复制。自动生成的 component.wxs 包含作为组件的可执行文件。安装程序首先注册所有组件,包括可执行文件,但当它开始复制文件时,它只是默默地跳过它并继续下一个。

如果我再次运行安装程序并修复安装,可执行文件将被正确复制。

如果我卸载所有内容并从第一个安装程序重新安装,则以前的所有补丁都可以正常工作。

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    检查并查看该特定文件 (Pandion.exe) 的版本是否高于之前安装的版本。如果由于某种原因文件的版本较低,则可能无法安装,因为:

    • 在更新安装期间,WiX 会查看 .dll 和 .exe 的版本
    • 如果已安装文件 (Pandion.exe) 的版本高于即将安装的版本,则会标记计算机上存在更新版本
    • 在删除以前的版本期间,所有文件都会被删除。
    • 在安装更新期间,Pandion.exe 未安装,因为它已被标记
    • 在重新安装/修复期间,它发现 Pandion.exe 丢失并安装它。

    【讨论】:

    • 就是这样。在将源代码与早期版本进行了大约半小时的比较后,我注意到声明文件版本的标头已更改,并且版本设置为 1.0.0.0。将此更改为上一版本之上的版本解决了该问题。
    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2015-07-15
    • 2018-05-30
    相关资源
    最近更新 更多