ClickOnceはサーバ上に最新バージョンがリリースされると
起動時に最新バージョンをインストールするかどうかのダイアログが表示される。
しかし、そこでスキップされてしまうと最新バージョンでないアプリが動作されてしまうことがある。
そこで、以下のようにForm Loadイベントにロジックを追加し、
最新バージョンがある場合は強制的にアップグレードさせることもできる。
Imports System.Deployment.Application Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("harada-101") End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim deploy As ApplicationDeployment 'ClickOnce でインストールされているか判定 If ApplicationDeployment.IsNetworkDeployed = True Then deploy = ApplicationDeployment.CurrentDeployment '最新バージョンが利用できるかチェック If deploy.CheckForUpdate = True Then '最新バージョンがある場合、強制的にアップグレード deploy.Update() 'アプリケーションを再起動 Application.Restart() End If '現在のバージョンをボタンのキャプションに表示する Button1.Text = deploy.CurrentVersion.ToString() End If End Sub End Class
ちなみに「発行」タブのオプションで「アプリケーションはオンライン時のみに利用できる」オプションや
「更新」ボタンの「アプリケーションの更新を確認する」のチェックを外し、
「このアプリケーション最低限必要なバージョンを指定」にチェックをつけることにより
上記のようなコードを記述せずに強制させることも可能。
(上記のコード作り終わったあとこれらのオプションを見つけてしまっただよ。。。orz)
動作確認環境:Visual Stadio2005,Wondow XP sp2