- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
Google 的 Chrome 浏览器在 Windows 上有一个 super 流畅的更新系统。它不需要管理权限,并且无需用户交互即可就地更新。
我正在尝试创建与此类似的东西,如果有任何关于如何做的建议,我将不胜感激。
他们的技巧的第一部分是他们不像大多数 Windows 程序那样安装到 Program Files
中,而是安装到 C:\Users\USER_NAME\AppData\Local\Google\Chrome\应用程序
。这使他们的程序文件能够在没有管理权限的情况下自行修改。
查看该目录,我看到不仅有一个 chrome.exe
,还有一个 old_chrome.exe
。在网上搜索了一下,我发现 chrome 将自己备份为 old_chrome,以防更新失败,它仍然可以运行一些东西。
创建一个作为安装包的一部分的辅助应用程序的方法也是如此,您将执行转移到该应用程序中(我认为这是可行的),然后该辅助应用程序进行文件重命名和重新启动 chrome.exe
什么时候完成? (如果是这样,假设这个辅助应用程序在启动时又被 chrome.exe
删除,这解释了为什么我没有看到它存在。)没有办法简单地拥有 chrome.exe
将自身重命名为 old_chrome.exe
并复制并启动新的 chrome.exe
在吗?
如果这是实现类似功能的最佳方式,是否有任何预构建的解决方案可以让我直接融入到我的项目中,因为这似乎是相当通用的功能,或者我是否必须推出我自己也是这样吗?
或者,如果有更好的方法,那是什么? (就其值(value)而言,Chrome 的方法让我印象深刻,因为它比 Mozilla 使用服务的新方法更加优雅和直接)
最佳答案
好的,开始工作了,下面是它的工作原理。
不需要辅助应用程序。至少在 Windows 上,程序可以原地重命名,只是无法删除。因此,我在我的程序中添加了一个更新程序,它会下载新文件。下载完成后,它会重命名旧的可执行文件,并将新的可执行文件移动到它的位置。
然后,您可以简单地从旧的正在运行的进程中执行新的可执行文件,然后退出旧的。
瞧,新版本与旧版本的无升级交换。
关于windows - 如何在 Windows 中创建 Chrome 风格的程序自更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10340301/
我是一名优秀的程序员,十分优秀!