none
ClickOnceで自動更新前に処理を入れる RRS feed

  • 質問

  • クライアントサーバのプログラムの更新をClickOnceで行っています。

    不具合等の修正プログラムは、サーバのプログラムを更新し、

    クライアントのプログラムを実行すると、クライアントのプログラムも

    自動更新するのですが、サーバのプログラムを更新後、一定期間、

    以下の理由で自動更新しないようにしたいと思っています。

    サーバのプログラムを更新後、1時間程度、保守端末による

    修正プログラムの動作確認を実施したいため。

    この間、自動更新をしないよう制御したいのですが、方法はないでしょうか。

    2018年3月21日 22:27

すべての返信

  • https://msdn.microsoft.com/ja-jp/library/t7050f3w(VS.80).aspx

    ClickOnce 配置マニフェストの記述として更新間隔を指定できますが、これはサーバープログラムの更新からの時間ではないため利用できなさそうですね。思いつく方法は、ClickOnce の自動更新をしないように ClickOnce 配置マニフェストで subscription 要素を削除して、手動の更新を行うようにする方法です。プログラム内で CheckForUpdate メソッドを使用して更新があるか確認し、同時にサーバー更新の日時を取得し(予めサーバープログラムの更新日時をサーバーに置いておく)、指定時間以降なら更新するという処理を記述するようにします。

    手動更新を行うコードは下記のページに載っておりました。
    https://msdn.microsoft.com/ja-jp/library/ms136935(v=vs.80).aspx

    2018年3月22日 0:33
  • アイディアとしてですが、共有フォルダに発行し、保守端末はそこからインストールして実行するのはいかがでしょうか?
    通常のWebサーバーからのインストールか、共有フォルダからのインストールかの違いだけで、ClickOnceの動作確認はできると思います。

    質問文中に修正プログラムの動作確認とありますが、これであれば保守端末にプロジェクトを丸ごとコピーし(おそらくbinフォルダだけのコピーで良いと思います。XCOPY配置です)、binフォルダ内のexeを直接起動しても、修正プログラムのテストはできると思います。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年3月22日 0:58
    モデレータ