Hilfe bei Launcher/Updater Verfeinerung?

  • VB.NET

Es gibt 63 Antworten in diesem Thema. Der letzte Beitrag () ist von asusdk.

    Hilfe bei Launcher/Updater Verfeinerung?

    Hallo,

    ich bin momentan dabei für einen Altis Server einen Launcher zu erstellen. Soweit läuft auch alles. Nur würde ich die ein oder andere Sache gern anders geregelt haben, komme da selbst aber leider nicht mehr wirklich weiter.

    Und Zwar sieht der komplette Code momentan so aus:
    Habe unsere Domain aber entfernt)(
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Imports System.Net
    4. Public Class TerranTitansLauncher
    5. Friend WithEvents MyWebClient As New Net.WebClient
    6. Dim client As New Net.WebClient
    7. Private Sub DownloadProgress(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
    8. Me.ProgressBar1.Value = e.ProgressPercentage
    9. End Sub
    10. Private Sub MyWebClient_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles MyWebClient.DownloadProgressChanged
    11. ProgressBar1.Value = e.ProgressPercentage
    12. Dim totalbytes As Long = e.TotalBytesToReceive / 1024
    13. Dim bytes As Long = e.BytesReceived / 1024
    14. ToString()
    15. Label2.Text = bytes.ToString & " kb von " & totalbytes.ToString & " kb"
    16. If ProgressBar1.Value = 100 Then
    17. Label2.Text = ("Fertig")
    18. MsgBox("Dein Download war Erfolgreich!")
    19. End If
    20. End Sub
    21. Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    22. Dim iox As New IO.StreamReader(My.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
    23. Dim ot As String = iox.ReadToEnd
    24. iox.Close()
    25. 'Launchername
    26. My.MyProject.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "Version", "1.0.0")
    27. 'hier bitte euren Link/Pfad angeben zur version.txt
    28. Me.client.DownloadFile("http://launcher.domain.de/version/version.txt", My.MyProject.Application.Info.DirectoryPath & "\data\version.txt")
    29. Me.TextBox1.Text = My.MyProject.Computer.FileSystem.ReadAllText(My.MyProject.Application.Info.DirectoryPath & "\data\pfad.txt")
    30. Me.TextBox2.Text = My.MyProject.Computer.FileSystem.ReadAllText(My.MyProject.Application.Info.DirectoryPath & "\data\para.txt")
    31. Dim streamreader1 As System.IO.StreamReader = New System.IO.StreamReader(My.MyProject.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
    32. Dim str1 As String = streamreader1.ReadToEnd()
    33. streamreader1.Close()
    34. 'Launchername
    35. If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
    36. Else
    37. MsgBox("Update Verfügbar")
    38. End If
    39. End Sub
    40. Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    41. If (e.Button = Windows.Forms.MouseButtons.Left) Then
    42. Me.Capture = False
    43. Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    44. Else : End If
    45. End Sub
    46. Private Sub TerranTitansLauncher_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    47. PictureBox1.Parent = Me
    48. PictureBox1.BackColor = Color.Transparent
    49. PictureBox2.Parent = Me
    50. PictureBox2.BackColor = Color.Transparent
    51. PictureBox3.Parent = Me
    52. PictureBox3.BackColor = Color.Transparent
    53. PictureBox4.Parent = Me
    54. PictureBox4.BackColor = Color.Transparent
    55. PictureBox5.Parent = Me
    56. PictureBox5.BackColor = Color.Transparent
    57. PictureBox6.Parent = Me
    58. PictureBox6.BackColor = Color.Transparent
    59. PictureBox7.Parent = Me
    60. PictureBox7.BackColor = Color.Transparent
    61. End Sub
    62. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    63. Application.Exit()
    64. End Sub
    65. Private Sub PictureBox1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
    66. PictureBox1.BackgroundImage = My.Resources.X
    67. End Sub
    68. Private Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
    69. PictureBox1.BackgroundImage = Nothing
    70. End Sub
    71. Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
    72. Me.WindowState = FormWindowState.Minimized
    73. End Sub
    74. Private Sub PictureBox2_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.MouseEnter
    75. PictureBox2.BackgroundImage = My.Resources.Minimieren
    76. End Sub
    77. Private Sub PictureBox2_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.MouseLeave
    78. PictureBox2.BackgroundImage = Nothing
    79. End Sub
    80. Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
    81. 'Modpack/s und IP einfügen
    82. 'Staret das spiel und lässt auf den server connecten
    83. Process.Start(Me.TextBox1.Text & "\arma3battleye.exe ", " 0 1 -connect=serverip " & TextBox2.Text)
    84. End Sub
    85. Private Sub PictureBox3_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.MouseEnter
    86. PictureBox3.BackgroundImage = My.Resources.Spielen
    87. End Sub
    88. Private Sub PictureBox3_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.MouseLeave
    89. PictureBox3.BackgroundImage = Nothing
    90. End Sub
    91. Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click
    92. 'Speichert Pfad und Startparameter in einer Textdatei
    93. My.Computer.FileSystem.WriteAllText(My.MyProject.Application.Info.DirectoryPath & "\data\pfad.txt", TextBox1.Text, False)
    94. My.Computer.FileSystem.WriteAllText(My.MyProject.Application.Info.DirectoryPath & "\data\para.txt", TextBox2.Text, False)
    95. End Sub
    96. Private Sub PictureBox4_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.MouseEnter
    97. PictureBox4.BackgroundImage = My.Resources.Speichern
    98. End Sub
    99. Private Sub PictureBox4_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.MouseLeave
    100. PictureBox4.BackgroundImage = Nothing
    101. End Sub
    102. Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
    103. 'Sorgt dafür das man Pfad suchen kann
    104. Dim FolderBrowser As New FolderBrowserDialog
    105. FolderBrowser.Description = "Bitte wähle deinen Pfad zu Arma 3..."
    106. FolderBrowser.ShowNewFolderButton = True
    107. FolderBrowser.RootFolder = System.Environment.SpecialFolder.Desktop
    108. FolderBrowser.SelectedPath = My.Computer.FileSystem.SpecialDirectories.Desktop
    109. If FolderBrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
    110. Me.TextBox1.Text = FolderBrowser.SelectedPath
    111. End If
    112. End Sub
    113. Private Sub PictureBox5_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.MouseEnter
    114. PictureBox5.BackgroundImage = My.Resources.Suchen
    115. End Sub
    116. Private Sub PictureBox5_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.MouseLeave
    117. PictureBox5.BackgroundImage = Nothing
    118. End Sub
    119. Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click
    120. 'Fragt auf Webspace die version ab und wenn es Änderungen gab lädt er die neue version des Launchers runter
    121. 'Lässt bei Änderungen am Launcher eine neue Version downloaden
    122. Dim iox As New IO.StreamReader(My.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
    123. Dim ot As String = iox.ReadToEnd
    124. iox.Close()
    125. If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
    126. MsgBox("Der Launcher ist auf dem neuesten Stand!")
    127. Else
    128. 'Link/Pfad zum Launcher.rar
    129. SendMessage(ProgressBar1.Handle, 1040, 2, 0)
    130. Timer1.Start()
    131. client.DownloadFileAsync(New System.Uri("http://launcher.domain.de/update/TerranTitansLauncher.rar"), My.Application.Info.DirectoryPath & "\TerranTitansLauncher.rar")
    132. AddHandler client.DownloadProgressChanged, AddressOf DownloadProgress
    133. End If
    134. End Sub
    135. Private Sub PictureBox6_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.MouseEnter
    136. PictureBox6.BackgroundImage = My.Resources.Update
    137. End Sub
    138. Private Sub PictureBox6_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.MouseLeave
    139. PictureBox6.BackgroundImage = Nothing
    140. End Sub
    141. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    142. Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
    143. 'Modpack Downloaden.Link/Pfad zu Modpack/Missionpbo File
    144. SendMessage(ProgressBar1.Handle, 1040, 2, 0)
    145. Timer1.Start()
    146. client.DownloadFileAsync(New System.Uri("http://launcher.domain.de/update/Altis_Life.Altis.pbo"), My.Application.Info.DirectoryPath & "\mission\Altis_Life.Atlis.pbo")
    147. AddHandler client.DownloadProgressChanged, AddressOf DownloadProgress
    148. End Sub
    149. Private Sub PictureBox7_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.MouseEnter
    150. PictureBox7.BackgroundImage = My.Resources.Download
    151. End Sub
    152. Private Sub PictureBox7_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.MouseLeave
    153. PictureBox7.BackgroundImage = Nothing
    154. End Sub
    155. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    156. ProgressBar1.Increment(1)
    157. End Sub
    158. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    159. Label1.Text = IO.File.ReadAllText("version.txt")
    160. End Sub
    161. End Class



    Launcher sieht momentan so aus (Nix weltbewegendes, aber für die Bedürfnisse noch ausreichend):


    Wenn irgendwo Fehler sind würde ich mich auch über Verbesserungsvorschläge freuen. Ist mein erster Versuch und ich muss da halt noch etwas mehr rein finden.
    Ich habe da jedoch paar Probleme...

    1. Bei Label2 sollte, wenn man Update oder Download drückt normal die kb von kb mit der Progressbar mitgehen. Tut es aber nicht.

    2. Bei Label1 hätte ich es gerne anders gelöst. Und zwar würde ich wollen, das er schon mit der version.txt auf dem Webspace vergleicht und bei Bedarf halt sagt das eine Neue Version verfügbar ist. Dann kann man ja über Update die neue Launcherdateien runterladen. Wenn das fertig ist soll er bei Label1 die neue Version hinschreiben, welche der neue Launcher hat. Was halt auch super wäre, wenn die RaR-Datei auch gleich im Ordner des Launchers entpackt wird und dann mit der neuen Version neustartet.

    3. Was noch ein nettes Feature wäre, eine Serverstatusanzeige. Also ob der Webspace online ist. Das Ganze am besten mit einem grünen bzw. roten Symbol für offline angezeigt.

    Der Server geht nämlich in paar Tagen in die Closed Alpha und da würde der Launcher einiges einfacher machen. Würde mich deshalb echt freuen, wenn mir da einer etwas unter die Arme greifen könnte mit dem Code. Auch wenn es geht etwas genauer, damit ich auch eventuelle Fehler leichter sehe.

    Was ich auch komisch finde. Wenn man die .pbo datei über den Launcher runterlädt und in den MPMissionsCache Order reinpackt. Muss man die Mission beim joinen des Server trotzdem runterladen???
    Normal soll das ja dadurch abgenommen werden.
    Wenn man die Datei direkt ohne Launcher runterlädt und einfügt, dann muss man die mission nicht noch runterladen? Ich blick da echt nicht ganz durch... :(

    Gruß Tecko

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tecko“ ()

    Grüß Dich,

    Mangels Zeit (muss zur Arbeit) konnt ich jetzt erstmal nur einige der VB-Nymespaces bzw. My-Namespaces ersetzen (Veraltete Funktionen die man vermeiden sollte)
    text auch etwas umformatiert damit er besser zu lesen ist, (so können dir Versiertere User hier besser helfen)

    Mangels Zeit noch ungetestet :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Imports System.Net
    4. Public Class Form1
    5. Friend WithEvents MyWebClient As New Net.WebClient
    6. Dim client As New Net.WebClient
    7. Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    8. (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    9. Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    10. PictureBox1.Parent = Me
    11. PictureBox1.BackColor = Color.Transparent
    12. PictureBox2.Parent = Me
    13. PictureBox2.BackColor = Color.Transparent
    14. PictureBox3.Parent = Me
    15. PictureBox3.BackColor = Color.Transparent
    16. PictureBox4.Parent = Me
    17. PictureBox4.BackColor = Color.Transparent
    18. PictureBox5.Parent = Me
    19. PictureBox5.BackColor = Color.Transparent
    20. PictureBox6.Parent = Me
    21. PictureBox6.BackColor = Color.Transparent
    22. PictureBox7.Parent = Me
    23. PictureBox7.BackColor = Color.Transparent
    24. Dim iox As New IO.StreamReader(My.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
    25. Dim ot As String = iox.ReadToEnd
    26. iox.Close()
    27. 'Launchername
    28. My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "Version", "1.0.0")
    29. 'hier bitte euren Link/Pfad angeben zur version.txt
    30. client.DownloadFile("http://launcher.domain.de/version/version.txt", Application.ExecutablePath & "\data\version.txt")
    31. TextBox1.Text = File.ReadAllText(Application.ExecutablePath & "\data\pfad.txt")
    32. TextBox2.Text = File.ReadAllText(Application.ExecutablePath & "\data\para.txt")
    33. Dim streamreader1 As StreamReader = New StreamReader(Application.ExecutablePath & "\data\version.txt", Encoding.Default)
    34. Dim str1 As String = streamreader1.ReadToEnd()
    35. streamreader1.Close()
    36. 'Launchername
    37. If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
    38. Else
    39. MessageBox.Show("Update Verfügbar")
    40. End If
    41. End Sub
    42. Private Sub DownloadProgress(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
    43. ProgressBar1.Value = e.ProgressPercentage
    44. End Sub
    45. Private Sub MyWebClient_DownloadProgressChanged(ByVal sender As Object, ByVal e As Net.DownloadProgressChangedEventArgs) Handles MyWebClient.DownloadProgressChanged
    46. ProgressBar1.Value = e.ProgressPercentage
    47. Dim totalbytes As Double = e.TotalBytesToReceive / 1024
    48. Dim bytes As Double = e.BytesReceived / 1024
    49. ToString()
    50. Label2.Text = bytes.ToString & " kb von " & totalbytes.ToString & " kb"
    51. If ProgressBar1.Value = 100 Then
    52. Label2.Text = ("Fertig")
    53. MessageBox.Show("Der Download war Erfolgreich!")
    54. End If
    55. End Sub
    56. Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseDown
    57. If (e.Button = MouseButtons.Left) Then
    58. Capture = False
    59. WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    60. Else : End If
    61. End Sub
    62. Private Sub PictureBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.Click
    63. Application.Exit()
    64. End Sub
    65. Private Sub PictureBox2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox2.Click
    66. WindowState = FormWindowState.Minimized
    67. End Sub
    68. Private Sub PictureBox3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox3.Click
    69. 'Modpack/s und IP einfügen
    70. 'Staret das spiel und lässt auf den server connecten
    71. Process.Start(TextBox1.Text & "\arma3battleye.exe ", " 0 1 -connect=serverip " & TextBox2.Text)
    72. End Sub
    73. Private Sub PictureBox4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox4.Click
    74. 'Speichert Pfad und Startparameter in einer Textdatei
    75. File.WriteAllText(Application.ExecutablePath & "\data\pfad.txt", TextBox1.Text, Encoding.Default)
    76. File.WriteAllText(Application.ExecutablePath & "\data\pfad.txt", TextBox1.Text, Encoding.Default)
    77. End Sub
    78. Private Sub PictureBox5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox5.Click
    79. 'Sorgt dafür das man Pfad suchen kann
    80. Dim FolderBrowser As New FolderBrowserDialog
    81. FolderBrowser.Description = "Bitte wähle deinen Pfad zu Arma 3..."
    82. FolderBrowser.ShowNewFolderButton = True
    83. FolderBrowser.RootFolder = Environment.SpecialFolder.Desktop
    84. FolderBrowser.SelectedPath = Environment.SpecialFolder.Desktop.ToString
    85. If FolderBrowser.ShowDialog = DialogResult.OK Then
    86. TextBox1.Text = FolderBrowser.SelectedPath
    87. End If
    88. End Sub
    89. Private Sub PictureBox6_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox6.Click
    90. 'Fragt auf Webspace die version ab und wenn es Änderungen gab lädt er die neue version des Launchers runter
    91. 'Lässt bei Änderungen am Launcher eine neue Version downloaden
    92. Dim iox As New StreamReader(Application.ExecutablePath & "\data\version.txt", Encoding.Default)
    93. Dim ot As String = iox.ReadToEnd
    94. iox.Close()
    95. If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
    96. MessageBox.Show("Der Launcher ist auf dem neuesten Stand!")
    97. Else
    98. 'Link/Pfad zum Launcher.rar
    99. SendMessage(ProgressBar1.Handle.ToInt32, 1040, 2, 0)
    100. Timer1.Start()
    101. client.DownloadFileAsync(New Uri("http://launcher.domain.de/update/TerranTitansLauncher.rar"), Application.ExecutablePath & "\TerranTitansLauncher.rar")
    102. AddHandler client.DownloadProgressChanged, AddressOf DownloadProgress
    103. End If
    104. End Sub
    105. Private Sub PictureBox7_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox7.Click
    106. 'Modpack Downloaden.Link/Pfad zu Modpack/Missionpbo File
    107. SendMessage(ProgressBar1.Handle.ToInt32, 1040, 2, 0)
    108. Timer1.Start()
    109. client.DownloadFileAsync(New Uri("http://launcher.domain.de/update/Altis_Life.Altis.pbo"), Application.ExecutablePath & "\mission\Altis_Life.Atlis.pbo")
    110. AddHandler client.DownloadProgressChanged, AddressOf DownloadProgress
    111. End Sub
    112. Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
    113. ProgressBar1.Increment(1)
    114. End Sub
    115. Private Sub Label1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Label1.Click
    116. Label1.Text = File.ReadAllText("version.txt")
    117. End Sub
    118. #Region "MouseEnter/Leave"
    119. Private Sub PictureBox1_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.MouseEnter
    120. PictureBox1.BackgroundImage = My.Resources.X
    121. End Sub
    122. Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.MouseLeave
    123. PictureBox1.BackgroundImage = Nothing
    124. End Sub
    125. Private Sub PictureBox2_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox2.MouseEnter
    126. PictureBox2.BackgroundImage = My.Resources.Minimieren
    127. End Sub
    128. Private Sub PictureBox2_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox2.MouseLeave
    129. PictureBox2.BackgroundImage = Nothing
    130. End Sub
    131. Private Sub PictureBox3_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox3.MouseEnter
    132. PictureBox3.BackgroundImage = My.Resources.Spielen
    133. End Sub
    134. Private Sub PictureBox3_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox3.MouseLeave
    135. PictureBox3.BackgroundImage = Nothing
    136. End Sub
    137. Private Sub PictureBox4_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox4.MouseEnter
    138. PictureBox4.BackgroundImage = My.Resources.Speichern
    139. End Sub
    140. Private Sub PictureBox4_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox4.MouseLeave
    141. PictureBox4.BackgroundImage = Nothing
    142. End Sub
    143. Private Sub PictureBox5_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox5.MouseEnter
    144. PictureBox5.BackgroundImage = My.Resources.Suchen
    145. End Sub
    146. Private Sub PictureBox5_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox5.MouseLeave
    147. PictureBox5.BackgroundImage = Nothing
    148. End Sub
    149. Private Sub PictureBox6_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox6.MouseEnter
    150. PictureBox6.BackgroundImage = My.Resources.Update
    151. End Sub
    152. Private Sub PictureBox6_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox6.MouseLeave
    153. PictureBox6.BackgroundImage = Nothing
    154. End Sub
    155. Private Sub PictureBox7_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox7.MouseEnter
    156. PictureBox7.BackgroundImage = My.Resources.Download
    157. End Sub
    158. Private Sub PictureBox7_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox7.MouseLeave
    159. PictureBox7.BackgroundImage = Nothing
    160. End Sub
    161. #End Region
    162. End Class



    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „asusdk“ ()

    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Schon mal danke für eure Hilfe.

    Ich habe jedoch immer noch das Problem, das bei Label2 die kb von kb nicht angezeigt werden. Das Label ändert sich nicht. Wenn man auf Update oder Download drückt...

    Und gäbe es die Möglichkeit, den Onlinestatus des Downloadservers und des Arma3 Server anzeigen zu lassen?

    @Trade Danke für die Information. Aber wir bräuchten den Launcher doch, da die Servermission etwas größer ist und der Launcher würde den SPielern das Ganze halt um einiges vereinfachen und beschleunigen.
    Gäbe es keine Möglichkeit den Launcher an sich etwas sicherer zu machen?
    Danke schon mal für eure Hilfe.

    Gruß
    Tecko
    Ich weiß nicht, was Du da rausgelesen hast, aber das war eigentlich mein Ziel, dass Ihr das vernünftig absichert. ;)
    Und wie das geht steht ja im Thread unten.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich würd schon gerne drüber schauen und versuchen dir zu helfen, aber A: hab ich die Bilder nicht, (müsste selbst welche erstellen(nervig) B: kann ich keine Downloadbezogene Funktion testen wenn die entsprechende Domain entffernt wurde.

    Zippe am besten mal deinen Projektordner und häng den hier an, dann kann man in aller Ruhe gucken wie man dir helfen kann

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Hänge die mal an.

    Der Server, wo ich den Onlinestatus gerne im Launcher angezeigt haben wollen würde wäre dieser:
    62.141.39.158:2302 (Arma3) Dieser ist momentan noch offline. Wir aber gg 18 Uhr online sein.
    Und Downloadserver also Webspace: w015c0a5.kasserver.com

    Der momentane Stand ist von deinem letzten geposteten Code...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tecko“ ()

    Jap das komplett blanko ist Top, einiges ist ja leider etwas "schief" angeordnet, welche schriftart usw. haste denn verwendet ? also für die Buttons und den enthaltenen Text ?

    p.S.: aktueller Zwischenstand:


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Imports System.Net
    4. Public Class TerranTitansLauncher
    5. #Region "Deklarationen"
    6. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    7. Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\TerranTitansLauncher")
    8. Dim totalbytes As Double
    9. Dim bytes As Double
    10. Friend WithEvents MyWebClient As New WebClient
    11. #End Region
    12. Private Sub TerranTitansLauncher_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    13. 'So werden alle PictureBoxen angesprochen und du kannst mit Pic.() agieren als wäre es ein Pic
    14. 'spart dir einige Zeilen Code
    15. For Each Pic As PictureBox In Controls.OfType(Of PictureBox)
    16. Pic.Parent = Me
    17. Pic.BackColor = Color.Transparent
    18. Next
    19. '_____________________________________________________________________________________________
    20. TextBox1.Text = File.ReadAllText(Application.StartupPath & "\data\pfad.txt")
    21. TextBox2.Text = File.ReadAllText(Application.StartupPath & "\data\para.txt")
    22. 'Macht das gleiche wie:
    23. 'My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "Version", "1.0.0")
    24. 'Den benutzten Key haben wir aber oben im Bereich Deklarationen bereits spezifiziert, so das wir die
    25. 'benötigten Zeilen um einen Schlüssel zu setzen oder zu lesen übersichtlicher gestalten können
    26. key.SetValue("Version", "1.0.0")
    27. '____________________________________________________________________________________________________
    28. 'hier bitte euren Link/Pfad angeben zur version.txt
    29. MyWebClient.DownloadFile("http://launcher.terrantitans.net/version/version.txt", Application.StartupPath & "\data\version.txt")
    30. 'hier hattest du einen riesen Codeblock, indem du die Datei gleich 2 unterschiedliche Male
    31. 'eingelesen hast, jeweils mit einem eigenen StreamReader, ot kann hiermit deutlich leichter
    32. 'gefüllt werden
    33. 'Dim ot As String = File.ReadAllText(Application.StartupPath & "\data\Version.txt")
    34. 'Den Vergleich zwischen dem Registry Eintrag und der aus der Version.txt ausgelesenen
    35. 'Version machen wir diesmal ers im Form1_Shown Sub
    36. End Sub
    37. Private Sub TerranTitansLauncher_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    38. Dim ot As String = File.ReadAllText(Application.StartupPath & "\data\Version.txt")
    39. If ot <> key.GetValue("Version") Then
    40. MessageBox.Show("Update Verfügbar")
    41. End If
    42. End Sub
    43. Private Sub MyWebClient_DownloadProgressChanged(ByVal sender As Object, ByVal e As Net.DownloadProgressChangedEventArgs) Handles MyWebClient.DownloadProgressChanged
    44. ProgressBar1.Value = e.ProgressPercentage
    45. totalbytes = e.TotalBytesToReceive / 1024
    46. bytes = e.BytesReceived / 1024
    47. labProgress.Text = bytes.ToString & " kb von " & totalbytes.ToString & " kb"
    48. If e.BytesReceived = e.TotalBytesToReceive Then
    49. labProgress.Text = ("Download abgeschlossen")
    50. ProgressBar1.Value = 0
    51. MessageBox.Show("Der Download war Erfolgreich!")
    52. End If
    53. End Sub
    54. Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseDown
    55. If (e.Button = MouseButtons.Left) Then
    56. Capture = False
    57. WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    58. Else : End If
    59. End Sub
    60. Private Sub PictureBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.Click
    61. Application.Exit()
    62. End Sub
    63. Private Sub PictureBox2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox2.Click
    64. WindowState = FormWindowState.Minimized
    65. End Sub
    66. Private Sub PictureBox3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox3.Click
    67. 'Modpack/s und IP einfügen
    68. 'Staret das spiel und lässt auf den server connecten
    69. Process.Start(TextBox1.Text & "\arma3battleye.exe ", " 0 1 -connect=serverip " & TextBox2.Text)
    70. End Sub
    71. Private Sub PictureBox4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox4.Click
    72. 'Speichert Pfad und Startparameter in einer Textdatei
    73. File.WriteAllText(Application.StartupPath & "\data\pfad.txt", TextBox1.Text, Encoding.Default)
    74. File.WriteAllText(Application.StartupPath & "\data\para.txt", TextBox2.Text, Encoding.Default)
    75. End Sub
    76. Private Sub PictureBox5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox5.Click
    77. 'Sorgt dafür das man Pfad suchen kann
    78. Dim FolderBrowser As New FolderBrowserDialog
    79. FolderBrowser.Description = "Bitte wähle deinen Pfad zu Arma 3..."
    80. FolderBrowser.ShowNewFolderButton = True
    81. FolderBrowser.RootFolder = Environment.SpecialFolder.Desktop
    82. FolderBrowser.SelectedPath = Environment.SpecialFolder.Desktop.ToString
    83. If FolderBrowser.ShowDialog = DialogResult.OK Then
    84. TextBox1.Text = FolderBrowser.SelectedPath
    85. End If
    86. End Sub
    87. Private Sub PictureBox6_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox6.Click
    88. 'Fragt auf Webspace die version ab und wenn es Änderungen gab lädt er die neue version des Launchers runter
    89. 'Lässt bei Änderungen am Launcher eine neue Version downloaden
    90. Dim iox As New StreamReader(Application.StartupPath & "\data\version.txt", Encoding.Default)
    91. Dim ot As String = iox.ReadToEnd
    92. iox.Close()
    93. If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
    94. MessageBox.Show("Der Launcher ist auf dem neuesten Stand!")
    95. Else
    96. 'Link/Pfad zum Launcher.rar
    97. SendMessage(ProgressBar1.Handle.ToInt32, 1040, 2, 0)
    98. MyWebClient.DownloadFileAsync(New Uri("http://launcher.terrantitans.net/update/TerranTitansLauncher.rar"), Application.StartupPath & "\TerranTitansLauncher.rar")
    99. End If
    100. End Sub
    101. Private Sub PictureBox7_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox7.Click
    102. 'Modpack Downloaden.Link/Pfad zu Modpack/Missionpbo File
    103. SendMessage(ProgressBar1.Handle.ToInt32, 1040, 2, 0)
    104. Timer1.Start()
    105. MyWebClient.DownloadFileAsync(New Uri("http://launcher.terrantitans.net/update/Altis_Life.Altis.pbo"), Application.StartupPath & "\mission\Altis_Life.Atlis.pbo")
    106. End Sub
    107. Private Sub Label1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles labVersion.Click
    108. labVersion.Text = File.ReadAllText("version.txt")
    109. End Sub
    110. #Region "MouseEnter/Leave"
    111. Private Sub PictureBox1_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.MouseEnter
    112. PictureBox1.BackgroundImage = My.Resources.X
    113. End Sub
    114. Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.MouseLeave
    115. PictureBox1.BackgroundImage = Nothing
    116. End Sub
    117. Private Sub PictureBox2_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox2.MouseEnter
    118. PictureBox2.BackgroundImage = My.Resources.Minimieren
    119. End Sub
    120. Private Sub PictureBox2_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox2.MouseLeave
    121. PictureBox2.BackgroundImage = Nothing
    122. End Sub
    123. Private Sub PictureBox3_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox3.MouseEnter
    124. PictureBox3.BackgroundImage = My.Resources.Spielen
    125. End Sub
    126. Private Sub PictureBox3_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox3.MouseLeave
    127. PictureBox3.BackgroundImage = Nothing
    128. End Sub
    129. Private Sub PictureBox4_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox4.MouseEnter
    130. PictureBox4.BackgroundImage = My.Resources.Speichern
    131. End Sub
    132. Private Sub PictureBox4_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox4.MouseLeave
    133. PictureBox4.BackgroundImage = Nothing
    134. End Sub
    135. Private Sub PictureBox5_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox5.MouseEnter
    136. PictureBox5.BackgroundImage = My.Resources.Suchen
    137. End Sub
    138. Private Sub PictureBox5_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox5.MouseLeave
    139. PictureBox5.BackgroundImage = Nothing
    140. End Sub
    141. Private Sub PictureBox6_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox6.MouseEnter
    142. PictureBox6.BackgroundImage = My.Resources.Update
    143. End Sub
    144. Private Sub PictureBox6_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox6.MouseLeave
    145. PictureBox6.BackgroundImage = Nothing
    146. End Sub
    147. Private Sub PictureBox7_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox7.MouseEnter
    148. PictureBox7.BackgroundImage = My.Resources.Download
    149. End Sub
    150. Private Sub PictureBox7_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox7.MouseLeave
    151. PictureBox7.BackgroundImage = Nothing
    152. End Sub
    153. #End Region
    154. End Class


    die Kb/s werden nun schon mal richtig angezeigt,
    code schon mal etwas "sauberer" und (zumindest meiner persönlichen Meinung nach) einfacher zu lesen/nachzuvollziehen


    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „asusdk“ ()

    so der aktuelle Zwischenstand hängt an

    einige Anpassungen,

    verzichtet nun auf zwischenspeichern in Dateien, nimmt stattdessen direkt die Registry mit ausnahme der neuen Version.txt
    verzicht auf Messageboxen, wenn Update verfügbar erscheint entsprechende Info im Fenster selbst,
    die DownloadInfos für Updates oder den anderen Download erscheinen nur wenn auch etwas gedownloadet wird

    kannst mir ja sagen obs dir so schonmal passt und mir feedback geben ^^
    Dateien
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „asusdk“ ()

    Sieht echt nicht schlecht aus. Danke dir!!!

    Geht das eigentlich wegen den Status der Server?
    Und hast du die Farbe der Progressbar bewusst wieder auf grün gesetzt?

    Ist jetzt nicht sonderlich schlimm, aber wir fanden rot halt passender. Die hat aber komischerweise immer etwas rum gezuckt, nachdem wir sie auf rot gestellt haben.
    and der Sache mit serverstatus arbeite ich grad, wäre nice wenn du beide server (links haste ja schon mal gepostet )
    auf online stellen könntest, progressbar hab ich eher versehentlich auf grün gestellt, ich guck aber das ich da noch eine
    andere einbauen kann die besser aussieht usw.

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    ruf doch mal w015c0a5.kasserver.com in deinem Browser auf, da sagt er service nicht verfügbar,
    und bei der reinen IP die oben im Post steht ist gar nix erreichbar

    gibt es eigentlich einen grund warum das Programm explizit als x86 erstellt wird ?
    mit AnyCpu wird das Prog automatisch für beide erstellt, würde auf 64bit systemen auch flüssiger laufen
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „asusdk“ ()

    Also die sind beide definitiv on.
    Hab auch eine IP vom Downloadserver: 85.13.139.161

    Der Arma Server wird laut Gametracker auch als online angezeigt:


    Und zu zweitens.... Hab ich ehrlich gesagt nicht wirklich Ahnung. Hab das Ganze mir mehr aus dem ein oder anderen Tutorial zusammengebastelt. Bzw. Foren durchstöbert...
    gut also der Status vom download server kann nun schonmal überwachtt werden, beim gameserver vermute ich mal das dieser den UDP nutzt und nicht TCP, das wird schwierig

    kannst du bitte mal beide server offline schicken pls ?

    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „asusdk“ ()