对于基于桌面的应用程序,执行自动更新的最佳做法是什么?目前,我们下载所有文件,然后复制并注册(如果com dll)到他们各自的目录.
我查看了Google Chrome更新方法.它似乎首先将压缩文件下载到目录中,然后解压缩所有文件.此外,他们有一个设置应用程序,似乎用于进行更新.此外,他们创建一个映射到更新版本的目录,如1.0.154.43,但它们保留旧版本的目录.
我想做的是为我的代码创建一个"启动器"框架,给定一个URL和一个预定义的版本控制方案:1)去检查是否存在更新2)下载更新3)"安装"更新4) "重新运行"该应用程序
我想a)在现有JVM内部完成所有这些工作,并且b)独立于平台.高阶对吗?根据我对OSGi和Apache Felix的(有限)知识,我很确定这是可能的,但我真的迷失在细节中.
检查更新并下载它是微不足道的.导致"旧"捆绑卸载和"新"捆绑加载是我陷入困境的地方.我过去做过OSGi的工作,但它的动态远不如此.一个好的起点或朝着正确方向的努力将是最受欢迎的.
如果我真的过度烘焙已经用免费图书馆解决的东西,那么告诉我这个,但到目前为止我还没有找到任何东西.:-)
我已经看过几篇关于Window/.NET的不同自动更新框架的帖子,包括:
我对这些自动更新框架之间的主要区别感兴趣,为什么会选择一个而不是另一个框架.
我也对它们的安全性感兴趣.我知道对于大多数人来说,您必须使用托管的XML文件来让您的应用更新清单.如何使其安全,以便未购买您的应用程序或不使用您的应用程序的人根本无法访问您的托管网站并下载您的二进制文件?
我在几台机器上部署了一个Java 1.6应用程序(~30),并作为Windows服务启动.
我的主要问题是维护这些部署的工件:如果我开发了这个应用程序的新版本,我不想在每台机器上手动重新部署它.
理想情况下,当Windows服务启动时,它会检查远程服务器是否存在更新,如果找到,则会升级应用程序.请注意,在此升级之后,可以再次重新启动服务.
可以将此机制与Maven快照验证进行比较:如果SNAPSHOT远程存储库上有较新版本的版本,则Maven会在运行之前下载该版本.请注意,应用程序本身将部署在Maven存储库(在我们的示例中为Nexus)中,因此将针对此Nexus实例检查更新.
我实现这种自动应用程序更新的技术解决方案是什么?
不要犹豫,向我询问有关技术信息或背景的更多细节......
谢谢.
编辑:正如Peter Lawrey所说,我可以使用Java Web Start.但是,如何将JWS集成到作为Windows服务运行的Java应用程序中?
最近我接受了.NET职位的采访.出于问题,我在回答一个问题时遇到了麻烦.我希望有人可以帮助我.
场景(问题):应用程序的第一个版本(可能是winform/wpf UI应用程序)已经发布到客户端,他们开始使用该应用程序.但不幸的是,QA团队后来在当前版本中发现了一个严重的问题.现在的挑战是,我们应该能够发送和应用补丁(修复)而不强制应用程序重新启动.假设应用程序是一个实时应用程序,无法重新启动以应用修补程序.
就个人而言,我在给出一个令人信服的答案时遇到了麻烦,这个答案在应用补丁时不影响正在运行的应用程序.
回答:
感谢所有贡献到目前为止.我已经设法为这个问题找到了解决方案.不确定这是否是面试官的要求.尽管如此,我很高兴看到微软的ClickOnce,它几乎可以满足我的需求.
如何开发我的Windows应用程序,以便在客户端计算机上自动更新,如Firefox,Skype等?
是否有任何简单的方法或任何开源库可以帮助我按照一些步骤或几行代码来完成它?
有人知道软件更新的任何设计模式吗?具体来说,我想要一个将旧文件/设置转换为最新版本的模式.
我能想到的最好的解决方案是有一套关于如何从每个版本转换到下一个版本的规则(例如v1.0到v1.1,v1.1到v1.2,......).然后,要将文件/设置转换为最新版本,您将按顺序运行所有转换规则.
这并不是一种非常优雅的做事方式 - 有更好的方法吗?
(对于上下文,我正处于Win8 Metro应用程序的早期规划/设计阶段)
提前致谢
我有一个在Google Play商店发布的Android应用.Google Play商店应用是最终用户安装更新的方式.我意识到由用户自行决定打开自动更新,因此任何给定的手机都可以打开或不打开此功能.
我的应用程序在运行时运行通知栏中带有图标的前台服务.在测试自动更新过程期间,我注意到如果服务正在运行且应用程序自行更新,则服务将关闭(这是因为安装了新代码所需的).
但是,如果可能的话,我想避免这种情况.我想要发现的是找到一种方法来检测自动更新何时尝试更新我的应用程序.如果服务正在运行,我想拒绝更新,直到服务完成它的工作并关闭.
那么有什么方法可以检测谷歌游戏商店何时尝试更新你的应用程序,如果是这样,有没有办法阻止更新,直到你确定你的应用程序处于安全状态关闭?
我正在开发一个应该能够自动更新的客户端应用程序(.NET).将使用Simple WiX/MSI安装程序部署该应用程序.
我需要的是:
有没有合适的框架/模式来存档?
我发现/尝试了以下内容:
是否有任何积极的开发和可靠的解决方案(他们不需要是免费的,也不需要OpenSource)?
每当我在Market中发布我的应用程序的新版本时,如果用户启用了"自动更新"选项,该应用程序将自动更新.
该应用程序包含一个不断运行的服务.但是当自动更新发生时,旧的正在运行的应用程序被终止,但新的应用程序未启动.由于更新主要是透明地发生在用户身上,因此应该在更新后自动重新启动应用程序的服务,以便几乎不会中断服务.
使用市场上的真实更新对此进行测试有点困难,因此我使用以下两个adb命令来模拟此更新过程.安装第一版:
adb install oldversion.apk
Run Code Online (Sandbox Code Playgroud)
自动更新:
adb install -r newversion.apk
Run Code Online (Sandbox Code Playgroud)
运行第二个命令后,应用程序成功更新,但已停止但未重新启动.
我们如何让新版本的服务自动启动?
auto-update ×10
c# ×3
.net ×2
android ×2
deployment ×2
google-play ×2
java ×2
.net-4.0 ×1
osgi ×1
patch ×1
service ×1
updates ×1
winforms ×1
wpf ×1