有没有办法在Windows中创build一个可自更新的可执行文件?

我想生成一个可执行文件,它可以在加载之前进行更新validation,然后,如果有更新,我希望它replace它的文件,然后重新加载。

我认为这会比“更新”EXE分离,因为如果更新必须更新呢?

我无法在networking中共享文件夹。

https://stackoverflow.com/questions/264788/can-i-update-a-exe-that-is-running-closed

是的,你可以有自己的exefile下载。 只需将正在运行的exe文件重命名为.bak,将新的exe文件下载为.exe,然后重新启动应用程序。

这里的关键是你不能在程序运行的时候把新版本下载到旧版本上,解决的方法是你可以重命名正在运行的exe文件,然后下载与重命名之前运行的exe文件名称相同的新文件。 然后它只是一个验证下载的exe的大小和程序的重新启动,你已经开始运行!

可执行文件无法替换自己的文件,但可以将新的Exe文件下载到同一目录中的已知位置或文件名,然后在退出时启动切换文件的进程,以便下次更新时运行。

如果你仔细想想,这是一个更好的方法,因为你不能确定文件下载会完成。 即使你可以,你真的想让用户等到下载完成吗? 没有…更好地让下载在后台运行。

如果你正在做一个.NET应用程序,并需要一些简单的东西。 微软有一个点击一次部署 ,做你想要的。 在使用ClickOnce部署之前,我开发了一个基本的更新程序。 执行过程中,当程序启动时,它在后台线程上检查新版本的文件。 如果有更新可用,它将在该后台线程下载。 如果更新是为了更新可执行文件,那么我会替换可执行文件。 否则,我会通知用户更新已准备好进行安装。 他们会保存他们的工作,然后点击更新按钮。 这将运行更新可执行文件,取代了文件,并重新启动程序。 这很简单,但没有做好增量更新或版本控制。 我还提供了一个回滚功能,以便在用户想要回滚到以前的版本时保留被替换的文件。 我没有保留版本的历史。 相反,我认为最后的版本是一个很好的版本。

如果您使用的是.NET Framework,我强烈推荐ClickOnce。 它可以设置为执行每个执行的更新。

有几种方法可以让ClickOnce更新更新,可以这么说。 我会在这些日子里写一篇博客文章。 这个想法是让更新运行正常,但是当你的应用程序开始显示更新已经改变的对话框,然后重定向用户下载并再次安装exe。 发送键盘命令可以自动执行该过程。