Я смог реализовать эту функциональность только с небольшой дополнительной работой после каждого опубликования без подробных инструкций, требуемых пользователем. Как это получает определенную версию, что вам нужно иметь несколько каталогов ClickOnce для каждой версии
После публикации вам необходимо открыть myApplication.application в блокноте и внести изменения
<deploymentProvider codebase="http://www.example.com/ClickOnce/MyApplication/MyApplication.application" />
в
<deploymentProvider codebase="http://www.example.com/ClickOnce/MyApplication1.02.03.45/MyApplication.application" />
или любую другую версию, которую вы будете предоставлять; перед загрузкой в clickonce.
Вот как пользователь может получить определенную версию
Public Shared Sub GetSpecificVersion()
Try
Dim spre As String = InputBox("press enter to download the current version of myApplication. If you would want to download a specific version of myApplication please append the version number i.e myApplication1.02.03.45", , "myApplication")
Dim spost As String = "/myApplication.application"
Dim finalUrl As String = "http://www.example.com/clickonce/"
finalUrl = finalUrl & spre & spost
Try
My.Computer.Network.DownloadFile(finalUrl, "C:/ProgramFiles", Nothing, Nothing, Nothing,
1000, True) 'url/filename/username/password/showui/timeout/overwriteExiting
Process.Start("C:/ProgramFiles/myApplication.application")
Application.Current.Shutdown()
Dim r As String
Catch ex As Exception
MsgBox("The desired version of myApplication may not be typed correctly or is unavailable on clickonce. alternatively a connection could not be established to the clickonce server")
MsgBox(ex.ToString())
End Try
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
Чтобы получить конкретную версию все пользователю необходимо сделать, это ввести версию «myApplication1.02.34
побочный эффект этого что проверка для последовательных обновлений с использованием манифеста будет проверять только определенную папку, я создал второй метод для получения последней версии из каталога по умолчанию:
heres для получения центральной версии
Public Shared Sub GetLatestCentralizedVersion()
Try
My.Computer.Network.DownloadFile("http://www.example.com/clickonce/myApplication/myApplication.application", "C:/ProgramFiles/myApplication.application", Nothing, Nothing, Nothing, 1000, True) 'url/filename/username/password/showui/timeout/overwrite
Process.Start("C:/ProgramFiles/myApplication.application")
Application.Current.Shutdown()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
Я нашел способ сделать это аналогично вашему предложению. Собираясь писать код здесь как ответ, как только я его протестировал, но мы вроде как сейчас работаем. – DermFrench
Кстати, для этого приложения не требуется отдельное приложение, мы работаем из нашего приложения. – DermFrench
@ DermFrench Fair достаточно –