今回の記事では、ClickOnceで作成したsetup.exeを実行すると以下のエラーログが書かれてインストール処理に失敗する場合の原因と対応方法を紹介します。
エラー発生時の現象
ClickOnceで作成したsetup.exeを実行すると、一部の端末のみ、実行直後に以下のエラー画面が表示されました。
「〇〇(アプリ名) をインストールしようとしてエラーが発生しました。」
この画面だけでは原因がわからないため、当画面下部の「詳細」を押下すると、以下の内容が表示されます。
何らかのダウロードに失敗したことはわかりますが、まだ原因が分かりません。
そこで、このメッセージに表示されている「install.log」を開いてみます。
ログファイルでは、setup.exe実行時の詳細な処理が記録されています。
OSの情報を読み込んだり、.NET Frameworkの導入状態をチェックしているようです。
まず着目すべきなのは、最終行のログ内容です。
ここに記述されているURLは、setup.exe実行時にポップアップで表示されたエラー画面の詳細に記載されていたURLと同じです。
試しに、ブラウザでそのURLにアクセスしてみます。
問題無くアクセスできます。
インストール処理で使用するパラメーターなどをxml形式のデータで取得してきているようです。
ただ、setup.exeからこのxmlをダウンロードする場合は、何らかの原因で失敗するようです。
次に着目するのは、最終行の一つ前のログです。
以下のログが残っています。
URLDownloadToCacheFile failed with HRESULT ‘-2146697208’
因みに、「HRESULT」はエラーコードを返す戻り値の型であり、-2146697208と10進数で出力されていますが、この数値を16進数に変換してあげることで、Windowsでよく見るエラーコードになります。
取り敢えずこの一文では、URL先のデータをダウンロードし、CasheFileに書こうとして失敗したように読めます。
「URLDownloadToCacheFile failed with HRESULT ‘-2146697208’」エラーの原因
このエラーが発生していた原因は「インターネットオプション」に存在しました。
尚、この設定は、既定値では無効(チェックが外れている)になっています。
この「暗号化されたページをディスクに保存しない」のチェックを外し、ブラウザをいったんすべて閉じたうえで、再度setup.exeを実行したら、正常にインストール処理が進むようになりました。
setup.exeがインストール処理で使用するパラメーターをxmlで取得してキャッシュファイルに書こうとするが、この設定でブロックされてしまいエラーになっていたということだと思われます。
原因がわかれば、setup.exeの実行時にエラーが発生することも納得ですね!
最後に
今回はClickOnceのsetup.exeを実行した際に発生したエラーの現象とその対応方法を紹介しました。
インターネットオプションの当設定項目とClickOnceの処理が直接影響するとは思っておらず、原因が面白かったので記事にしてみました。
どなたかの参考になれば幸いです。
それでは今回も読んでいただきましてありがとうございました。
それでは皆さまごきげんよう!