DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ClickOnceで必須コンポーネントインストール後、本体インストールでエラー

環境/言語:[VS2005 ClickOnce IIS]
分類:[.NET]

OS:XP
開発環境:VS2005

いつも拝見させて頂き非常に参考にさせていただいております。

IISを用いてClickOnceアプリケーションを配布しようとしております。
発行したClickOnceファイルをサーバーに配置後、他のパソコンからサーバーへアクセスし
表示された[インストール]をクリック→[実行]ボタンで必須コンポーネントの
インストールが開始され正常に終了しました。

しかし、引き続き行われる本体のインストールで[指定されたファイルが見つかりません。]と
エラーが表示されてしまいます。ログを見ますと[****.application]ファイルが無いとの事でした。

その後IEを閉じ、再び[インストール]をクリックすると
正常に本体のアプリケーションのインストールが完了致します。

[インストール]−[実行]ではsetup.exeが実行されますが、setup.exeはテンポラリーフォルダに
保存され、本体インストールでは同フォルダを参照している為エラーが発生するのかと思われますが、
このエラーを回避する方法をご教授頂けないでしょうか。

※インターネットに接続していないLAN環境で、サーバーとなるパソコンにIISを設定し配布しようとしています。
※必須コンポーネントの配布元は[次の場所から必須コンポーネントをダウンロードする。]で設定しています。
※必須コンポーネントは[.Net Framework 2.0]のみです。
■No26583に返信(イナフさんの記事)
> ログを見ますと[****.application]ファイルが無いとの事でした。

ブラウザから .application ファイルを指す URL を直接指定してみて、
その .application ファイルを取得できるかどうか、確認してみてください。

404 になってしまうようなら、 配置に失敗しているのだと思いますし、
インストールが開始されるが、インストールそのものが失敗してしまうのなら
アプリケーションマニフェストもしくは配置マニフェストの内容に
問題があるのだと思います。
ご返信誠に有難うございます。

>ブラウザから .application ファイルを指す URL を直接指定してみて、
>その .application ファイルを取得できるかどうか、確認してみてください。
教えて頂いた方法を試みてみましたが、保存ダイアログが表示されます。
.Net Framework 2.0を手動でインストール後に同様の動作を行いますと
正常にアプリケーションのインストールが開始されました。

想像なのですが、下記「3.」の場所で「***.application」がダウンロードされずに
エラーが発生している事になるのでしょうか?

1.setup.exeを実行(setup.exeはTemporary Internet Filesフォルダで実行される)
2.setup.exeが必須コンポーネントをTemporary Internet Filesフォルダへダウンロード→必須コンポーネントインストール
3.setup.exeが「***.application」をTemporary Internet Filesフォルダへダウンロード(失敗?)

エラーログを見ますと、Temporary Internet Filesフォルダに「***.application」は存在せず
失敗しているようでした。

エラーログ抜粋:
Result of checks for command 'dotnetfx\langpack.exe' is 'Install'
'.NET Framework 2.0' RunCheck result: Install Needed
Verifying file integrity of C:\DOCUME~1\○○\LOCALS~1\Temp\VSD3.tmp\dotnetfx\dotnetfx.exe
WinVerifyTrust returned 0
File trusted
Installing using command line '"C:\DOCUME~1\○○\LOCALS~1\Temp\VSD3.tmp\dotnetfx\dotnetfx.exe" /q:a /c:"install /q /l"'
Process exited with code 0
Verifying file integrity of C:\DOCUME~1\○○\LOCALS~1\Temp\VSD3.tmp\dotnetfx\langpack.exe
WinVerifyTrust returned 0
File trusted
Installing using command line '"C:\DOCUME~1\○○\LOCALS~1\Temp\VSD3.tmp\dotnetfx\langpack.exe" /q:a /c:"install /l /q"'
Process exited with code 0
Running checks for package '.NET Framework 2.0', phase AfterPackage
Running external check with command line "C:\DOCUME~1\○○\LOCALS~1\Temp\VSD3.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.2900.5512'
Setting value '6.0.2900.5512 {string}' for property 'IEVersion'
The following properties have been set for package '.NET Framework 2.0':
Property: [DotNetInstalled] = 2 {int}
Property: [IEVersion] = 6.0.2900.5512 {string}
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: Install Succeeded
Launching Application.
Running command 'C:\Documents and Settings\○○\Local Settings\Temporary Internet Files\Content.IE5\L2K93C2K\ClickOnceTest.application' with arguments ''
ShellExecuteEx failed with error code 2
Error: 'C:\Documents and Settings\○○\Local Settings\Temporary Internet Files\Content.IE5\L2K93C2K\ClickOnceTest.application' をインストールしようとして次のエラーが発生しました:
"指定されたファイルが見つかりません。 "

これはもう別々にインストールするしか道はないのでしょうか…。
■No26591に返信(イナフさんの記事)
>>ブラウザから .application ファイルを指す URL を直接指定してみて、
>>その .application ファイルを取得できるかどうか、確認してみてください。
> 教えて頂いた方法を試みてみましたが、保存ダイアログが表示されます。
> .Net Framework 2.0を手動でインストール後に同様の動作を行いますと
> 正常にアプリケーションのインストールが開始されました。
配置に問題が無いとすれば、あとはクライアント側ですね。
他の端末で試してみた場合も、同じエラーになるのでしょうか?

何らかの理由で通信に失敗した場合、以前の中途半端なキャッシュが
残ってしまうのか、次回以降も失敗してしまう事を稀に経験しています。

念のため、Internet Explorer のキャッシュをクリアしてみてください。

また、以前のインストール情報を消すために、コントロールパネルから
ClickOnce 配置のアプリもアンインストールしておいてください。さらに
 C:\Documents and Settings\{ユーザー名}\Local Settings\Apps\2.0\
以下にあるファイル群があれば、それも消してみてください。
(Apps\2.0 以下に破損ファイルがある場合、インストールできない事があります)


> 想像なのですが、下記「3.」の場所で「***.application」がダウンロードされずに
> エラーが発生している事になるのでしょうか?
そうかも知れませんし、そうでは無いのかも知れません。

google で、『"ShellExecuteEx failed with error code 2"』と検索すると
国内外で、幾つか ClickOnce 絡みのトラブル報告が挙がっているようですが、
ログの個々の記述については、正直なところ、私には分かりません。

# 実は 配置マニフェスト(.application) は読み込めていたものの、そこから
# アプリケーション マニフェスト(.exe.manifest) を読み込んだ時に、
# 依存ファイルの取得に失敗していた…とか?
こんばんは。
Webサーバ側のMIMEタイプ設定は適切でしょうか。
IIS(の6.0から?)では「*」に対しての「application/octet-stream」割り当てが初期設定でされていないので未定義の拡張子はダウンロードされませんが、それが原因で、設定漏れで落とせていないファイルがあるとか…。またそれと同じからみで、「.application」や「.manifest」のタイプを「application/x-ms-application」にしていない、とかはいかがでしょうか。
ご返信誠に有難うございます。

>配置に問題が無いとすれば、あとはクライアント側ですね。
>他の端末で試してみた場合も、同じエラーになるのでしょうか?
他の端末でも同じエラーが発生致しました。
レンタルサーバーに配置し、インターネット経由でも同じエラーが発生しました。

>念のため、Internet Explorer のキャッシュをクリアしてみてください。
Appフォルダ等全て削除した後試して見ましたが、結果同じで御座いました。

>Webサーバ側のMIMEタイプ設定は適切でしょうか。
IISのバージョンは5.1 SP3を使用しており、MIMEタイプはIISルート以下全て下記の様に設定しております。
.application→application/x-ms-application
.manifest →application/x-ms-manifest
.deploy →application/octet-stream

IDEを再インストールし発行し直したりもしましたが、うまくいきません。
私の環境だけなのでしょうか…。
「発行場所」に「ローカルIIS」のフォルダを指定したところ正常に本体インストールまで完了する様になりました。
「D:\IIS\Test」→「http://localhost/test/」

以前は「ファイルシステム」でIIS配置フォルダを指定したり、ローカルフォルダを指定し、出来たファイルを直接コピーしたり
しておりました。これでは駄目なんですね…。

レンタルサーバーへの配置もFTPサイトを指定することで可能となりました。

ここで質問させて頂いたお陰で最後まで諦めずに解決することが出来ました。
ご返信頂けた魔界の仮面弁士様、こど。様本当に有難うございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板