exe文件服务器,从服务器更新EXE文件...

这篇博客讨论了多种方法来实现正在运行的exe程序的自动更新。包括重命名当前exe、使用批处理脚本、安装程序、启动器应用程序、Web服务和独立更新程序等策略。每个方法都有其优缺点,例如在确保用户数据安全、处理权限问题和用户体验方面。关键点在于找到一种既能有效更新又不影响用户体验的解决方案。
摘要由CSDN通过智能技术生成

9 个答案:

答案 0 :(得分:4)

我将当前正在运行的exe重命名为MyTempExe.exe,将新exe复制到正确的位置(如有必要,请求提升的权限),然后运行单独的应用程序以重新启动主应用程序。在启动时,我检查MyTempExe.exe是否删除它。

我使用单独的应用程序重启的原因是我没有设置时间框架让应用程序关闭并需要等待它完成它正在做的任何事情,在关机时它会将信息写入磁盘当前状态,更新的应用程序将用于恢复旧的应用程序停止的位置。

我不知道这是否是最佳解决方案,但它是我使用的解决方案。

答案 1 :(得分:4)

将新的EXE下载到TEMP

从EXE创建批处理,内容:

taskkill /PID %process id of running EXE%

copy %new EXE% %running EXE%

%EXE%

%...%中的所有值都是占位符

从正在运行的EXE执行批处理

删除批次

答案 2 :(得分:3)

使用Inno等安装程序打包您的应用。下载并执行安装程序。让安装程序搜索并终止您的应用程序,或指示用户关闭它。安装程序将替换您的.exe,如果该应用程序无法被杀或用户不合作,它将发出重新启动通知。

答案 3 :(得分:3)

正如你可以从所有答案中看到的那样,没有固定的方法来做到这一点,所以我想我会添加我们成功完成这个的方式。

我们从不直接从网络运行应用程序。

我们从本地计算机运行应用程序,并在启动时从网络复制。

醇>

我们使用应用程序启动器执行此操作。它下载包含应用程序文件的CRC和版本资源值的XML文件。 XML文件是在部署过程中在FinalBuilder脚本中创建的。

然后,应用程序将XML文件与本地内容进行比较,并复制所需的文件。最后,我们启动有问题的应用程序。这适用于部署为大约300个本地用户提供服务的应用程序。最近我们从文件副本切换到HTTP下载,因为我们发现远程用户断开驱动器的问题。

我们仍然构建安装(使用Innosetup)来获取部署的基本必需文件。

答案 4 :(得分:2)

我有两个组件正在运行应用程序可执行文件本身和一个Web服务(SOAP),它提供版本详细信息和文件下载。

应用程序调用SOAP服务上的方法来询问项目中的文件数(通常使用application.exename来识别项目。)

soap服务从INI文件中获取其信息,该文件的条目如下:

[项目]

NumberOfFiles的= 2

文件1 = MyApp.exe的; 1.0.0.1

文件2 = MYDLL.DLL; 1.0.0.2

您只需在上传新文件的同时更新此文件。

更新应用程序的过程:

获取网络服务上可用的文件数量

对于每个文件,应用程序都要求SOAP服务器提供名称和版本号。

应用程序将此信息与其自身的版本信息进行比较,并确定文件是否需要更新,构建需要更新的本地文件列表。

对于需要更新的每个文件,应用程序将文件下载到filename.ext.new

最后,应用程序将所有filename.ext重命名为filename.ext.old,并将filename.ext.new重命名为filename.ext,然后重新启动。 (不需要外部应用程序来重新启动您自己的程序)。

醇>

注1,您可能需要提升才能替换文件,具体取决于您安装文件的位置。

注意2:善待用户,在强制更新用户之前要仔细考虑。

注意3:您无法删除正在运行的exe,但您可以重命名它,然后重新启动新版本。

编辑===

对于某些不能包含版本信息资源的参考数据文件,您可以拥有像File99 = MyDataFile; 1.1.2011这样的版本号的3个元素向客户端指示它应该检查文件日期/戳记。

答案 5 :(得分:2)

我自己使用TMS TWebUpdate进行软件更新。优点是,如果除了普通的EXE更新之外还需要其他任何操作,可以在脚本中添加一些额外的操作。

答案 6 :(得分:1)

我的方式是反过来:如果新版本在线,请提示用户更新。如果他想要(或被迫......)我结束应用程序并启动一个新的exe(更新程序)。此更新程序加载更新并替换旧的exe(未运行)。然后它启动新的exe。准备。 (你当然也可以替换其他文件。)但是:使用像InnoSetup这样的安装程序可以提供更多的可能性并且不会与常规卸载程序混淆,所以它真的更好......

答案 7 :(得分:1)

您可以拥有一个单独的更新可执行文件,其任务是检查服务器版本,必要时下载更新的可执行文件,然后运行本地可执行文件。

或者您可以在两种不同模式下运行一个可执行文件:1。启动时,检查更新,如果有,请将可执行文件下载到下载目录,运行并退出。

2.新的可执行文件将检查它是否从安装目录运行,如果没有,它会在那里复制,覆盖旧版本,从那里开始复制,然后退出。

答案 8 :(得分:0)

您无需运行其他应用程序即可执行此操作。在运行时将更新从服务器推送到客户端,存储在客户端上的临时目录中。如果要升级,请将所有正在运行的文件移动到另一个临时目录,将新文件移动到原始应用程序目录中,然后在关闭时使用标准可执行文件名重新启动应用程序。

我以这种方式自动升级在无人值守的计算机上运行的客户端应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值