none
ClickOnce 手動によるアップデートにおけるダイアログ表示の問題 RRS feed

  • 質問

  • ClickOnceアップデートを自動で行わず、自作ダイアログでアップデート指示できるようにプログラミングしました。
    しかし、アプリケーション起動後に、自作ダイアログもClickOnceの自動ダイアログもともに表示されてしまうケースが発生します。
    何かお気づきの点がありましたら、御指摘お願いします。

    発生手順は次の通りです。
    1.ClickOnceアップデートを自動で行わず、自作ダイアログでアップデート指示できるようにプログラミング。
      ClickOnceプロジェクトで、自動でアプリケーション更新しないよう、プロパティ設定。
    2.ビルドしClickOnce発行
    3.2で発行したClickOnceアプリをPCにインストール
    4.プログラムをリビルドし、再びClickOnce発行しWeb上に配備
    5.3のインストール先PCで、対象アプリケーションを起動。
       →自作ダイアログのみ表示される。ここは問題無し。
    6.自作ダイアログでアップデートキャンセル指示
    7.起動したアプリケーションを終了
    8.PCで対象アプリケーション起動
       →自作ダイアログではなく、ClickOnceの自動アップデートダイアログが表示される。
        これが問題。
    9.8で表示された自動アップデートダイアログでアップデートキャンセル指示
       →自作ダイアログが表示される。このダイアログに対してもキャンセル指示。
    10.以降、アプリケーション起動しても、ClickOnce自動アップデートダイアログは表示されない。

    ClickOnceプロジェクトのプロパティ設定(アプリケーション更新を行わない設定)が、1回目アプリケーション起動時にしか有効になっていない気がします。
    ClickOnceにお詳しい方の助言をいただけるとありがたいです。

    なお、MSDNの「方法:ClickOnceアプリケーションの更新を管理する」(http://msdn.microsoft.com/ja-jp/library/1zyc39fb(v=VS.80).aspx)を参考にプログラム作成しています。

    御指摘よろしくお願いします。

    2010年12月17日 5:23

回答

  • 開発ツールや.NETのバージョンはいくつでしょうか?
    また、目指すゴールはなんでしょうか?

    具体的なプログラムが分からないため、何ともお答えしようがありません。

    もし、更新チェックをしてアップデートのスキップをした場合に、次回のアプリケーション起動時に必ず更新ダイアログボックスが表示されることを防ぎたいということであれば、.NET 3.5以降であれば制御可能です。.NET3.5以降では、この制御のためにCheckForDetailedUpdateメソッドがオーバーロードされています。

    詳しくは、下記の質問が参考になると思います。

    「Disable Clickonce Default Updater」
    http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/61b1efa6-3e54-43f8-afd4-e768a4939b61
    ----一部抜粋
    As a fix to this, the CheckForDetailedUpdate(bool persistUpdateCheckResult) API is introduced in 3.5 SP1 (.NET Framework 2.0 SP2) release. Calling CheckForDetailedUpdate(false) should resolve this issue.
    ----

    • 編集済み ChukiMVP 2010年12月24日 5:46 修正が3.5 SP1(2.0 SP2)であることの抜粋を追加
    • 回答としてマーク 山本春海 2010年12月29日 4:02
    2010年12月24日 5:31

すべての返信

  • 開発ツールや.NETのバージョンはいくつでしょうか?
    また、目指すゴールはなんでしょうか?

    具体的なプログラムが分からないため、何ともお答えしようがありません。

    もし、更新チェックをしてアップデートのスキップをした場合に、次回のアプリケーション起動時に必ず更新ダイアログボックスが表示されることを防ぎたいということであれば、.NET 3.5以降であれば制御可能です。.NET3.5以降では、この制御のためにCheckForDetailedUpdateメソッドがオーバーロードされています。

    詳しくは、下記の質問が参考になると思います。

    「Disable Clickonce Default Updater」
    http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/61b1efa6-3e54-43f8-afd4-e768a4939b61
    ----一部抜粋
    As a fix to this, the CheckForDetailedUpdate(bool persistUpdateCheckResult) API is introduced in 3.5 SP1 (.NET Framework 2.0 SP2) release. Calling CheckForDetailedUpdate(false) should resolve this issue.
    ----

    • 編集済み ChukiMVP 2010年12月24日 5:46 修正が3.5 SP1(2.0 SP2)であることの抜粋を追加
    • 回答としてマーク 山本春海 2010年12月29日 4:02
    2010年12月24日 5:31
  • Chuki様

    御指摘ありがとうございます。

    .Netのバージョンは4.0で、目指していたところは、まさに「次回のアプリケーション起動時に必ず更新ダイアログボックスが表示されることを防ぎたい」というところです。

    CheckForDetailUpdate(false)とする事により、おかげ様で更新ダイアログボックスが表示されないようになりました。

    (自作ダイアログボックスのみ表示するようになりました。)

    質問として情報提供が不足している中、御指摘いただきありがとうございました。

    大変助かりました。

    2010年12月24日 6:25
  • お役に立てたのでしたら幸いです。

    もし解決できたのであれば、後に参照される方のために、参考になった回答や解決に結びついた回答に参考になったボタンや回答ボタンを押していただくようにお願いします。

    2010年12月24日 6:56