LoginSignup
3
6

More than 3 years have passed since last update.

ClickOnceのプログラム内更新の問題点について

Posted at

概要

大分前に「ClickOnceの起動時の挙動について」という記事を書きました。
いろいろな方に見ていただき多少はお役に立つことができたでしょうか?
しかし、証明書を更新するとエラーが発生し、更新処理が行えなくなる場合があることがわかりました。

エラー内容

ClickOnceの自動更新機能を使用することにより、特定環境下でアプリケーションの
起動が遅くなるということでプログラム側からClickOneceのバージョンチェックを行い、
新バージョンがある場合更新を行うようにしましたが、以下の条件の場合、エラーになります。

・Microsoft.NET Framework3.5と4.8が同居している。
・署名した証明書がSHA-2(SHA256)

この条件がそろった場合、ClickOnceの更新チェックの動作がExceptionを吐きます。
原因としてはMicrosoft.NET Framework3.5でSHA-2証明書で署名した場合、ClickOneceの配布ができない
ということになります。

なので死ぬほどテストした結果

証明書がSHA-2でも.NET Frameworkが4.8だけであれば問題ない
(VisualStudioのターゲットFrameworkが3.5でも問題ない)
OSに依存しない(Frameworkが問題)

ということになります。(これ以外でもエラーになるパターンはあるかもしれません。)

対策

1.現バージョンをアンインストールし、新バージョンを再インストールする。
2.新しい証明書をSHA-1で作成して署名する。
3.新しいClickOnceサイトを作成し、そこから配布を行う。
4,更新時にエラーした際、自分で自分をアンインストールするプログラムを作成し、再インストールする。
  (この方法はMicrosoft公式回答に書いてあります。)
ただし、4の場合その後のバージョンアップについては保証しないとも書いてあります。

まとめ

この条件になる場合はかなりのレアケースとなると思います。
ただ、自社のシステム以外で動作するものが入っている場合、.NET Framework3.5が入っている可能性は捨てきれないので
対応を入れるべきかは迷うところです。

こういった症状が出る場合は大体古いOS(サーバも含め)なのでお察し案件ではありますが、参考になる事例が基本的に海外の
情報しかありませんので、もし困っている方の参考になればと思います。

質問などあれば追記します。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6