Мое предложение (после того, как я сам собрал несколько из них) - начать с немного другой системы. Попросите ваше приложение выполнить внутреннюю проверку, посмотрев на сервер статический файл XML, например: /AppVersion_[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)