Visual Basic(.Net)でのzip解凍について

コマンドプロンプト上で動作する解凍アプリを
Visual Basic上から動作させる方法です。

場合によっては、アプリからzip形式の圧縮/解凍をすることが必要になります。
今回はzipファイルを解凍する方法を記述します。

フリーの解凍アプリは、"7za.exe"を使用しています。


(1)最初に圧縮ファイル(AAA.zip)をプロジェクトのフォルダにコピーしておきます。
(2)解凍先フォルダ名を先に指定しておいて、「解凍」ボタンを押すと解凍します。
(3)指定先フォルダに解凍します。





下記がプログラムになります。
その1
Public sFolder As String '解凍先フォルダ
'*********************************************************************************
'*  解凍ボタンクリックイベント
'*********************************************************************************
Private Sub btnUnzip_Click(sender As System.Object, e As System.EventArgs) Handles btnUnzip.Click
Dim sCommand As String

On Error Resume Next
sFolder = TextBox1.Text
Call CmdExcec()
Console.ReadLine()
End
End Sub

その2
'*********************************************************************************
'*  コマンドプロンプトからの応答をファイル出力
'*********************************************************************************
Private Shared Sub p_OutputDataReceived(sender As Object, e As System.Diagnostics.DataReceivedEventArgs)

'出力された文字列を表示する
Console.WriteLine(e.Data)
End Sub

その3
'*********************************************************************************
'*  ファイル解凍
'*********************************************************************************
Private Sub CmdExcec()

Dim SDP As New System.Diagnostics.Process()

'入力できるようにする
SDP.StartInfo.UseShellExecute = False
SDP.StartInfo.RedirectStandardInput = True

'非同期で出力を読み取れるようにする
SDP.StartInfo.RedirectStandardOutput = True
AddHandler SDP.OutputDataReceived, AddressOf p_OutputDataReceived

SDP.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
SDP.StartInfo.CreateNoWindow = True

'起動
SDP.Start()

'非同期で出力の読み取りを開始
SDP.BeginOutputReadLine()

'入力のストリームを取得
Dim sw As System.IO.StreamWriter = SDP.StandardInput

If sw.BaseStream.CanWrite Then
'ファイル解凍
sw.WriteLine("7za x -o" & sFolder & " -y " & "AAA.zip")
sw.WriteLine("exit")
End If
sw.Close()

SDP.WaitForExit()
SDP.Close()
End Sub

                                                                                                                                                            • -

フォームを作成する必要がありますが、その1からその3のサンプルで動作は確認できます。
また、"7za.exe"のオプションを変更すると圧縮もできます。