我有一个应用程序(WinForms C#),我想在其中复制一些文件来自"下载"目录进入ProgramFiles目录。基本上我试图通过滚动我自己的自动更新程序来更新一些(或所有)当前正在运行的程序dll和可执行文件。
因此,我让应用程序自动检查更新并将更新下载到ProgramData \ MyApplication目录中。问题是,我需要在相应的ProgramFiles \ MyApplication目录中覆盖应用程序的所有文件,包括当前正在运行的.exe。有关如何执行此操作的任何想法吗?
答案 0 :(得分:2)
正确编写自我更新应用程序 并非易事。您在问题中提到的大多数问题,例如正在使用的文件等。
从反复试验中我发现最好的方法(大致)是:
%TEMP%
文件夹中的引导程序将信号发送到第一个应用程序,然后启动MSI安装程序。不幸的是,自我更新应用程序的问题在于,除非您将所有这些设计为与v1一起使用(并在使用假v1.1发布之前对其进行测试),否则您将发现需要使用旧版本的功能版本,以帮助更新到新版本。
如果MSI安装程序不是一个选项,那么在临时目录中运行的可以进行交换,进程终止等的引导应用程序是一种很好的启动方式。
根据您的应用程序设计,您可能还需要确保自我更新过程在Windows Vista及更高版本上升级,以便它可以写入%PROGRAMFILES%
等目录来执行文件写入。