私はこの機能を実装するために、各パブリッシュ後にユーザーが詳細な指示を必要とせずに少し追加作業を行うだけで済みました。これが特定のバージョンを取得する方法は、バージョンごとに複数の 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」を入力するだけです。
これの副作用は、マニフェストを使用して連続する更新をチェックすると、その特定のフォルダーのみがチェックされることです。デフォルトのディレクトリから最新バージョンを取得するための 2 つ目の方法を作成しました。
中央バージョンを入手するにはこちら
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