ClickOnceで困った・・・
過去の遺物だと思っていた「dll hell」の再来か??????
ClickOnceって、内部でどのように動いているのかまで理解していない(もっとも、普通のmsiのセットアップだとて理解出来ていない)が、非常に便利なので、標準で使っている。
特に、修正を行ったとき、「サーバーに上げてお仕舞い!」の手軽さが最高だった。
しかし、本日は、困った。
いつものように、
・バージョン番号を確認して
・発行して
・サーバーに上げて
・テストマシンで、対象アプリを起動すると
・いつものように、アップデートのダイアログが出て
・OKをクリックすると
エラーになった・・・・・・・
詳細ボタンをクリックすると
エラーの詳細
この操作中に次のエラーが検出されました。
* [2014/03/13 10:59:11] System.ArgumentException
- 値が有効な範囲にありません。
- ソース:System.Deployment
- スタック トレース:
場所 System.Deployment.Internal.Isolation.IStore.LockApplicationPath(UInt32 Flags, IDefinitionAppId ApId, IntPtr& Cookie)
場所 System.Deployment.Application.ComponentStore.LockApplicationPath(DefinitionAppId definitionAppId)
場所 System.Deployment.Application.SubscriptionStore.LockApplicationPath(DefinitionAppId definitionAppId)
場所 System.Deployment.Application.FileDownloader.PatchFiles(SubscriptionState subState)
場所 System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
こんなスタックトレースでは、わからん。
ぐぐっても、
インストールされる
C:\Users\ユーザ名\AppData\Local\Apps\2.0
以下のフォルダを削除しろ!
とか、バカなことしか見つからない。
削除したら、他のClickOnceアプリとデータが吹っ飛ぶでしょうが?
Gitで、以前のアップデートリリース時点まで戻り
再度、ファイルを修正して発行しても同じ。
発行したセットアップファイルに問題があるのか?
インストールしたテストマシンに問題があるのか?
誰か、教えて下さい。
追記
エラーの出るマシンと出ないマシンとがある。
結局は、エラーの出るマシンは、アンインストール、再インストールで対応する。
しかし、データをClickOnceに任せていたら、一緒にアンインストールされるので、データは別なところへ置かないと、気軽にアンインストール出来なくなる。