長沢さんごめんなさい。
ClickOnceはアプリケーションのロールバックができます。
しかしこの機能を利用することは事実上できません。また禁止にできないという問題点があります。
まずはGet the Facts
・オフラインでも利用できるというタイプでしか利用できない。
業務アプリにおいてオフラインでも利用可能なアプリケーションとしたとします。その場合にはCSVなりXMLを出力するようにする事になると思います。
でもそのファイルを結局どこかにアップロードしたりしないといけないという意味では完全なローカルのみアプリケーションは少ないんじゃないですか?オフライン完結アプリって作りますか?
・アプリケーションに問題が発生した場合にロールバックできます。
ユーザの勝手な判断でロールバックを可能にしたとします。アプリケーションの使い勝手が変更されて、今までのやり方が通用しなくなった場合にロールバックされたらどうしますか?
サーバがこけてて例外が発生しました。クライアントアプリがまずいと思ってロールバックされたらどうしますか?
・サーバとクライアントの不整合。クライアントアプリを更新したものの例外で落ちるという状況になったとします。ロールバックしたところうまく動くようになりました。でもサーバ側は変更されていません不整合データを更新してしまいました。さぁどうしますか?
・ロールバックされると再更新版への自動アップデートがされない
もう致命的です。サーバ側からコントロールできなくなってしまえばお手上げです。
・オフラインでも動くようにするにすると、ロールバックを無効化できない
されてしまうかもしれない悪夢を見続けるかですね。
・クライアント-サーバ間のバージョニングはサポートされていない
クライアントアプリのバージョン確認は機動時のみです。起動中にサーバ側で入れ替えを実行した場合にそのまま続行可能か不可能かはすべてアプリケーション内で解決しなくてはいけません。
ここまでみてきたようにClickOnceのロールバック機能は全く利用できません。
唯一利用可能なのはexplzhなどの本当に単体で動いても良いと思われるソフトです。
ただしロールバックされた後のフォローができないという悪夢はついて回ります。
解決策は唯一オンラインのみで動くにする事です。
さぁあなたはこれでもClickOnceおのロールバック機能が使えるといえますか?