現在オフラインです。再接続するためにインターネットの接続を待っています

Windows 8 で WebBrowser コントロールからの ClickOnce アプリケーションの起動に失敗する

現象
Windows 8 では、インストール モードを [アプリケーションはオンラインでのみ利用できる] に設定した ClickOnce アプリケーションを、WebBrowser コントロールから以下のようなコードで起動しようとすると、ファイルのダウンロードに失敗してアプリケーションを起動することができません。

          Uri uri = new Uri("http://Contoso.com/MyApp/ClickOnceTest.application");
          System.Windows.Forms.WebBrowser browser = new System.Windows.Forms.WebBrowser();
          browser.Url = uri;
原因
Windows 8 ではファイルのダウンロードに関する内部動作が従来の OS から変更されています。
この動作において、WebBrowser コントロール使用時には、[アプリケーションはオンラインでのみ利用できる] が指定された ClickOnce アプリケーションに対して、ファイルのダウンロード元として渡される URL として、インターネット一時ファイル上のパスが使用されます。
ここで、対象のファイルはまだダウンロードされておらず、インターネット一時ファイルは保存されていない状態であるため、アプリケーションの起動に失敗します。

一方、Windows 8 上でも WebBrowser コントロールを使用しない場合はダウンロード元として、元の URL がそのまま指定されるため、本問題は発生しません。
また、Windows 8 より前の OS ではファイルのダウンロードに関する動作が Windows 8 と異なるため、WebBrowser コントロールを使用した場合でも問題なくアプリケーションを起動することが可能です。
回避策
WebBrowser コントロールを使用せず、以下のようなコードで Internet Explorer のプロセスを経由して ClickOnce アプリケーションを起動します。

          Uri uri = new Uri("http://Contoso.com/MyApp/ClickOnceTest.application");
          ProcessStartInfo psi = new ProcessStartInfo(uri.ToString());
          psi.FileName = "iexplore.exe";
          psi.Arguments = uri.ToString();
          psi.CreateNoWindow = true;
          psi.RedirectStandardOutput = false;
          psi.WindowStyle = ProcessWindowStyle.Hidden;
          psi.UseShellExecute = true;
          Process.Start(psi);
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2873565 - 最終更新日: 09/20/2016 10:32:00 - リビジョン: 2.0

Windows 8, Windows Server 2012 Datacenter, Windows Server 2012 Standard, Windows Server 2012 Essentials, Windows Server 2012 Foundation

  • KB2873565
フィードバック