Language agnostic 关于实现检查新版本的非常简单的更新程序的建议

Language agnostic 关于实现检查新版本的非常简单的更新程序的建议,language-agnostic,desktop-application,Language Agnostic,Desktop Application,我想在我的应用程序中添加一个非常简单的自动更新程序。我想从最简单的事情开始 有什么建议吗? 对以下选项有何改进(或替代)建议 这是我正在考虑的一个选择 应用程序显示一个表单,该表单提供 使用选项检查新版本 每X天再次检查一次 如果用户单击“立即检查”它 启动网页 www.mysite.com/CheckNewVersion.asp?AppID=?AppVersion= ASP脚本有一个所有 程序ID和当前的 可用版本。然后它显示 要么给他们一个页面说“没有新的 可用版本或新版本 具有XYZ功能/

我想在我的应用程序中添加一个非常简单的自动更新程序。我想从最简单的事情开始

有什么建议吗? 对以下选项有何改进(或替代)建议

这是我正在考虑的一个选择

  • 应用程序显示一个表单,该表单提供 使用选项检查新版本 每X天再次检查一次
  • 如果用户单击“立即检查”它 启动网页 www.mysite.com/CheckNewVersion.asp?AppID=?AppVersion=
  • ASP脚本有一个所有 程序ID和当前的 可用版本。然后它显示 要么给他们一个页面说“没有新的 可用版本或新版本 具有XYZ功能/修复”(以及 “免费更新”或“在此处付款”)
  • 这使自动更新的好处达到80%,而成本仅为10%。如果没有人点击自动更新(我怀疑这是一种可能性,因为人们不想被打扰),那么让它变得简单是毫无意义的。没有办法让它变得如此简单,以至于他们至少不需要点击“更新”按钮


    顺便说一句,我意识到有一个类似的问题,所以,没有讨论的实施细节。它似乎更具理论性,目标是更复杂的解决方案。

    在Mac OS X中,Sparkle框架在自动更新应用程序中非常流行。它的工作原理有点像这样:

    用户第一次启动应用程序时,会询问是否自动检查更新(有时检查间隔)。当用户表示要检查更新时,应用程序通常会在启动时检查更新,但每天最多检查一次

    在服务器上,有一个XML文件或脚本生成这样一个文件,其中包含可用的软件版本以及每个版本的简短摘要或更改日志。当没有可用的更新时,应用程序不会执行任何操作。用户根本没有得到通知

    当更新可用时,应用程序会提示:“更新可用”,并显示新版本号、更改日志和以下按钮:“更新”和“跳过此版本”

    按钮当然是不言自明的。

    我的建议(在我自己构建了一些按钮之后)是从一个稍微不同的系统开始。通过查看服务器上的静态XML文件,让应用程序在内部运行检查,例如:/AppVersion\uuu[AppID].XML该XML文件仅使用当前的内部版本/版本号以及最新二进制文件的时间戳和完整路径以及MD5校验和来描述当前的公共发布。这将从一开始就减少大量工作和复杂性

    您的应用程序只是拉取这个XML文件,并将文件中的版本信息与其当前版本进行比较。如果更新,您可以弹出一个友好的对话框,要求用户升级

    如果用户确实希望升级,请从XML文件中的路径中下拉安装二进制文件,检查MD5校验和,然后使用shell execute启动它。这样用户就不必下载您的文件,并确保文件下载时不会出现任何问题

    我建议从VB6升级到VB.NET,原因如下:

    1) NET BCL中一个名为WebClient的神奇控件,它使获取URL的字符串内容像一行调用一样简单。此外,WebClient将通过一次调用将文件下载到指定的磁盘位置

    2) 内置的XML支持非常棒

    下面是一些基本的VB.NET代码,可以帮助您开始下载并运行其中一个软件产品:

    Dim TargetRemoteSetupFile As String = "http://www.bungalowsoftware.com/downloads.asp?programlist=/download/aphasia_tutor_1_and_2_outloud_install.exe"
    Dim LocalDownloadPath As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "BungalowSoftwareInstall.exe")
    
    Dim FileDownloaderWebClient As New System.Net.WebClient()
    
    Try
       FileDownloaderWebClient.DownloadFile(TargetRemoteSetupFile, LocalDownloadPath)
    Catch ex As Exception
       System.Diagnostics.Debugger.Break()
       '...
    Finally
       FileDownloaderWebClient.Dispose()
    End Try
    
    System.Diagnostics.Process.Start(LocalDownloadPath)
    

    不确定问题在哪里??VB6?VB6?!?!天哪,这是2009年,对吗?等待认真地VB6???他们是收缩包装应用程序,已经有12年的历史了(从VB3开始)。到目前为止,我们有一个很好的理由从头重写它们。我们等待的时间越长,VB6到VB.net转换器的性能越好,我们需要为转换支付的收入也就越多。