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

Cabファイルのダウンロード

環境/言語:[WindwsCE VB>NET .NET Compact Framework2.0]
分類:[.NET]

VB2005+.NET Compact Framework 2.0 にてスマートデバイスの開発を行っています。

.NET Tipsの
『WebRequest、WebResponseクラスを使ってファイルをダウンロードして保存』
を参考にしてCabファイルをダウンロードしようとしたのですが、
保存はできたのですが、Cabファイルを実行しようとすると実行できません。

'ファイルに書き込むためのFileStreamを作成
Dim fs As New System.IO.FileStream(fileName, _
System.IO.FileMode.Create, System.IO.FileAccess.Write)

としているからでしょうか?

Cabファイルやexeファイルをダウンロードして保存するには
どうすればいいのでしょうか?

色々検索したのですが、見つからないので
質問させていただきました。
よろしくお願いします。
> 保存はできたのですが、Cabファイルを実行しようとすると実行できません。

実行できないとは具体的にどのようなことでしょうか?エラーがでるのでしょうか?また、保存できたファイルは正しいファイルと比較して、違いがありましたか?

> 'ファイルに書き込むためのFileStreamを作成
> Dim fs As New System.IO.FileStream(fileName, _
> System.IO.FileMode.Create, System.IO.FileAccess.Write)
>
> としているからでしょうか?

まず関係ないでしょう。

> Cabファイルやexeファイルをダウンロードして保存するには
> どうすればいいのでしょうか?

どのようなファイルのダウンロードでもやり方は同じはずです。
返信ありがとうございます。

■No21121に返信(管理人さんの記事)
> 実行できないとは具体的にどのようなことでしょうか?エラーがでるのでしょうか?また、保存できたファイルは正しいファイルと比較して、違いがありましたか?

『有効なWindowsCEセットアップファイルではありません。』
というメッセージが表示されます。

また正しいファイルのサイズが227KBなのに対して、ダウンロードしたファイルは
5.5KBとファイルサイズが違っています。

すべて保存できていないということでしょうか?
できました!

.NET Tipsの『HTTPでファイルをダウンロードして保存する』
に書かれている通りにReadByteを使っていたのが原因だったようです。

『FTPでファイルをダウンロードして保存する』
に書かれているように

Dim buffer(1024) As Byte
While True
Dim readSize As Integer = strm.Read(buffer, 0, buffer.Length)
If readSize = 0 Then
Exit While
End If
fs.Write(buffer, 0, readSize)
End While

としてファイルを書き込むようにしたら、
無事ダウンロードできました。
解決済み!

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