質問者
ClickOnceでクライアントにインストール時にエラー(URLDownloadToCacheFile failed with HRESULT '-2146697211')

質問
-
ClickOnceを使って、クライアントにWebページから実行してもらうようにしているのですがクライアントマシンに、.NET Framework 2.0がインストールされていない場合以下のようなエラーがでて困っています。
何かご存知の方いらっしゃいましたらご教授ください。
エラー:
アクセス失敗。。
'http://yamada5/WinClient/WinClient.application' をダウ
ンロードしようとしてエラーが発生しました。詳細については、'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\VSD19E.tmp\install.log'
にあるセットアップ ログ ファイルを参照してください。
ログ:
The following properties have been set:
Property: [AdminUser] = true {boolean}
Property: [ProcessorArchitecture] = Intel {string}
Property: [VersionNT] = 5.2.1 {version}
Running checks for package '.NET Framework 2.0', phase
BuildList
Running external check with command line
"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\VSD19E.tmp\DotNetFX\dotnetchk.exe"
-lcid:1041
Process exited with code 2
Setting value '2 {int}' for property 'DotNetInstalled'
Reading value 'Version' of registry key
'HKLM\Software\Microsoft\Internet Explorer'
Read string value '6.0.3790.1830'
Setting value '6.0.3790.1830 {string}' for property
'IEVersion'
The following properties have been set for package '.NET
Framework 2.0':
Property: [DotNetInstalled] = 2 {int}
Property: [IEVersion] = 6.0.3790.1830 {string}
Running checks for command 'DotNetFX\instmsia.exe'
Result of running operator 'ValueExists' on property
'VersionNT': true
Result of checks for command 'DotNetFX\instmsia.exe' is
'Bypass'
Running checks for command
'DotNetFX\WindowsInstaller-KB893803-v2-x86.exe'
Result of running operator 'ValueExists' on property
'Version9x': false
Result of running operator 'VersionLessThan' on property
'VersionNT' and value '5.0.3': false
Result of running operator 'VersionGreaterThanOrEqualTo'
on property 'VersionMsi' and value '3.0': true
Result of checks for command
'DotNetFX\WindowsInstaller-KB893803-v2-x86.exe' is
'Bypass'
Running checks for command 'DotNetFX\dotnetfx.exe'
Result of running operator 'ValueNotEqualTo' on property
'DotNetInstalled' and value '0': true
Result of checks for command 'DotNetFX\dotnetfx.exe' is
'Bypass'
Running checks for command 'DotNetFX\langpack.exe'
Result of running operator 'ValueEqualTo' on property
'DotNetInstalled' and value '2': true
Result of checks for command 'DotNetFX\langpack.exe' is
'Bypass'
'.NET Framework 2.0' RunCheck result: No Install Needed
Launching Application.
URLDownloadToCacheFile failed with HRESULT '-2146697211'
Error: 'http://yamada5/WinClient/WinClient.application'
をダウンロードしようとしてエラーが発生しました。※yamada5は開発機です。
現在開発マシンの、ローカルの仮想ディレクトリに発行して、そのコピーをサーバに配置しています。
■ClickOnceの設定
・発行場所→ローカルの仮想ディレクトリ
・アプリケーションはオンラインでのみ実行可能
・完全信頼するアプリケーション
・必須コンポーネントをインストールするセットアッププログラムを作成する→必須コンポーネントをコンポーネントの開発元のWebサイトからDLする という設定にしています。
(他は特に変更していません)
宜しくお願いします。
すべての返信
-
以下のサイトを見ると同じ問題を抱えている人がたくさんいるみたいですね(バグでしょうか…)。
URLDownloadToCacheFile error when trying to clickonce install
これを読むと、
windows installer 3.1を必須コンポーネントから外したら現象が現れなくなったという例
と
MIMEタイプをちゃんと設定したら解決したという例
があるみたいです。 -
とっちゃんです。
#回答ではありませんログを見る限り、.NET Framework 2.0 はインストールされていると解釈されていますね。
バグとかもないとはいえませんが、環境依存の何かという可能性もやっぱり否定は出来ません。
ログから判ることは、
- dotnetchk.exe -lcid:1041 で実行した結果、2 を返してきたこと。
- そのため、.NET Framework 2.0 はインストール済みであると判断されたこと。
- 他にも、IE のバージョンが6であること
- WindowsInstalelr 3.1 が既に導入済みであるということ。
というあたりがわかります。IEのバージョンだけはそれでなにかを動かすというものではありませんが、他は実行の必要なし(ByPass)となっていますので、結局のところ、何にもしないで ClickOnce 本体を動かそうとしているということがわかります。
自分で、package.xml や product.xml を弄った(あるいは、dotnetchk.exeを差し替えた)などがないのなら、環境依存の問題や(Win2003だとまずいとか)、何らかのバグという可能性が高いと思いますよ。
テスト環境として、つぶせる(開発側も含め)のを用意して、VS2005SP1のベータをあてて試してみるというのも一つのテスト手段です。
それでなおるのなら、SP1の正式出荷を待つ(待てるかどうかはありますが)ということになりますし(それまでは、手動で .NET 2.0 を事前展開する)、それでも直らないということなら、バグとして正規ルートで報告する必要があると思います。
私の手元に試せる環境がないため、これ以上はなんとも(^^;
-