我的建议(在我自己构建了一些之后)是从一个稍微不同的系统开始。让您的应用程序通过查看服务器上的静态 XML 文件在内部运行检查,例如:/AppVersion_[AppID].xml 该 xml 文件仅描述当前的公共版本以及当前的构建/版本号,可能还有时间戳和完整路径到最新的二进制文件以及 MD5 校验和。这将减少一开始的大量工作和复杂性。
您的应用程序只需提取此 XML 文件并将文件中的版本信息与其当前版本进行比较。如果它较新,您可以弹出一个友好的对话框,要求用户升级。
如果用户确实想要升级,请从 XML 文件的路径中下载安装程序二进制文件,检查 MD5 校验和,然后使用 shell 执行启动它。这使用户不必下载您的文件,并确保文件下载没有任何问题。
我建议从 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)