C++ 自动更新到新版本

Posted

技术标签:

【中文标题】C++ 自动更新到新版本【英文标题】:C++ automatically update to new version 【发布时间】:2017-08-17 08:02:01 【问题描述】:

我已经寻找了 3 天的好解决方案,但到目前为止我还没有找到任何解决方案。我的情况是:

客户端已安装应用程序(C++、控制台应用程序)。启动时的应用程序将与服务器检查它的版本号并返回,或者它是最新的,或者它应该下载新版本。

如果要下载新版本,我想下载新的脚本,名称为:Application2.exe

但是,我希望它替换触发新版本下载的旧 Application.exe

我的解决方案是:Application.exe 下载 Application2.exe。下载后,它应该会触发 Updater.exe,它会休眠 5 秒。在这 5 秒内(或任何最适合的时间跨度)。在这 5 秒内,Application.exe 有时间关闭,5 秒后 Updater.exeApplication.exe 替换为 Application2 .exe.

现在更新已完成,客户端已安装最新版本。

对于系统锁定文件等,这种解决方案是否可行?

【问题讨论】:

我会反其道而行之。有一个小程序检查更新,应用任何更新,然后运行(更新的)应用程序。如果您需要更新那个“小程序”,唯一的问题就来了,但这不应该经常需要(它的目的是专门和简单的,所以更有机会在没有导致需要更新的错误的情况下第一次正确地完成它)。 您还可以生成另一个进程来完成这项工作并关闭您当前的程序,让您可以对程序执行任何您喜欢的操作,因为它不再运行了! @Peter,感谢您的提醒,这确实是一个不错的解决方案,我会考虑的 @OMGtechy,这就是我上面所说的方法吗? .. 【参考方案1】:

好消息,您可以重命名在 Windows 上打开的文件(可执行文件和 DLL)。锁定会阻止您删除文件,而不是重命名它们。

    将当前运行的程序重命名为Application_old.exe在运行时 将下载的程序写入Application.exe 运行新的Application.exe 关闭旧的。 使用新执行的程序删除旧版本。

这样,您将在更新后自动重启。我一直都是自己做的。

【讨论】:

哇,我不知道这个...怎么可能当我在 Windows 上使用其他程序执行此操作时,它会给我该程序正在使用的错误消息?是因为您的解决方案是在同一个程序中制作的吗? @TVAvanHesteren 这只发生在文档中,例如 Microsoft Word 文档。您无法在它们打开时重命名它们。但是可执行文件和 DLL 可以重命名。 啊,对了,没有提到您专门针对 .exe 和 .dll 文件说明。谢谢,我会考虑的!

以上是关于C++ 自动更新到新版本的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序发布新版本时自动提示用户更新

uniapp自动更新

c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时不能启动更新程序

自动更新程序示例

uniapp 小程序版本自动更新

自动程序更新和 Windows 7