Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Lokalizacja pobranego pliku, automatyczne rozpakowanie .zip


Rekomendowane odpowiedzi

Opublikowano

Witam,

napisałem swój updater, do swojej paczki modów w jak wiadomo programie Visual Basic 2010 express, niby wszystko jest OK, updater łączy się z moim serwerem FTP i jesli jest aktualizacja pobiera on z niego plik, ale... no własnie plik .zip, a ja chce, aby go rozpakować w danym miejscu.... no własnie... w miejscu, nie mam pojęcia jak ustawić lokalizację gdzie ma się to pobrać, znaczy wiem i mam ustawione, i się tam pobiera, ale jak użytkownik będzie miał updater to tej lokalizacji co ja mam on nie będzie miał i mu wywali błąd, mam nadzieję, że wiecie o co chodzi, aczkolwiek wiem, że na 100% będzie miał zainstalowaną grę, do której jest paczka i odpowiedni updater czyli world of tanks. Próbowałem już w scieżce kombinować typu /World_of_Tanks/odpowiednie katalogi gry, ale nie pomagało, czy ktos wie jak dobrze ustawić tę lokalizację?

 

Oprócz tego jest druga strona medalu jak wspomniałem wyżej, oprócz tego, że chcę tą lokalizację chcę też, aby w tej lokalizacji rozpakował się ten pobrany plik .zip czy ktos wie jak to uczynić, tylko proszę napisać dokładnie co i jak jestem początkujący jak widziałem te poradniki to nic nie rozumiałem.

 

Fajnie by było jakby ktos zmienił mój kod tak, aby było tak jak pisałem.

Tutaj jest częsc kodu, odpowiadającego za pobranie pliku. Oczywiscie wszystko jest połączone z progressbarem.:


                Dim result As Integer = MessageBox.Show("Znaleziono AKTUALIZACJĘ! Chcesz zaktualizować paczkę?", "AKTUALIZACJA", MessageBoxButtons.YesNo)
                If result = DialogResult.No Then
                    Me.Dispose()
                ElseIf result = DialogResult.Yes Then
                    Label5.Text = "Aktualizacja paczki:"
                    If My.Computer.Network.IsAvailable Then
                        My.Computer.FileSystem.CreateDirectory("lokalizacja...")


                        download.DownloadFileAsync(New Uri("http://michumods.pl/res_mods.zip"), "lokalizacja...\res_mods.zip") (pomocy z tą lokalizacją)
                    Else
                        MsgBox("Brak dostępu do Internetu")
                    End If
                End If
            End If
        End If
    End Sub

 

 

 

 

Jest jeszcze w osobnych private sub, cos takiego aby było połączone z progressbarem:

   Private Sub download_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged
        ProgressBar2.Value = e.ProgressPercentage
        Dim totalbytes As Long = e.TotalBytesToReceive / 1024
        Dim mtotalbytes As Long = totalbytes / 1024
        Dim bytes As Long = e.BytesReceived / 1024
        Dim mbytes As Long = bytes / 1024
        If totalbytes < 1 Then totalbytes = 1
        If bytes < 1 Then bytes = 1
        If totalbytes > 1024 Then
            Label3.Text = mbytes.ToString & "MB z " & mtotalbytes.ToString & " MB"
        Else
            Label3.Text = bytes.ToString & "KB z " & totalbytes.ToString & " KB"
        End If
    End Sub


    Private Sub download_DownloadFileCompleted(sender As Object, e As AsyncCompletedEventArgs) Handles download.DownloadFileCompleted
        Label3.Visible = False
        ProgressBar1.Visible = True
        Button1.Enabled = False
        Button2.Enabled = True
        Label5.Visible = False
        MsgBox("Paczka została zaktualizowana pomyslnie!")
        Label4.Text = "Zaktualizowano paczkę. Możesz zamknąć updater."
        Dim webAddress As String = "http://www.michumods.pl/"
        Process.Start(webAddress)
    End Sub
Opublikowano

1. Lokalizacja WOTA na pewno jest zapisana w rejestrze. - Wyciągnij
2. Do wypakowania pliku zip użyj klasy ZipFile. Jest ona w System.IO.Compresion
Przykład:
 

 ZipFile.ExtractToDirectory("D:\gry\WOT\Update.zip", "D:\gry\WOT\")

Jeżeli twój program jest w folderze z WOT'em to wystarczy:
 

 Directory.GetCurrentDirectory()

Zwraca folder w którym jest uruchamiana aplikacja.

Opublikowano

Jeśli chcesz rozpakować pobraną paczkę do lokalizacji gry potrzebujesz aby użytkownik wskazał ci tą lokalizację. Czyli przy 1. uruchomieniu programu użytkownik wskazuje katalog z grą (folderBrowserDialog) którego ścieżka zapisuje się w MySettings/rejestr/plik i ewentualnie może ją potem zmienić. Możesz jeszcze zobaczyć czy WoT ma swój klucz w "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" (wątpię) lub gdzieś we własnych kluczach, jeśli tak to program odczyta wartość, a użytkownik nie będzie musiał nic wskazywać.

Do rozpakowywania zipów wystarczy użyć metody CopyHere lub dla .net 4.5+ klasy ZipFile.

Tubady aka Chopey

❱❱❱❱ [Android] CS:GO Smoke Center ❰❰❰❰

 

Nie cheatuję.
Tubady.png

Opublikowano

Jeśli chcesz rozpakować pobraną paczkę do lokalizacji gry potrzebujesz aby użytkownik wskazał ci tą lokalizację. Czyli przy 1. uruchomieniu programu użytkownik wskazuje katalog z grą (folderBrowserDialog) którego ścieżka zapisuje się w MySettings/rejestr/plik i ewentualnie może ją potem zmienić. Możesz jeszcze zobaczyć czy WoT ma swój klucz w "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" (wątpię) lub gdzieś we własnych kluczach, jeśli tak to program odczyta wartość, a użytkownik nie będzie musiał nic wskazywać.

Do rozpakowywania zipów wystarczy użyć metody CopyHere lub dla .net 4.5+ klasy ZipFile.

 

Co do rozpakowania kombinowałem z tym folderBrowserDialog, ale nie mam pojęcia jak zrobić aby potem zapisało mi te lokalizacje w postaci zmiennej i potem tylko w  kodzie tam gdzie chcę lokalizację wklejam tą zmienną i pobiera się tam gdzie zaznaczał użytkownik. bym musiał odczytać instrukcję krok po kroku. Co do klucza wot sprawdzałem i nie ma, albo źle patrzyłem, no ale raczej nie ma.

 

 

1. Lokalizacja WOTA na pewno jest zapisana w rejestrze. - Wyciągnij

2. Do wypakowania pliku zip użyj klasy ZipFile. Jest ona w System.IO.Compresion

Przykład:

 

 ZipFile.ExtractToDirectory("D:\gry\WOT\Update.zip", "D:\gry\WOT\")

Jeżeli twój program jest w folderze z WOT'em to wystarczy:

 

 Directory.GetCurrentDirectory()

Zwraca folder w którym jest uruchamiana aplikacja.

 

1. Ale gdzie ;/

2. Próbowałem tego, jednak tak jak mówiłem nie wiem gdzie to wkleić (kod) i nic nie zrozumiałem z poradników.

 

A gdzie tą zmienną wkleić?

                Dim result As Integer = MessageBox.Show("Znaleziono AKTUALIZACJĘ! Chcesz zaktualizować paczkę?", "AKTUALIZACJA", MessageBoxButtons.YesNo)
                If result = DialogResult.No Then
                    Me.Dispose()
                ElseIf result = DialogResult.Yes Then
                    Label5.Text = "Aktualizacja paczki:"
                    If My.Computer.Network.IsAvailable Then
                        My.Computer.FileSystem.CreateDirectory("lokalizacja...")


                        download.DownloadFileAsync(New Uri("http://michumods.pl/res_mods.zip"), "TUTAJ?")
                    Else

PS: Wiem, jestem tępy ;/

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...