HttpWebRequest を使用して ClickOnce アプリケーションをデプロイする

StackOverflow https://stackoverflow.com/questions/380030

  •  22-08-2019
  •  | 
  •  

質問

HttpWebRequest クラスの C# コードを使用して ClickOnce アプリケーションを起動しようとしています。アプリケーションは IE を使用して適切にデプロイできます。しかし、私のコードでデプロイメントを実行すると、.application ファイルのみがクライアントにダウンロードされるようです。

私のコードは以下のとおりです。

        HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create("http://localhost/test/test.application");
        getRequest.Method = "GET";
        getRequest.Timeout = 500000;                   //default is 100 seconds  

        HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
        string loginUrl = getResponse.ResponseUri.AbsoluteUri;
        StreamReader responseReader = new StreamReader(getResponse.GetResponseStream());
        string responseData = responseReader.ReadToEnd();
        responseReader.Close();

私のコードに何か問題があるのでしょうか?

ありがとう!- ブルース

役に立ちましたか?

解決

IE が .application ファイルを参照したときに何か特別な動作をするのではないかと思います。そのため、.NET 3.5 SP1 でハンドラーが追加されるまで、ClickOnce デプロイは FireFox からは機能しませんでした。したがって、表示されているのは正しい動作です。アプリは純粋にファイルをバイト ストリームとしてプルダウンしています。ファイルをどう処理するかはわかりません。

プログラムでアプリケーションを起動したい場合は、代わりにこれをお勧めします。

System.Diagnostics.Process.Start("http://localhost/test/test.application");

アップデート

ClickOnce/FireFox 全体についてもう少し詳しい情報があります ここ. 。どうやら、IE には MIME タイプ ハンドラーがインストールされており、application/-ms-application タイプを認識し、ClickOnce インストーラーでファイルを実行します。.NET 3.5 SP1 より前にこれを有効にしていた古い FireFox アドオンのいくつかを調べて、プログラムで .application ファイルを起動するために何が行われたかを確認する価値があるかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top