我有一个 WiX 安装程序项目,它安装客户端应用程序和 Windows 服务。它被设置为在安装过程中停止服务。但是它仍然显示错误窗口:
以下应用程序正在使用安装程序必须更新的文件
带有
Try Again
、Continue
和 Cancel
选项。如果我选择 Continue
并检查安装程序的 Windows 事件日志,它会显示服务正在停止并再次启动。 StopServices 元素位于建议的序列位置。
如何避免错误窗口?
我的理解是,文件的列出顺序并不重要,因为 Windows 安装程序会在复制任何文件之前停止服务。我想知道是否需要先列出服务exe。
最佳解决方案:使用“ServiceInstall”和“ServiceControl”元素确保服务正确停止/启动(以及安装/卸载)。
事实上,在我们的安装程序中,应用程序和服务是从自定义安装程序代码中停止/启动的。但是,在运行自定义安装程序代码之前会检查文件是否正在使用。因此,这些文件在安装程序启动时正在使用,但在安装程序尝试复制文件时尚未使用。对用户来说很烦人,但实际上并不是问题。如果在安静模式下使用
msiexec.exe
安装,则安装成功。
此外,在实际关闭之前,我们还遇到了从关闭调用返回的服务的另一个问题。 (正如@PhilDW 所评论的)。