Windows installer 如何实现不可损坏的自更新应用程序

Windows installer 如何实现不可损坏的自更新应用程序,windows-installer,upgrade,Windows Installer,Upgrade,让应用程序自身更新到新版本的最佳方式是什么?详情: 它是一个独立的WPF/C#Windows应用程序,运行在.NET3.5上 应用程序在Windows启动时自动启动 应用程序在触摸屏PC上运行,无需网络/互联网访问 用户不允许访问Windows,并且没有键盘(think kiosk) 可以从USB驱动器安装新版本的应用程序。用户将可以访问“更新软件”按钮,该按钮在thumb drive上查找软件的新版本,并自动更新自身 我想让应用程序自己关闭,然后在关闭时启动更新程序。我只需要避免新安装被中

让应用程序自身更新到新版本的最佳方式是什么?详情:

  • 它是一个独立的WPF/C#Windows应用程序,运行在.NET3.5上
  • 应用程序在Windows启动时自动启动
  • 应用程序在触摸屏PC上运行,无需网络/互联网访问
  • 用户不允许访问Windows,并且没有键盘(think kiosk)
  • 可以从USB驱动器安装新版本的应用程序。用户将可以访问“更新软件”按钮,该按钮在thumb drive上查找软件的新版本,并自动更新自身
我想让应用程序自己关闭,然后在关闭时启动更新程序。我只需要避免新安装被中断、应用程序被破坏、信息亭不再可用的情况。Windows安装程序是否有针对这种情况的保护


提前谢谢

在这种情况下,最好的方法可能是创建一个新文件夹,在那里提取新版本,然后最后重命名这两个文件夹,交换后删除旧版本。重命名应该是原子的,以便在升级完成之前不会触及旧版本。

应用程序是否仅为exe,或者是否有其他依赖于版本的文件?@Tyler:有多个文件。。。DLL等。在您的解决方案中,谁负责在最后一步重命名目录?主机应用程序(要更新和删除的应用程序)无法执行此操作,因为它无法重命名自己的目录。似乎需要先关闭主机应用程序,然后由更新程序完成这项工作。是否可以使Windows installer应用程序(通过Visual Studio)具有这些额外步骤,或者是否需要编写自定义应用程序以手动复制文件并执行目录重命名/删除?