C# MSI安装程序未更新的在用文件(Visual Studio安装程序项目)

C# MSI安装程序未更新的在用文件(Visual Studio安装程序项目),c#,visual-studio,windows-installer,visual-studio-setup-proje,visual-studio-setup,C#,Visual Studio,Windows Installer,Visual Studio Setup Proje,Visual Studio Setup,我正在使用扩展为我的应用程序构建MSI安装程序。但是,我的应用程序应该一直运行,如果在用户安装我的软件的新版本时它处于打开状态,则打开的文件不会被覆盖,并且实际上几乎没有更新(尽管没有安装程序错误) 我发现,使用安装程序项目的“自定义操作”来运行关闭应用程序的脚本没有帮助,因为在替换文件之前没有调用任何操作 有没有一种好方法可以确保打开/锁定的文件在被覆盖之前被终止?我们遇到了这个问题,我们提出的解决方案是创建两个应用程序;用户应用程序和更新程序应用程序。MSI会同时安装这两个组件。每个应用程序

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

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


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

我们遇到了这个问题,我们提出的解决方案是创建两个应用程序;用户应用程序和更新程序应用程序。MSI会同时安装这两个组件。每个应用程序检查另一个应用程序是否需要更新,如果需要,则关闭另一个应用程序,下载另一个应用程序的更新程序,运行它,然后重新启动另一个应用程序。此外,每个应用程序都会监视另一个应用程序是否正在运行,如果没有,则会启动它。

我们遇到了这个问题,我们提出的解决方案是创建两个应用程序;用户应用程序和更新程序应用程序。MSI会同时安装这两个组件。每个应用程序检查另一个应用程序是否需要更新,如果需要,则关闭另一个应用程序,下载另一个应用程序的更新程序,运行它,然后重新启动另一个应用程序。此外,每个应用程序都会监视另一个应用程序是否正在运行,如果没有,则会启动它。

重新启动:如何安装此MSI?什么命令行?如果在命令行上设置了
REBOOT=ReallySuppress
,则即使完成产品安装需要重新启动,也不会提示您重新启动

msiexec.exe /i MySetup.msi /QN REBOOT=ReallySuppress
如果您使用的是分发系统,我想禁止重新启动提示可能是标准行为。然后,您的产品文件应该在重新启动(或者某些更新的机制)后放置到位

VisualStudio安装程序项目也可能会做一些我不知道的奇怪的事情


Log:我会尝试,以确定发生了什么:

msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log
记录所有MSI:我个人喜欢为所有MSI安装启用日志记录-如上面链接中“
全局记录机器上的所有设置”
”部分所述

解释MSI日志:解释日志文件有时会很困难


重新启动管理器:重新启动管理是一个非常复杂的主题,Windows的功能(以的形式)旨在尽量减少重新启动的需要,而不是在安装过程中以“自动神奇”的方式关闭和重新启动应用程序(应用程序侦听消息并在接到通知时自动关闭,系统可能会在安装后重新启动应用程序(如果配置为这样做)

在我看来,更新应用程序以符合重启管理器是解决此类问题的唯一方法

  • (也许只是把黄色部分往下读一读)
  • 伙计们有一篇关于这方面的非常好的技术文章: 也直接链接到上面的链接中-我认为这里仍然值得直接链接
REBOOT:如何安装此MSI?什么命令行?如果在命令行上设置
REBOOT=ReallySuppress
,即使需要重新启动才能完成产品的安装,也不会提示您重新启动

msiexec.exe /i MySetup.msi /QN REBOOT=ReallySuppress
如果您使用的是分发系统,我想禁止重新启动提示可能是一种标准行为。然后,您的产品文件应该在重新启动(或者某种更新的机制)后放置到位

VisualStudio安装程序项目也可能会做一些我不知道的奇怪的事情


Log:我会尝试,以确定发生了什么:

msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log
记录所有MSI:我个人喜欢为所有MSI安装启用日志记录-如上面链接中“
全局记录机器上的所有设置”
”部分所述

解释MSI日志:解释日志文件有时会很困难


重新启动管理器:重新启动管理是一个非常复杂的主题,Windows的功能(以的形式)旨在尽量减少重新启动的需要,而不是在安装过程中以“自动神奇”的方式关闭和重新启动应用程序(应用程序侦听消息并在接到通知时自动关闭,系统可能会在安装后重新启动应用程序(如果配置为这样做)

在我看来,更新应用程序以符合重启管理器是解决此类问题的唯一方法

  • (也许只是把黄色部分往下读一读)
  • 伙计们有一篇关于这方面的非常好的技术文章: 也直接链接到上面的链接中-我认为这里仍然值得直接链接

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

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

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

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

  • 因此,如果在UI安装中没有看到重新启动请求或文件使用对话框,则会发生其他情况。因此,您需要确保:

    a、 您确实在进行升级,其中