Hallo, ich versuche z.Z. eine EXE zu programmieren die eine ZIP runterlädt und die dann diese ZIP entpackt. Hier ist mein Jetiger Code:
Und das ist die Fehlermeldung:
VB.NET-Quellcode
- Imports Shell32
- Imports System
- Imports System.IO
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
- Dim Benutzername As String = My.User.Name.ToString
- Dim WinPfad As String = Environ("WinDir")
- My.Computer.Network.DownloadFile("https://www.dropbox.com/s/svggzl0pzh4km03/Audio.zip", WinPfad + "Users\" + Benutzername + "\Documents\Audio\")
- Using ofd As New OpenFileDialog
- ofd.Filter = "ZipFile|*.zip"
- If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
- Dim file As String = ofd.FileName
- Dim cu As New ClassUnzip(file, Path.Combine(WinPfad + "Users\" + Benutzername + "\Documents\Audio\", "Audio.zip"))
- AddHandler cu.UnzipFinishd, AddressOf Unziped
- cu.UnzipNow()
- End If
- End Using
- Dim p = New Process()
- p.StartInfo.FileName = WinPfad + "Users\" + Benutzername + "\Documents\Audio\Audio.exe"
- p.Start()
- Me.Close()
- End Sub
- Private Sub Unziped()
- End Sub
- End Class
- Public Class ClassUnzip
- Private _file As String
- Private _folder As String
- Private _towhere As String
- Private _shell As Shell32.IShellDispatch2
- ''' <summary>Event welches vor dem Entpacken (Unzip) ausgeführt wird.</summary>
- ''' <remarks></remarks>
- Public Event Unzipstart()
- ''' <summary>Event welches nach dem Entpacken (Unzip) ausgeführt wird.</summary>
- ''' <remarks></remarks>
- Public Event UnzipFinishd()
- ''' <summary>Neue Instanz der ClassUnzip Klasse.</summary>
- ''' <param name="file">Datei welche entpackt werden soll.</param>
- ''' <param name="towhere">Zielordner.</param>
- ''' <remarks></remarks>
- Public Sub New(ByVal file As String, ByVal towhere As String)
- _file = file
- _towhere = towhere
- _folder = Path.Combine(Path.GetDirectoryName(_file), _towhere)
- _shell = CreateObject("Shell.Application")
- End Sub
- ''' <summary>Das Entpacken (Unzip) wird ausgeführt.</summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Function UnzipNow() As Boolean
- 'prüfen ob der ordner existiert
- If Directory.Exists(_folder) = False Then
- Directory.CreateDirectory(_folder)
- End If
- 'event für start feuern
- RaiseEvent Unzipstart()
- 'entpacken
- Dim temp As Shell32.Folder = _shell.NameSpace((_folder))
- If temp IsNot Nothing Then
- temp.CopyHere(_shell.NameSpace((_file)).Items)
- End If
- 'event für ende feuern
- RaiseEvent UnzipFinishd()
- 'rückgabe wert setzen
- Return True
- End Function
- ''' <summary>Gibt den Namen der gepackten Datei zurück, oder setzt diesen.</summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Property UnZipFile() As String
- Get
- Return _file
- End Get
- Set(ByVal value As String)
- _file = value
- End Set
- End Property
- ''' <summary>Gibt den Zielort (entpacken) zurück, oder setzt diesen.</summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Property UnzipTo() As String
- Get
- Return _towhere
- End Get
- Set(ByVal value As String)
- _towhere = value
- End Set
- End Property
- End Class
Und das ist die Fehlermeldung:
VB.NET-Quellcode
- Informationen über das Aufrufen von JIT-Debuggen
- anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.
- ************** Ausnahmetext **************
- System.ArgumentException: Der angegebene Pfad endet mit einem Verzeichnistrennzeichen.
- Parametername: destinationFileName
- bei Microsoft.VisualBasic.FileIO.FileSystem.CheckFilePathTrailingSeparator(String path, String paramName)
- bei Microsoft.VisualBasic.Devices.Network.DownloadFile(Uri address, String destinationFileName, ICredentials networkCredentials, Boolean showUI, Int32 connectionTimeout, Boolean overwrite, UICancelOption onUserCancel)
- bei Microsoft.VisualBasic.Devices.Network.DownloadFile(String address, String destinationFileName)
- bei Minecraft_Server_Anwedung.Form1.Form1_Load(Object sender, EventArgs e)
- bei System.EventHandler.Invoke(Object sender, EventArgs e)
- bei System.Windows.Forms.Form.OnLoad(EventArgs e)
- bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
- bei System.Windows.Forms.Control.CreateControl()
- bei System.Windows.Forms.Control.WmShowWindow(Message& m)
- bei System.Windows.Forms.Control.WndProc(Message& m)
- bei System.Windows.Forms.Form.WndProc(Message& m)
- bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)