2012-03-15 71 views
3

我一直在使用Pandion(一个开源的XMPP客户端),它附带wix脚本来生成安装程序。WIX生成的MSI不复制可执行文件,复制其他文件,之前工作

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

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

编辑:通过更新,我的意思是我所做的更改,这些更改仅限于几个JavaScript文件。 wix文件全部保持不变。

我一直在想弄清楚问题是什么,但我只是没有与wix/msi的经验,并不知道在哪里看。

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

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

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

回答

6

检查并查看该特定文件(Pandion.exe)的版本是否大于以前的安装版本。如果因任何原因该文件是在一个较小的版本,那么它可能不会安装,因为:

  • 在更新安装,维克斯着眼于.DLL文件的版本控制和.EXE文件
  • 如果版本的已安装的文件(Pandion.exe)大于即将安装的文件,则标记为机器上存在较新版本
  • 在删除先前版本的过程中,将删除所有文件。
  • 在安装更新过程中,Pandion.exe未被安装,因为它已被标记
  • 在重新安装/修复期间,它看到Pandion.exe丢失并安装它。
+0

这就是发生了什么事。大约半个小时后,将源文件分配到较早的版本,我注意到声明文件版本的头文件已更改,版本设置为1.0.0.0。将其更改为高于以前版本的版本可以解决问题。 – carpat 2012-03-15 17:21:56