如何在Windows中创buildChrome风格的程序自我更新?

Google的Chrome浏览器在Windows上拥有超级平滑的更新系统。 它不需要pipe理权限,并且在不需要用户交互的情况下进行更新。

我正在尝试创build类似于此的内容,并希望得到有关如何执行此操作的任何build议。

他们的诀窍的第一部分是他们不像大多数Windows程序那样安装到Program Files ,而是安装到C:\Users\USER_NAME\AppData\Local\Google\Chrome\Application 。 这使得他们的程序文件无需pipe理权限即可自行修改。

看看那个目录,我看到不仅有一个chrome.exe而且还有一个old_chrome.exe 。 在网上search一下,我发现chrome会自动将其自身保存为old_chrome,以防更新不良,仍然可以运行。

所以是这样做的方式来创build一个助手应用程序,作为安装包的一部分,您将执行转移到(我认为这是某种方式可行),该助手应用程序执行文件重命名,并重新启动chrome.exe ? (如果是这样,假设这个帮助程序在启动时被chrome.exe删除,解释了为什么我没有看到它在左右。)没有办法只将chrome.exe重命名为old_chrome.exe并复制启动新的chrome.exe在那里?

如果这是做这种工作的最好方法,是否有任何预先build立的解决scheme来做到这一点,我可以把它放到我的项目中,因为这似乎是相当通用的function,或者我必须滚动这样的东西我?

或者,如果有更好的办法,那是什么? (值得一提的是,Chrome的方法比Mozilla使用服务的新方法更加优雅和直接。

好吧,得到这个工作,这是如何工作的。

不需要帮助程序。 至少在Windows上,一个程序可以被重命名,它不能被删除。 因此,我添加了一个更新程序到我的程序,并下载新的文件。 下载完成后,它将重命名旧的可执行文件,并将新的可执行文件移动到它的位置。

然后,您可以简单地从旧的运行进程中执行新的可执行文件,然后退出旧的可执行文件。

Voila,没有升级换旧版本的新版本。