1. 更新オプションで設定する方法
[プロジェクトのプロパティー] – [発行]タブの[更新…]ボタンを押す.
ダイアログで「アプリケーションの開始前に行う」を選び,
「このアプリケーションに最低限必要なバージョンを指定してください」にチェックを付け,発行するバージョン番号を入力する.
この方法は発行前に毎回バージョン番号を入力しなければならないが,必要なときだけ強制アップデートができて便利である.
2. コードでおこなう方法
下記,InstallUpdateSyncWithInfo プロシージャーをフォームのLoadイベントなどに入れる.
Private Sub InstallUpdateSyncWithInfo()
Dim info As Deployment.Application.UpdateCheckInfo = Nothing
‘ClickOnceの場合に実行
If (Deployment.Application.ApplicationDeployment.IsNetworkDeployed) Then
Dim AD As Deployment.Application.ApplicationDeployment = Deployment.Application.ApplicationDeployment.CurrentDeployment
Try
info = AD.CheckForDetailedUpdate()
Catch dde As Deployment.Application.DeploymentDownloadException
MessageBox.Show(“現在、新しいバージョンのアプリケーションをダウンロードできません。” + ControlChars.Lf + ControlChars.Lf + “ネットワーク接続を確認するか、後ほど実行してください。エラー: ” + dde.Message)
Return
Catch ioe As InvalidOperationException
MessageBox.Show(“このアプリケーションをアップデートできません。ClickOnce アプリケーションでない可能性があります。エラー: ” + ioe.Message)
Return
End Try
‘アップデート版がある
If (info.UpdateAvailable) Then
Dim doUpdate As Boolean = True
‘必須の更新ではない場合に確認するとき
‘If (Not info.IsUpdateRequired) Then
‘ Dim dr As DialogResult = MessageBox.Show(“アップデート版があります。今すぐアップデートしますか?”, “アップデート可能”, MessageBoxButtons.OKCancel)
‘ If (Not System.Windows.Forms.DialogResult.OK = dr) Then
‘ doUpdate = False
‘ End If
‘End If
‘アップデート実行
If (doUpdate) Then
Try
AD.Update()
MessageBox.Show(“アプリケーションがアップデートされました。再起動します。”)
Application.Restart()
Catch dde As Deployment.Application.DeploymentDownloadException
MessageBox.Show(“アップデートできませんでした。” + ControlChars.Lf + ControlChars.Lf + “ネットワーク接続を確認するか、後ほど実行してください。”)
Return
End Try
End If
End If
End If
End Sub
このコードを追加した1回目の更新は,元のアプリケーションにこのコードがないから強制アップデートにはならないので注意.
参考:
ClickOnceの運用を成功させる5つのポイント (@IT)