首页 > 解决方案 > MSI 安装程序(Visual Studio 安装程序项目)未更新使用中的文件

问题描述

我正在使用Visual Studio 安装程序项目扩展来为我的应用程序构建 MSI 安装程序。但是,我的应用程序应该一直运行,如果它在用户安装我的软件的新版本时打开,则打开的文件不会被覆盖,实际上几乎没有更新(尽管没有安装程序-错误)。

我发现使用安装程序项目的“自定义操作”来运行关闭应用程序的脚本没有帮助,因为在替换文件之前没有调用任何操作。

有没有一种好方法可以确保在文件应该被覆盖之前终止打开/锁定的文件?

标签: c#visual-studiowindows-installervisual-studio-setup-projevisual-studio-setup

解决方案


了解有关您的应用程序以及如何进行升级的更多信息会很有用,因为:

  1. 您通常会看到一个 FilesInUse 对话框,说明文件正在使用中,提示用户关闭它们,但如果安装是静默的,则不会。

  2. Visual Studio 设置没有对关闭和重新启动服务的内置支持,因此如果您的应用是一项服务,您将需要额外的工作。

  3. 确实需要替换的文件将提示用户重新启动(如果之前未关闭),以便在重新启动时替换它们。

因此,如果您在 UI 安装中没有看到重新启动请求或 FilesInUse 对话框,那么就会发生其他事情。因此,您需要确保:

一个。您实际上是在进行升级,其中安装项目的版本已经增加,UpgradeCode 是相同的(并且当您增加安装项目的版本时 ProductCode 会发生变化)。您的症状可能是升级无法正常工作的结果,而您看到的只是修复。

湾。“新版本”的定义是您在 a. 中进行了升级,并且二进制文件的文件版本已增加。安装的默认覆盖规则需要递增的文件版本,因此如果它们没有递增,您将看不到任何更新,并且 Windows 不会尝试显示 FilesInUse 对话框或重新启动,因为没有需要替换的文件。


推荐阅读