2015-06-26 2 views
0

Я новичок в VB.NET, и я искал Google об этом много, но не смог найти ответ.Загрузите zip-файл и извлеките его с помощью фонового рабочего

Я хочу, чтобы программа загружала zip-файл и извлекала его с помощью BackgroundWorker.

У меня есть код для загрузки, но не удалось найти, как распаковать файл с помощью BackgroundWorker.

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    downloadFile("https://dl.dropboxusercontent.com/u/85542087/test.exe", "test.exe") 
    Status.Text = "Downloading file from W4H Servers...." 
End Sub 
Private Sub downloadFile(ByVal srcPath As String, ByVal destPath As String) 

    Dim wClient As New System.Net.WebClient() 
    AddHandler wClient.DownloadProgressChanged, AddressOf downloadFile_ProgressChanged 

    wClient.DownloadFileAsync(New System.Uri(srcPath), destPath) 
    Status.Text = "Downloading file from W4H Servers...." 
End Sub 

Private Sub downloadFile_ProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) 
    Status.Text = "Downloading file from W4H Servers...." 
    ProgressBar1.Maximum = e.TotalBytesToReceive 
    ProgressBar1.Value = e.BytesReceived 
    Application.DoEvents() 
    If e.ProgressPercentage = 100 Then 
     'download completed 
     System.Threading.Thread.Sleep(2000) 
     Me.Close() 
     Form1.Close() 
     Process.Start("test.exe") 
    End If 
End Sub 

Вышеупомянутый код загрузит мой файл в пути выполнения EXE и запустит его оттуда. Поэтому я хочу извлечь его и запустить.

Почтовый индекс будет «test.zip» и содержит «test.exe».

+1

Я использую DotNetZip- добавляет DLL, но работает отлично. Насколько я знаю, нет никакого решения Windows или .Net для распаковки или извлечения файловой формы .zip-файла. – rheitzman

+0

Я использовал SharpZipLib (http://icsharpcode.github.io/SharpZipLib/), и он отлично поработал. Вероятно, вам действительно не нужен BackgroundWorker, если это не очень большой файл. Распаковка обычного .exe займет менее секунды. –

+0

Вам нужно сосредоточиться * не * на *, как распаковать файл с использованием рабочего стола *, но по 2 отдельным вопросам - * используя фонового рабочего * -> https://msdn.microsoft.com/en-us/library/cc221403% 28v = vs.95% 29.aspx и * unzipping file *. После того, как у вас есть код, который распаковывает файл, вы запускаете его в 'bgw'' DoWork' - done –

ответ

0

вы можете использовать эту функцию:

Imports System.IO 

'Declare the shell object 
Dim shObj As Object = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application")) 

Public Sub UnZip() 

    'Create directory in which you will unzip your items. 
    Directory.CreateDirectory(output-Folder) 

    'Declare the folder where the items will be extracted. 
    Dim output As Object = shObj.NameSpace((output-Folder)) 

    'Declare the input zip file. 
    Dim input As Object = shObj.NameSpace((path-of-zip-file)) 

    'Extract the items from the zip file. 
    output.CopyHere((input.Items), 4) 

End Sub 
+0

OP последний раз видели 19 сентября * 3 года назад *. Я очень сомневаюсь, что он вернется и проверит этот ответ. Почему вы находите и отвечаете на эти старые кислые тесто? – Default