首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新更新程序

更新更新程序
EN

Stack Overflow用户
提问于 2014-02-13 17:44:26
回答 1查看 362关注 0票数 1

我有几个小的独立程序,有一个更新。我有一个更新程序,可以更新它们(所需的项目没有安装程序,它只是替换文件)。

但是如何更新更新程序本身呢?我自己看到了三个解决方案,但是最好的方法是什么呢?

1) How to update "updater"? (C#)这里的问题是,我不希望在我的每个小程序中都包含更新程序;另一个问题是,更新程序可以修补所有的应用程序,但是在某些情况下,一个人得到一个应用程序,而不应该知道其他的应用程序。

2)使用第一个更新程序下载第二个更新程序,启动新的更新程序,删除第一个更新程序,并重新命名自己以匹配旧的快捷方式。最好的方法是,如果可能的话,可以做一个selfreplace (在加载新文件时删除自身并自行替换旧的文件)。

3)为更新程序创建启动程序,启动程序将永远不会更新,但可以替换更新程序。我觉得有点过火了。

所有3种解决方案都应该或多或少地起作用,但也许有一种更简单的方法/更干净的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 18:00:01

在不知道任何其他信息的情况下,我能想到的绝对最简单和最快的方法(如果所有拥有这些应用程序的计算机都在同一个网络上)就是编写一个批处理文件,检查本地机器上每个应用程序的存在,如果它找到它,它会从一个中央位置为该应用程序提取一个“更新”批处理文件,并运行它(然后继续处理其他应用程序)。

就像这样:

代码语言:javascript
复制
...

SET CentralLoc=\\CentralServer\Updates

...

IF EXIST C:\CompanyApplications\Application1 (  
    COPY %CentralLoc%\UpdateApplication1.bat .\
    call .\UpdateApplication1.bat
)

...

然后,您只需保存新的批处理文件(或EXE、MSI或任何其他文件),只要有新的更新可用,就可以将每个应用程序更新到该中心位置。

这个批处理文件实质上是一个“更新者的更新程序”(选项3),但尽可能保持它的简单和简单。

然而,这只是我第一次在没有更多了解你的问题的情况下接受它。这样做有很多更好的方法,特别是在公司内部网络上(MSI部署、基础设施自动化工具(如Chef和Puppet )、支持批量更新推送的it库存工具等);但如果需要的话,上述方法是在15分钟内实现整个任务的一种潜在方法。

编辑

在我的回答中加上这个评论..。

我能想到的下一个最好的方法是为更新程序本身创建一个C#项目(更新程序的.exe ),但是将更新程序的逻辑放入一个单独的.dll文件中,该文件与更新程序捆绑在一起。更新程序可以在.dll启动时动态加载它,如果DLL本身有更新,它可以卸载它,获取新的DLL,然后重新加载它,所有这些都在运行时没有任何明显的用户注意。所有实际的更新程序逻辑都将存在于DLL中,并且可以随时更新,只需让更新程序替换自己的DLL.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21761640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档