Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用单独的程序自动更新windows应用程序_Windows_Auto Update - Fatal编程技术网

不使用单独的程序自动更新windows应用程序

不使用单独的程序自动更新windows应用程序,windows,auto-update,Windows,Auto Update,我正在寻找为我的windows应用程序启用静默自动更新的方法。更新过程应确保仅下载和替换更改的文件。因此,我计划将其与我的应用程序集成。考虑到重命名/移动正在运行的可执行文件(或其文件夹)是可能的,可以使用应用程序更新自身吗?。重命名/移动正在运行的可执行文件是否危险?。与使用应用程序本身进行更新相比,使用单独的更新程序有哪些优点 谢谢 windows操作系统不允许您覆盖正在运行的应用程序。您需要另一个应用程序来执行此操作。我的一个过程是让我的downloader应用程序下载文件,但如果它们正在

我正在寻找为我的windows应用程序启用静默自动更新的方法。更新过程应确保仅下载和替换更改的文件。因此,我计划将其与我的应用程序集成。考虑到重命名/移动正在运行的可执行文件(或其文件夹)是可能的,可以使用应用程序更新自身吗?。重命名/移动正在运行的可执行文件是否危险?。与使用应用程序本身进行更新相比,使用单独的更新程序有哪些优点


谢谢

windows操作系统不允许您覆盖正在运行的应用程序。您需要另一个应用程序来执行此操作。我的一个过程是让我的downloader应用程序下载文件,但如果它们正在使用,则会给它们扩展名.update

然后,当我的应用程序启动时,它会在文件夹和子文件夹中查找具有该扩展名的任何文件。如果找到一个补丁,它将启动一个补丁程序并自行终止。修补程序等待程序文件释放,然后将.update文件移到应用程序文件的顶部,并重新启动应用程序

当有更新但用户没有注意到时,启动需要一秒钟的额外时间

此外: 单独的更新程序的优点在于模块化和清洁度。您可以重用更新程序软件,其代码可能不是您的应用程序所做工作的核心。另外,除非您将其设置为多线程,否则它将在应用程序工作时影响其交互性


我看到很多程序员都倾向于采用单一的部署方法(使用静态构建),但是如果你问我的话,模块化仍然有很大的好处。

我认为允许应用程序自我更新的主要缺点是,它使确保所有活动都已停止变得更加困难,例如,所有异步I/O都已完成,所有用户界面元素都已关闭,所有数据都已刷新到磁盘。通常,使用单独的更新程序时,应用程序进程将在更新开始之前退出,这样您就可以确定不会发生任何会干扰(或被)更新进程的事情


如果您只是试图避免使用单独的构建,则可以设计应用程序,使其在下载新内容后在临时位置复制自身(或者,如果更新程序组件本身已更新,则提取自身新版本的副本),并以更新模式启动此副本。在启动时决定它是更新程序实例还是常规实例的应用程序很容易设计,不存在上述问题。

用户通常不希望“静默自动更新”,而且由于权限/特权/UAC的原因,它们通常不可能实现。您需要新的更新计划。应用程序安装在本地应用程序数据中(以支持静默自动更新),该数据始终具有完全访问权限。修改/替换/删除正在运行的可执行文件可能不起作用,但重命名/移动可执行文件在xp、vista和windows 7中起作用。在大多数情况下,应用程序在使用时无法更新,因此,我不认为对应用程序的交互性有任何潜在影响是一个问题。