我有使用WiX版本3的MSI构建.
我们部署的产品的所有以前的安装程序使用指定的配置工作正常(即:如果以前的版本存在,删除,然后安装新版本) – 但是,我们构建的新的MSI在运行时不会安装所有文件“删除第一个”路径.
如果我们手动删除现有的安装,然后运行新版本,则会安装所有文件 – 当我检查Orca中的MSI文件时,会显示文件和功能,似乎很好.
我们尝试运行详细和额外的日志记录打开(/ l * vx),但是我们可以看到,如果这些文件没有被注册&然后安装.
任何想法或建议?这把我们推开了墙.
根据默认的自定义操作顺序,Windows Installer确定在删除任何现有版本的软件之前需要安装/覆盖哪些文件. Windows Installer使用REINSTALLMODE属性的值来告诉它如何决定何时覆盖文件.如果REINSTALLMODE包含一个“o”,那么它将只安装版本不同的文件或该文件不存在的文件;仅当文件的修改日期为< =创建日期(即,文件未被修改)时,才会安装非版本的文件.如果REINSTALLMODE包含“a”,它将始终安装该文件,而不管附加到现有文件的任何版本或日期信息. 您的方案中发生的情况最可能如下:
> Windows Installer确定要安装的文件.它决定某些文件不需要安装(可能是因为它们已经存在,并且与MSI中的文件相同或更新).
>以前版本的软件被删除,包括Windows Installer确定的文件不需要安装.
> Windows安装程序安装新安装的文件,但不安装确定不需要安装的文件.
> Windows Installer确定要安装的文件.它决定某些文件不需要安装(可能是因为它们已经存在,并且与MSI中的文件相同或更新).
>以前版本的软件被删除,包括Windows Installer确定的文件不需要安装.
> Windows安装程序安装新安装的文件,但不安装确定不需要安装的文件.
最终的结果是在升级软件后遗失了一堆文件.设置REINSTALLMODE = amus而不是omus可能会解决您的问题,但您应该确保知道这将如何影响其余的安装.如果有任何文件不想被覆盖,您将需要将这些组件标记为“永不覆盖”.