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

[Pytanie] Launcher MC - Problem


Rekomendowane odpowiedzi

Opublikowano

Witam!

 

Korzystając z poradnika: http://www.mpcforum.pl/topic/778910-tut-wlasny-launcher-z-auto-updaterem-do-serwera/

Utworzyłem coś takiego:

Imports System.Net
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SprawdzUpdate()
    End Sub
    Public Sub SprawdzUpdate()
        Dim jar As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft/bin/minecraft.jar")
        Dim kaktus As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft/update.txt")
        Dim Klient As New Net.WebClient
        Dim Wersja As String = My.Computer.FileSystem.ReadAllText(kaktus)
        Dim Version As String
        Dim fileReader As String
        fileReader = My.Computer.FileSystem.ReadAllText(kaktus)
        Version = Klient.DownloadString("http://www.naszastrona.pl/launcher/update.txt")



        If Version > Wersja Then
            MessageBox.Show("Nowa wersja jest dostępna i wlasnie jest pobierana. Launcher uruchomi sie po pobraniu.", "AutoUpdater")
            My.Computer.FileSystem.DeleteFile(jar)
            My.Computer.Network.DownloadFile("https://[Cenzura]upozv/minecraft.jar?token_hash=AAGaS0p056gGPA72aeh4WqU3Lt2jiGAeUu7tLM32dcuyOA&dl=1", jar)
            My.Computer.FileSystem.DeleteFile(kaktus)
            My.Computer.Network.DownloadFile("https://[Cenzura]tl8y2/Update.txt?token_hash=AAGVqNPJ0zwSgCUoWQ51G7nknumNhKbTqJCPcye_QrthJQ&dl=1", kaktus)
        Else
            MessageBox.Show("Brak nowej wersji do pobrania. Launcher i pliki sa aktualne", "AutoUpdater")
        End If


    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim uruchom As String

        uruchom = "javaw -Xmx1024m -Djava.library.path=%APPDATA%/.minecraft/bin/natives -cp %APPDATA%/.minecraft/bin/minecraft.jar;%APPDATA%/.minecraft/bin/jinput.jar;%APPDATA%/.minecraft/bin/lwjgl.jar;%APPDATA%/.minecraft/bin/lwjgl_util.jar net.minecraft.client.Minecraft "


        Shell("cmd.exe /c" & uruchom & TextBox1.Text)

        Me.Close()
    End Sub
End Class

 

Jednak gdy daje debug to mi się nie uruchamia MC ;/ nie wiem gdzie może istnieć problem nie znam się na tym tak bardzo jest to moja 2 albo 3-cia styczność z Visual Basic 2010

 

Jeśli mozecie mi pomoc to byłbym wdzięczny.

Pozdrawiam L4sT

Opublikowano

Widzę, że dałeś updater do Form co według mnie strasznie zamuli ci launcher ja bym zrobił to nieco inaczej:
- stwórz nowy pliko class.vb nazwij go np update.vb
- wklej do niego coś takiego:

 Public Shared Sub SprawdzUpdate()
        Dim jar As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft/bin/minecraft.jar")
        Dim kaktus As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft/update.txt")
        Dim Klient As New Net.WebClient
        Dim Wersja As String = My.Computer.FileSystem.ReadAllText(kaktus)
        Dim Version As String
        Dim fileReader As String
        fileReader = My.Computer.FileSystem.ReadAllText(kaktus)
        Version = Klient.DownloadString("http://www.naszastrona.pl/launcher/update.txt")



        If Version > Wersja Then
            MessageBox.Show("Nowa wersja jest dostępna i wlasnie jest pobierana. Launcher uruchomi sie po pobraniu.", "AutoUpdater")
            My.Computer.FileSystem.DeleteFile(jar)
            My.Computer.Network.DownloadFile("https://[Cenzura]upozv/minecraft.jar?token_hash=AAGaS0p056gGPA72aeh4WqU3Lt2jiGAeUu7tLM32dcuyOA&dl=1", jar)
            My.Computer.FileSystem.DeleteFile(kaktus)
            My.Computer.Network.DownloadFile("https://[Cenzura]tl8y2/Update.txt?token_hash=AAGVqNPJ0zwSgCUoWQ51G7nknumNhKbTqJCPcye_QrthJQ&dl=1", kaktus)
startmc.start()
        Else
            startmc.start()
        End If

 

- w form(design) dodaj button, wejdź w niego i wpisz :

update.SprawdzUpdate()

 

- dodaj kolejny class.vb nazwij go odpalmc.vb i wklej do niego:

 Public Shared Sub startmc()
Dim uruchom As String

        uruchom = "javaw -Xmx1024m -Djava.library.path=%APPDATA%/.minecraft/bin/natives -cp %APPDATA%/.minecraft/bin/minecraft.jar;%APPDATA%/.minecraft/bin/jinput.jar;%APPDATA%/.minecraft/bin/lwjgl.jar;%APPDATA%/.minecraft/bin/lwjgl_util.jar net.minecraft.client.Minecraft "


        Shell("cmd.exe /c" & uruchom & TextBox1.Text)

        Me.Close()
End Sub

 

teraz opiszę ci co i jak.
Po odpaleniu (debugowanie) klikasz w button rozpoczyna ci się proces sprawdzania udate (musisz mieć w %appdata%/.minecraft notatnik o nazwie update.txt)
jeżeli będzie dostępna wersja pobierze ją i następnie powinienen uruchomić się minecraft, jeżeli nie ma dostępnej wersji odrazu mc się uruchomi bez żadnego komunikatu, że wersja jest aktualna.

Powinno działać, jeśli nie napisz na pw dam ci moją wersję :)

Opublikowano

Pytanie z innej beczki: Chciałbym sciągnac plik nazwijmy go: mod.rar

 

My.Computer.FileSystem.DeleteFile(mod)
My.Computer.Network.DownloadFile("https://[Cenzura]upozv/minecraft.jar?token_hash=AAGaS0p056gGPA72aeh4WqU3Lt2jiGAeUu7tLM32dcuyOA&dl=1", mod)

 

no i problem wynika taki, że ten plik jeszczen nie istnieje i cały program zatrzymuje się na linijce: My.Computer.FileSystem.DeleteFile(mod) bo ten plik nie istnieje co zrobić, żeby sciągało jeśli go nie ma? Jak trzeba zmienić kod podany w pierwszym poscie? (Bazujmy na nim)

 

Z góry dziekuje Pozdrawiam L4sT

Opublikowano

Pytanie z innej beczki: Chciałbym sciągnac plik nazwijmy go: mod.rar

 

My.Computer.FileSystem.DeleteFile(mod)
My.Computer.Network.DownloadFile("https://[Cenzura]upozv/minecraft.jar?token_hash=AAGaS0p056gGPA72aeh4WqU3Lt2jiGAeUu7tLM32dcuyOA&dl=1", mod)

 

no i problem wynika taki, że ten plik jeszczen nie istnieje i cały program zatrzymuje się na linijce: My.Computer.FileSystem.DeleteFile(mod) bo ten plik nie istnieje co zrobić, żeby sciągało jeśli go nie ma? Jak trzeba zmienić kod podany w pierwszym poscie? (Bazujmy na nim)

 

Z góry dziekuje Pozdrawiam L4sT

 

Sprawdź czy ten plik istnieje, jak istnieje to usuwaj, jak nie istnieje to pomijaj ten krok (instrukcja warunkowa if, warunek IO.File.Exists(mod)).

Opublikowano

Czyli jak to ma wyglądać? Prosiłbym o przykład kodu mam dopisać do tego mojego co mam? Czy zrobić nowy projekt?

Sory, że nie wiem dla wiekszosci pewnie są to oczywiste rzeczy no ale człowiek codziennie się uczy :]

Opublikowano

to by miało tak wyglądac?

 

Public Class Form1
    Dim jar As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft/bin/minecraft.jar")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If (System.IO.File.Exists(jar)) Then
            My.Computer.FileSystem.DeleteFile(jar)
        Else
            My.Computer.Network.DownloadFile("https://naszastrona.pl", jar)


        End If
    End Sub
End Class

 

Działa mi ten kod tylko chce się upewnić czy nie zrobiłem błędu :]

Opublikowano

to by miało tak wyglądac?

 

Public Class Form1
    Dim jar As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft/bin/minecraft.jar")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If (System.IO.File.Exists(jar)) Then
            My.Computer.FileSystem.DeleteFile(jar)
        Else
            My.Computer.Network.DownloadFile("https://naszastrona.pl", jar)


        End If
    End Sub
End Class

Działa mi ten kod tylko chce się upewnić czy nie zrobiłem błędu :]

Nie...

Teraz, jeżeli plik istnieje usuwasz go, w innym wypadku pobierasz.

Opublikowano

Okej dziękuje bardzo teraz pojawił się jeszcze jeden problem.

 

Gdy zaczynam ściagać okno jakby "zamarza" tzn. nie da się nic kliknąć co może być tego przyczyną? Juz nawet jak się zaczyna ściagac niech zamarza, ale zeby chociaz na koncu (po sciaganiu) wyskoczylo na nowo.

Kolejny problem: Jeśli jest cos takiego:

If (System.IO.File.Exists(l4st7)) Then
            My.Computer.FileSystem.DeleteFile(l4st7)
        Else
            My.Computer.Network.DownloadFile("www.naszastrona.pl", l4st7) 

To jeśli istnieje plik to go usuwa, ale juz nie sciaga, a jeśli go nie ma to ściąga dlaczego?

=Edit=

Udalo mi sie zrobić ze na koncu "odmarza" ale czy nie da się zrobić żeby przez cały czas tak było?

Opublikowano

Okej dziękuje bardzo teraz pojawił się jeszcze jeden problem.

 

Gdy zaczynam ściagać okno jakby "zamarza" tzn. nie da się nic kliknąć co może być tego przyczyną? Juz nawet jak się zaczyna ściagac niech zamarza, ale zeby chociaz na koncu (po sciaganiu) wyskoczylo na nowo.

Zajęcie głównego wątku ściąganiem pliku.
Opublikowano

Ok, dzieki :] a co z tym problemem, że jak mam np. minecraft.jar i leci ten kod

If (System.IO.File.Exists(l4st7)) Then
            My.Computer.FileSystem.DeleteFile(l4st7)
        Else
            My.Computer.Network.DownloadFile("www.naszastrona.pl", l4st7) 

 

to mi usuwa minecraft.jar ale juz nie ściaga? Czyli idzie jakby do tego Else, a potem skacze dalej. Dlaczego tak jest?

Ogólnie mogłoby być bez Else, ale przy innych plikach jak mam Else to mi tworzy foldery nie wiem dlaczego tak jest na prawde nie mam zielonego pojęcia.

Jeśli te pytania są oczywiste to przepraszam :D

Opublikowano

Ok, dzieki :] a co z tym problemem, że jak mam np. minecraft.jar i leci ten kod

If (System.IO.File.Exists(l4st7)) Then
            My.Computer.FileSystem.DeleteFile(l4st7)
        Else
            My.Computer.Network.DownloadFile("www.naszastrona.pl", l4st7) 

 

to mi usuwa minecraft.jar ale juz nie ściaga? Czyli idzie jakby do tego Else, a potem skacze dalej. Dlaczego tak jest?

Ogólnie mogłoby być bez Else, ale przy innych plikach jak mam Else to mi tworzy foldery nie wiem dlaczego tak jest na prawde nie mam zielonego pojęcia.

Jeśli te pytania są oczywiste to przepraszam :D

Widze, że nikt nie odpowiedział to Ja odpowiem.

Źle napisałes kod :D

 

If (System.IO.File.Exists(l4st7)) Then
            My.Computer.FileSystem.DeleteFile(l4st7) ' Co ma zrobić jeśli będzie plik l4st7
        Else
            My.Computer.Network.DownloadFile("www.naszastrona.pl", l4st7) ' Co ma zrobić gdy wyskoczy błąd jakiś lub pliku nie będzie.

Poprawnie

 

If (System.IO.File.Exists(l4st7)) Then
            My.Computer.FileSystem.DeleteFile(l4st7) ' Co ma zrobić jeśli będzie plik l4st7
            My.Computer.Network.DownloadFile("www.naszastrona.pl", l4st7)
        Else if not (System.IO.File.Exists(l4st7)) ' co ma zrobić jeśli pliku nie będzie (gdy nie będzie działać tak ustaw tu else a te na dole usuń.
            My.Computer.Network.DownloadFile("www.naszastrona.pl", l4st7)
        Else
            MsgBox("Error") ' Co ma zrobić gdy wyskoczy błąd jakiś lub pliku nie będzie.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...