ClickOnce 強制的にアップグレード


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