Wix 如何从prevoius非msi安装复制文件?

Wix 如何从prevoius非msi安装复制文件?,wix,wix3.5,Wix,Wix3.5,我正在将我的安装程序从NSIS更改为MSI(使用Wix),我需要将配置文件从旧安装复制到新安装,以防升级 在实际安装新版本之前,我需要通过执行卸载程序卸载旧版本 因此,我最终完成了一组自定义操作:首先,如果应用程序正在运行,我将停止它;然后我将配置文件复制到[TempFolder];然后启动旧应用程序的卸载程序;之后,我让MSI完成它的工作,作为最后一步,我将一堆从[TempFolder]复制到安装文件夹 问题是,Microsoft Installer 5(Windows 7和Windows 2

我正在将我的安装程序从NSIS更改为MSI(使用Wix),我需要将配置文件从旧安装复制到新安装,以防升级

在实际安装新版本之前,我需要通过执行卸载程序卸载旧版本

因此,我最终完成了一组自定义操作:首先,如果应用程序正在运行,我将停止它;然后我将配置文件复制到
[TempFolder]
;然后启动旧应用程序的卸载程序;之后,我让MSI完成它的工作,作为最后一步,我将一堆
[TempFolder]
复制到安装文件夹

问题是,Microsoft Installer 5(Windows 7和Windows 2008 R2之一)似乎在启动自定义操作之前检查文件是否存在,然后它将不会复制这些文件。它与以前的Windows Installer版本(高达4.5)配合良好


有没有办法在我的自定义操作后强制执行检查?或者有更好的方法来完成我概述的所有步骤?

在InstallFiles之前执行MoveFiles操作。可能文件复制正确,但MSI会覆盖它们。有关详细信息,请生成日志文件

MoveFiles操作出现在InstallFiles之前。可能文件复制正确,但MSI会覆盖它们。有关详细信息,请生成日志文件

不,问题是动作永远不会执行:文件不在那里。让它工作的唯一方法是在启动安装程序之前在临时文件夹中创建假文件。我猜InstallValidate操作会检查文件是否存在,如果没有找到,它将跳过副本。但这只发生在msi 5上,因为msi 4.5可以完美地工作。何时计划将文件复制到temp的自定义操作?任何影响成本计算的自定义操作都应该在CostInitialize操作之前排序。我无法在CostInitialize之前安排它,因为它是一个延迟操作(我需要它以提升的权限运行)然后您必须使用自定义操作而不是复制操作。您的意思是我还需要自定义操作来将文件从临时文件夹复制到安装文件夹吗?不,问题是该操作从未执行:文件不在那里。让它工作的唯一方法是在启动安装程序之前在临时文件夹中创建假文件。我猜InstallValidate操作会检查文件是否存在,如果没有找到,它将跳过副本。但这只发生在msi 5上,因为msi 4.5可以完美地工作。何时计划将文件复制到temp的自定义操作?任何影响成本计算的自定义操作都应该在CostInitialize操作之前排序。我无法在CostInitialize之前安排它,因为它是一个延迟操作(我需要它以提升的权限运行)然后您将不得不使用自定义操作而不是复制操作。您的意思是我还需要自定义操作来将文件从临时文件夹复制到安装文件夹吗?