.class Datein in eine .jar einfügen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von propper.
-
-
-
Ja, ich bin Vincentgri
Zu deinem Problem, die DLL befindet sich da:DotNetZipLib-DevKit-v1.9\Tools\Ionic.Zip.dll
.
Aber ich habs gerade getestet, bei Datei 34 bricht er ab, kann man glaube auch nicht umgehen...
Was aber klappt ist das entpacken mit 7zip (es wird halt nur nicht die aux.class entpackt).
Vielleicht könnte man es wie WinRAR versuchen, und die Datei in aux_class umbenennen und beim packen dann halt wieder in aux.class zu ändern.
Das Problem haben viele, siehe *klick*
Edit: Hier ist ne Lösung. Jetzt müsste man noch wissen, wie man 1. Dateien beim entpacken überspringt und 2. wie man Dateien in einem Archiv umbenennt, ohne es zu entpacken...Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VincentTB“ ()
-
So, ich weiß nicht, ob das jetzt als Doppelpost betrachtet wird, aber es wird so unübersichtlich, wenn ich das editieren würde. Naja, ich habe die einfache Lösung
Nachdem ich mich gestern noch mal zwei Stunden hingesetzt und verschiedene Sachen ausprobiert habe, kam mir in den Sinn, dass man ja eigentlich einfach nur die aux.class in dem Archiv umbenennen muss, dann entpackt man das Archiv, fügt Mods ein, und packt es wieder. Also, im Internet steht nicht viel von Dateien im Archiv ändern, aber dann habe ich endlich etwas gefunden, was funktioniert, ohne dass das ganze Archiv entpackt werden muss :D *klickl*
Also geht ihr wie folgt vor:
Ihr downloadet euch das, verweist auf die DLL und erstellt am besten eine neue Sub:
Spoiler anzeigen VB.NET-Quellcode
- Imports System
- Imports ComponentAce.Compression.ZipForge
- Imports ComponentAce.Compression.Archiver
- Private Sub RenameFileInZip(ZipFile As String, oldName As String, newName As String)
- Dim archiver As ZipForge = New ZipForge()
- ' Set the name of the archive file we want to create
- archiver.FileName = ZipFile
- ' open an existing ZIP file
- archiver.OpenArchive(System.IO.FileMode.Open)
- ' rename a file in archive
- archiver.RenameFile(oldName, newName)
- ' close archive
- archiver.CloseArchive()
- End Sub
Ihr ruft dass am besten so auf:
Danach "konvertiert" ihr die Jar zum zip Archiv, entpackt das, fügt Mods ein, löscht den META-INF Ordner, und fügt das ganze wieder zu einem Archiv zusammen. Jetzt müsst ihr das Umbenennen nur noch rückgängig machen und schon habt ihr nen guten Modpack Installer :thumbup: -
Also ich habe es jetzt auch ausprobiert und das funktioniert(konvertieren zu .zip und die Datei umbenennen in aux_class):
Spoiler anzeigen VB.NET-Quellcode
- Private Sub RenameFileInZip(ByVal ZipFile As String, ByVal oldName As String, ByVal newName As String)
- Dim archiver As ZipForge = New ZipForge()
- ' Set the name of the archive file we want to create
- archiver.FileName = ZipFile
- ' open an existing ZIP file
- archiver.OpenArchive(System.IO.FileMode.Open)
- ' rename a file in archive
- archiver.RenameFile(oldName, newName)
- ' close archive
- archiver.CloseArchive()
- End Sub
- Private Sub Button_patch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_patch.Click
- File.Copy("C:\Neu\minecraft.jar", "C:\Neu\minecraft.zip")
- RenameFileInZip("C:\Neu\minecraft.zip", "aux.class", "aux_class")
- End Sub
aber bei diesen code ist was falsch:
Spoiler anzeigen VB.NET-Quellcode
- Public Shared Sub CopyToZip(ByVal inArchive As String, ByVal outArchive As String, ByVal tempPath As String)
- Dim inZip As ZipFile = Nothing
- Dim outZip As ZipFile = Nothing
- Try
- inZip = New ZipFile(inArchive)
- outZip = New ZipFile(outArchive)
- Dim tempNames As New List(Of String)()
- Dim originalNames As New List(Of String)()
- Dim I As Integer = 0
- For Each entry As ZipEntry In inZip
- If Not entry.IsDirectory Then
- Dim tempName As String = Path.Combine(tempPath, "tmp.tmp")
- Dim oldName As String = entry.FileName
- Dim buffer As Byte() = New Byte(4025) {}
- Dim inStream As Stream = Nothing
- Dim stream As FileStream = Nothing
- Try
- inStream = entry.OpenReader()
- stream = New FileStream(tempName, FileMode.Create, FileAccess.ReadWrite)
- Dim size As Integer = 0
- While (InlineAssignHelper(size, inStream.Read(buffer, 0, buffer.Length))) > 0
- stream.Write(buffer, 0, size)
- End While
- inStream.Close()
- stream.Flush()
- stream.Close()
- inStream = New FileStream(tempName, FileMode.Open, FileAccess.Read)
- outZip.AddEntry(oldName, inStream)
- outZip.Save()
- Catch exe As Exception
- Throw exe
- Finally
- Try
- inStream.Close()
- Catch ignore As Exception
- End Try
- Try
- stream.Close()
- Catch ignore As Exception
- End Try
- End Try
- End If
- Next
- Catch e As Exception
- Throw e
- End Try
- End Sub
Bei Zeile 22 zeigt er bei "InlineAssignHelper" immer einen Fehler an, das diese Instanz nicht deklariert wurde! Wie hast du das denn hinbekommen, dass das funktioniert? (Ich will ja nicht einfach ein Objekt deklarieren was den namen "InlineAssignHelper" trägt)
Und dannnoch eine Frage:
Sollen da die Pfade zu der ZIP-Datei und der Datei zum hinzufügen hin oder was soll dahin? -
-
-
-
propper schrieb:
InlineAssignHelper--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
Also ich habe jetzt ein bisschen gesucht und in unserem Fall muss man ja erstmal InlineAssignHelper deklarieren und da ich nicht weiß was da rein muss habe ich versucht einfach so zu warten ohne zu gucken ob "inStream" oder so fertig ist:
Spoiler anzeigen VB.NET-Quellcode
- Try
- inStream = entry.OpenReader()
- Stream = New FileStream(tempName, FileMode.Create, FileAccess.ReadWrite)
- Dim size As Integer = 0
- 'While (InlineAssignHelper(size, inStream.Read(buffer, 0, buffer.Length))) > 0
- 'stream.Write(buffer, 0, size)
- 'End While
- Dim time As Integer = 3000
- Dim Stopw As New Stopwatch
- Stopw.Start()
- Do Until Stopw.ElapsedMilliseconds >= time
- Application.DoEvents()
- Loop
- inStream.Close()
- Stream.Flush()
- Stream.Close()
- inStream = New FileStream(tempName, FileMode.Open, FileAccess.Read)
- outZip.AddEntry(oldName, inStream)
- outZip.Save()
- Catch exe As Exception
- Throw exe
- Finally
Also habe ich versucht es auszuprobieren aber ich wusste gar nicht wie.
Ich weiß nicht was bei InArchive, OutArcive und tempPath hin muss (also eigentlich überall ^^)
Ich habe schon ein bisschen rumprobiert aber es hat nicht geklappt!
EDIT: Vincent. Du hast es doch schonmal geschafft. Aber wie? :wacko: ) -
-
-
Hier ist mein Code für einen funktionierenden Modinstaller. Ich bin leider zu faul, da jetzt alles auszukommentieren, such dir einfach das raus, was du wirklich brauchst, also nicht einfach Strg+A & Strg+C machen Manches wird dir nicht weiterhelfen, aber ich habe gerade echt wenig Zeit, alles rauszusortieren. Hoffe, ich kann damit dir und einigen anderen helfen.
Spoiler anzeigen VB.NET-Quellcode
- Imports System' This namespace contains the main class - ZipForge.
- Imports ComponentAce.Compression.ZipForge
- Imports ComponentAce.Compression.Archiver
- Imports System.IO
- Imports Ionic.Zip
- Imports System.Threading
- Imports System.ComponentModel
- Imports System.Text.RegularExpressions
- Public Class frm_main
- Private _backgroundWorker1 As System.ComponentModel.BackgroundWorker
- Private _saveCanceled As Boolean
- Private _totalBytesAfterCompress As Long
- Private _totalBytesBeforeCompress As Long
- Private _nFilesCompleted As Integer
- Private _progress2MaxFactor As Integer
- Private _entriesToZip As Integer
- Private rvn_ZipFile As String = "zipfile"
- Private rvn_DirToZip As String = "dirToZip"
- Private _operationCanceled As Boolean
- Private nFilesCompleted As Integer
- Private totalEntriesToProcess As Integer
- Private rvn_ExtractDir As String = "extractdir"
- Private WithEvents BGWStart As New BackgroundWorker
- Private Delegate Sub SaveEntryProgress(ByVal e As SaveProgressEventArgs)
- Private Delegate Sub ButtonClick(ByVal sender As Object, ByVal e As EventArgs)
- Private Delegate Sub ZipProgress(ByVal e As ExtractProgressEventArgs)
- Dim MinecraftJAR As String
- Dim MinecraftZIP As New FileInfo(Application.StartupPath & "\minecraft.zip")
- Const aux As String = "aux.class"
- Dim ExtractPath As New DirectoryInfo(Application.StartupPath & "\minecraftjarextract")
- Dim WithEvents wc As New Net.WebClient
- Dim zahl As Integer = 5
- Dim WithEvents BGWMods As New BackgroundWorker
- Dim filename As String
- Dim ModsOrdner As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\.minecraft\mods")
- Dim MinecraftOrdner As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\.minecraft"
- Dim CoreModsOrdner As New DirectoryInfo(MinecraftOrdner & "\coremods")
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim minecraftjardatei As New FileInfo(IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft\bin\minecraft.jar"))
- txt_minecraftpfad.Text = minecraftjardatei.FullName
- If Not ModsOrdner.Exists Then
- ModsOrdner.Create()
- End If
- End Sub
- Private Sub SetProgressBars()
- If Me.prg_process.InvokeRequired Then
- 'Me.ProgressBar1.Invoke(New MethodInvoker(Me, DirectCast(Me.SetProgressBars, IntPtr)))
- Me.prg_process.Invoke(New MethodInvoker(AddressOf SetProgressBars))
- Else
- Me.prg_process.Value = 0
- Me.prg_process.Maximum = Me._entriesToZip
- Me.prg_process.Minimum = 0
- Me.prg_process.Step = 1
- Me.prg_process.Value = 0
- Me.prg_process.Minimum = 0
- Me.prg_process.Maximum = 1
- Me.prg_process.Step = 2
- End If
- End Sub
- Private Sub RenameFileInZip(ZipFile As String, oldName As String, newName As String)
- Dim archiver As ZipForge = New ZipForge()
- ' Set the name of the archive file we want to create
- archiver.FileName = ZipFile
- ' open an existing ZIP file
- archiver.OpenArchive(System.IO.FileMode.Open)
- ' rename a file in archive
- archiver.RenameFile(oldName, newName)
- ' close archive
- archiver.CloseArchive()
- End Sub
- Private Sub zip1_SaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs)
- If Me._saveCanceled Then
- e.Cancel = True
- Return
- End If
- Select Case e.EventType
- Case ZipProgressEventType.Saving_AfterWriteEntry
- Me.StepArchiveProgress(e)
- Exit Select
- Case ZipProgressEventType.Saving_Completed
- Me.SaveCompleted()
- Exit Select
- Case ZipProgressEventType.Saving_EntryBytesRead
- Me.StepEntryProgress(e)
- Exit Select
- End Select
- End Sub
- Private Sub StepArchiveProgress(ByVal e As SaveProgressEventArgs)
- If Me.prg_process.InvokeRequired Then
- Me.prg_process.Invoke(New SaveEntryProgress(AddressOf Me.StepArchiveProgress), New Object() {e})
- ElseIf Not Me._saveCanceled Then
- Me._nFilesCompleted += 1
- Me.prg_process.Style = ProgressBarStyle.Blocks
- Me.prg_process.PerformStep()
- Me._totalBytesAfterCompress = (Me._totalBytesAfterCompress + e.CurrentEntry.CompressedSize)
- Me._totalBytesBeforeCompress = (Me._totalBytesBeforeCompress + e.CurrentEntry.UncompressedSize)
- ' progressBar2 is the one dealing with the item being added to the archive
- ' if we got this event, then the add of that item (or file) is complete, so we
- ' update the progressBar2 appropriately.
- Me.prg_process.Value = CInt(Me.prg_process.Maximum = 1)
- MyBase.Update()
- End If
- End Sub
- Private Sub SaveCompleted()
- If Me.lblStatus.InvokeRequired Then
- Me.lblStatus.Invoke(New MethodInvoker(AddressOf SaveCompleted))
- 'Me.lblStatus.Invoke(New MethodInvoker(Me, DirectCast(Me.SaveCompleted, IntPtr)))
- Else
- Me.lblStatus.Text = String.Format("Done, Compressed {0} files, {1:N0}% of original", Me._nFilesCompleted, ((100 * Me._totalBytesAfterCompress) / CDbl(Me._totalBytesBeforeCompress)))
- Schritt3()
- End If
- End Sub
- Private Sub StepEntryProgress(ByVal e As SaveProgressEventArgs)
- If Me.prg_process.InvokeRequired Then
- Me.prg_process.Invoke(New SaveEntryProgress(AddressOf Me.StepEntryProgress), New Object() {e})
- ElseIf Not Me._saveCanceled Then
- If (Me.prg_process.Maximum = 1) Then
- Dim entryMax As Long = e.TotalBytesToTransfer
- Dim absoluteMax As Long = &H7FFFFFFF
- Me._progress2MaxFactor = 0
- Do While (entryMax > absoluteMax)
- entryMax = CLng((entryMax / 2))
- Me._progress2MaxFactor += 1
- Loop
- If (CInt(entryMax) < 0) Then
- entryMax = (entryMax * -1)
- End If
- Me.prg_process.Maximum = CInt(entryMax)
- Me.lblStatus.Text = String.Format("{0} of {1} files...({2})", (Me._nFilesCompleted + 1), Me._entriesToZip, e.CurrentEntry.FileName)
- End If
- Dim xferred As Integer = CInt((e.BytesTransferred >> Me._progress2MaxFactor))
- Me.prg_process.Value = CInt(IIf((xferred >= Me.prg_process.Maximum), Me.prg_process.Maximum, xferred))
- MyBase.Update()
- End If
- End Sub
- Private Sub ZipUp(tbDirToZip As String, tbZipToCreate As String)
- Dim folderName As String = tbDirToZip
- If (((Not folderName Is Nothing) AndAlso (folderName <> "")) AndAlso ((Not tbZipToCreate Is Nothing) AndAlso (tbZipToCreate <> ""))) Then
- If File.Exists(tbZipToCreate) Then
- If (MessageBox.Show(String.Format("The file you have specified ({0}) already exists. Do you want to overwrite this file?", _
- tbZipToCreate), "Confirmation is Required", _
- MessageBoxButtons.YesNo, MessageBoxIcon.Question) <> DialogResult.Yes) Then
- Return
- End If
- File.Delete(tbZipToCreate)
- End If
- Me._saveCanceled = False
- Me._nFilesCompleted = 0
- Me._totalBytesAfterCompress = 0
- Me._totalBytesBeforeCompress = 0
- Me.btn_start.Enabled = False
- Me.btnCancel.Enabled = True
- Me.lblStatus.Text = "Minecraft wird gepackt..."
- Dim options As New WorkerOptions
- options.ZipName = tbZipToCreate
- options.Folder = folderName
- _backgroundWorker1 = New System.ComponentModel.BackgroundWorker()
- _backgroundWorker1.WorkerSupportsCancellation = False
- _backgroundWorker1.WorkerReportsProgress = False
- AddHandler Me._backgroundWorker1.DoWork, New DoWorkEventHandler(AddressOf Me.DoSave)
- _backgroundWorker1.RunWorkerAsync(options)
- End If
- End Sub
- Private Sub UnzipFile(ByVal sender As Object, ByVal e As DoWorkEventArgs)
- Dim extractCancelled As Boolean = False
- Dim args() As String = CType(e.Argument, String())
- Dim zipToRead As String = args(0)
- Dim extractDir As String = args(1)
- Try
- Using zip As ZipFile = ZipFile.Read(zipToRead)
- totalEntriesToProcess = zip.Entries.Count
- SetProgressBarMax(zip.Entries.Count)
- AddHandler zip.ExtractProgress, New EventHandler(Of ExtractProgressEventArgs)(AddressOf Me.zip_ExtractProgress)
- zip.ExtractAll(extractDir, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently)
- End Using
- Catch ex1 As Exception
- MessageBox.Show(String.Format("Ein problem ist beim entpacken aufgetreten. {0}", ex1.Message), "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
- End Try
- End Sub
- Private Sub zip_ExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs)
- If _operationCanceled Then
- e.Cancel = True
- Return
- End If
- If (e.EventType = ZipProgressEventType.Extracting_AfterExtractEntry) Then
- StepEntryProgress(e)
- ElseIf (e.EventType = ZipProgressEventType.Extracting_BeforeExtractAll) Then
- '' do nothing
- End If
- End Sub
- Private Sub StepEntryProgress(ByVal e As ExtractProgressEventArgs)
- If prg_process.InvokeRequired Then
- prg_process.Invoke(New ZipProgress(AddressOf StepEntryProgress), New Object() {e})
- Else
- prg_process.PerformStep()
- System.Threading.Thread.Sleep(100)
- 'set a label with status information
- nFilesCompleted = nFilesCompleted + 1
- lblStatus.Text = String.Format("{0} of {1} files...({2})", nFilesCompleted, totalEntriesToProcess, e.CurrentEntry.FileName)
- Me.Update()
- End If
- End Sub
- Private Sub SetProgressBarMax(ByVal n As Integer)
- If prg_process.InvokeRequired Then
- prg_process.Invoke(New Action(Of Integer)(AddressOf SetProgressBarMax), New Object() {n})
- Else
- prg_process.Value = 0
- prg_process.Maximum = n
- prg_process.Step = 1
- End If
- End Sub
- Private Sub Schritt1() 'ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
- Status("Füge Mods ein...")
- BGWMods.RunWorkerAsync()
- End Sub
- Private Sub Schritt3()
- tmr_close.Start()
- End Sub
- Private Sub Schritt2()
- Dim newminecraft As New FileInfo(txt_minecraftpfad.Text)
- Status("Packe das Archiv...")
- If newminecraft.Exists Then
- newminecraft.Delete()
- End If
- Me.Invoke(Sub() ZipUp(ExtractPath.FullName, newminecraft.FullName))
- End Sub
- Private Sub Status(State As String)
- Me.Invoke(Sub() lbl_action.Text = State)
- End Sub
- Private Sub btn_start_Click(sender As Object, e As EventArgs) Handles btn_start.Click
- btn_start.Enabled = False
- BGWStart.WorkerReportsProgress = True
- BGWStart.RunWorkerAsync()
- End Sub
- Private Sub BGWStart_DoWork(sender As Object, e As DoWorkEventArgs) Handles BGWStart.DoWork
- BGWStart.ReportProgress(Nothing, "Konvertiere minecraft.jar...")
- If MinecraftZIP.Exists Then
- MinecraftZIP.Delete()
- End If
- MinecraftJAR = txt_minecraftpfad.Text
- IO.File.Copy(MinecraftJAR, MinecraftZIP.FullName)
- If chk_backup.Checked Then
- Status("Backup wird erstellt...")
- Dim backupOrdner As New DirectoryInfo(IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft\bin\Backup"))
- If Not backupOrdner.Exists Then
- backupOrdner.Create()
- End If
- Dim filename As String = DateTime.Now.ToString.Replace(":", "_")
- IO.File.Move(txt_minecraftpfad.Text, backupOrdner.FullName & "\" & filename & ".jar")
- End If
- BGWStart.ReportProgress(Nothing, "Ändere aux.class...")
- Me.RenameFileInZip(MinecraftZIP.FullName, aux, "aux_class")
- If ExtractPath.Exists = True Then
- IO.Directory.Delete(ExtractPath.FullName, True)
- End If
- ExtractPath.Create()
- BGWStart.ReportProgress(Nothing, "Entpacken...")
- Dim TargetDir As String = ExtractPath.FullName
- Using zip1 As ZipFile = ZipFile.Read(MinecraftZIP.FullName)
- AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress
- Dim i As ZipEntry
- ' here, we extract every entry, but we could extract
- ' based on entry name, size, date, etc.
- For Each i In zip1
- i.Extract(TargetDir, ExtractExistingFileAction.OverwriteSilently)
- Next
- End Using
- End Sub
- Private Sub BGWStart_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BGWStart.ProgressChanged
- Status(e.UserState.ToString)
- End Sub
- Private Sub BGWStart_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BGWStart.RunWorkerCompleted
- Status("Entpacken erfolgreich")
- Schritt1()
- End Sub
- Private Sub BGWMods_DoWork(sender As Object, e As DoWorkEventArgs) Handles BGWMods.DoWork
- Status("Mods werden installiert")
- Dim i As Integer
- Dim MetainfOrdner As New DirectoryInfo(ExtractPath.FullName & "\META-INF")
- If Not ModsOrdner.Exists Then
- ModsOrdner.Create()
- End If
- If Not CoreModsOrdner.Exists Then
- CoreModsOrdner.Create()
- End If
- If MetainfOrdner.Exists Then
- Me.Invoke(Sub() lblStatus.Text = "lösche META-INF Ordner")
- IO.Directory.Delete(MetainfOrdner.FullName, True)
- End If
- For i = 0 To lst.Items.Count - 1
- If lst.GetItemChecked(i) = True Then
- Me.Invoke(Sub() lblStatus.Text = "Aktueller Mod: " & lst.Items.Item(i).ToString)
- Select Case lst.Items.Item(i).ToString
- Case "Forge"
- InstallMod("Forge.zip", installTyp.input)
- Case "Optifine HD"
- InstallMod("OptiFineHD.zip", installTyp.input)
- End Select
- End If
- Next
- Schritt2()
- End Sub
- Enum installTyp
- input 'ZIP Archiv wird entpackt und in die minecraft.jar direkt eingefügt
- Add 'ZIP Archiv wird in den Mods Ordner entpackt
- CopyInModsFolderOnly 'Datei wird in den Mods Ordner kopiert
- CopyInCoreModsFolderOnly 'Die Datei wird in den CoreMods Ordner kopiert
- InDirectory 'ZIP Archiv wird in den .minecraft Ordner entpackt
- End Enum
- Private Sub InstallMod(file As String, install As installTyp)
- Dim pfad As DirectoryInfo = Nothing
- Dim datei As New FileInfo(Application.StartupPath & "\mods\" & file)
- If install = installTyp.Add Then
- pfad = New DirectoryInfo(ModsOrdner.FullName)
- ElseIf install = installTyp.input Then
- pfad = New DirectoryInfo(ExtractPath.FullName)
- ElseIf install = installTyp.CopyInModsFolderOnly Then
- Try
- datei.CopyTo(ModsOrdner.FullName & "\" & datei.Name)
- Catch
- End Try
- Exit Sub
- ElseIf install = installTyp.InDirectory Then
- pfad = New DirectoryInfo(IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft"))
- ElseIf install = installTyp.CopyInCoreModsFolderOnly Then
- Try
- datei.CopyTo(CoreModsOrdner.FullName & "\" & datei.Name)
- Catch
- End Try
- Exit Sub
- End If
- Dim TargetDir As String = pfad.FullName
- Using zip1 As ZipFile = ZipFile.Read(datei.FullName)
- 'AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress
- Dim i As ZipEntry
- ' here, we extract every entry, but we could extract
- ' based on entry name, size, date, etc.
- For Each i In zip1
- i.Extract(TargetDir, ExtractExistingFileAction.OverwriteSilently)
- Next
- End Using
- End Sub
- Private Sub MyExtractProgress(sender As Object, e As Ionic.Zip.ExtractProgressEventArgs)
- If e.BytesTransferred > 0 AndAlso e.TotalBytesToTransfer > 0 Then
- Me.Invoke(Sub() prg_process.Value = CInt(e.BytesTransferred * 100 \ e.TotalBytesToTransfer))
- End If
- Me.Invoke(Sub() lblStatus.Text = e.CurrentEntry.ToString.Replace("ZipEntry::", "Aktuelle Datei: "))
- End Sub
- Private Sub chk_select_CheckedChanged(sender As Object, e As EventArgs) Handles chk_select.CheckedChanged
- Dim state As Boolean
- sate = chk_select.Checked
- End If
- For i As Integer = 0 To lst.Items.Count - 1
- lst.SetItemChecked(i, state)
- Next
- End Sub
- Public Class WorkerOptions
- ' Fields
- 'Public Comment As String
- 'Public CompressionLevel As CompressionLevel
- 'Public Encoding As String
- 'Public Encryption As EncryptionAlgorithm
- Public Folder As String
- 'Public Password As String
- 'Public Zip64 As Zip64Option
- 'Public ZipFlavor As Integer
- Public ZipName As String
- End Class
-
@VincentTB
Ich finde es ja witzig, dass du den wichtigsten Schritt entfernt hast
DoSave. bzw. überhaupt den letzten Schritt, ich hab mir das mal angeschaut und naja so funkt es nicht
Ohne den wird das glaube ich nichtsDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gather“ ()
-
Haha, das gibts doch nicht :pinch: ... Naja, der Code ist im Anhang (wegen der 15.000 Zeichen Beschränkung) oder hier mit Syntax, wo hoffentlich nichts fehlt...
Anmerkung zu dem Code: IO ist im .Net Framework 3.0 irgendwie total unbrauchbar... Deswegen das ganze My-Zeugs und kein Path.Combine. Außerdem ist es an manchen Stellen schon son bisschen unsauber programmiert, weil ich halt nicht wusste, dass IO.Directory.Delete im .Net Framework 3.0 nicht immer funktioniert und deswegen auch son paar überflüssige Subs. Außerdem solltet ihr nicht alles direkt kopieren, weil ich zb auch maximilians framework ui benutzte... Voraussetzung ist, dass ein Ordner "mods" in dem Ordner der Anwendung ist, wo dann die ganzen Mods sind. Ich hoffe, ich konnte helfen. -
-
Ähnliche Themen
-
Minecraft To many items einfügen.
VbTutorials11 - - Sonstige Problemstellungen -
Datein aus Pfad auslesen + Unterordner
CrosSLight - - Sonstige Problemstellungen