Files
ADMIN/VERAGMonitoringUPDATER/Update.vb
2020-11-27 22:57:00 +01:00

102 lines
4.3 KiB
VB.net

Module Update
Dim F_PFAD = "F:\Programme\VERAGMonitoring\"
Sub Main()
If Not System.IO.Directory.Exists(F_PFAD) Then
F_PFAD = getFByIP()
End If
If Not My.Computer.FileSystem.DirectoryExists(F_PFAD) Then
MsgBox("ERROR_UPDATE_02: Update-Daten existieren nicht.", MsgBoxStyle.Critical, "ERROR")
Else
For i As Integer = 1 To 3 Step 1
If Not DoesProcessExists("VERAGMonitoring") Then
delFiles()
FileCopier()
If Not System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory & "VERAGMonitoring.exe") Then
MsgBox("ERROR_UPDATE_03: VERAGMonitoring.exe konnte nicht gestartet werden.", MsgBoxStyle.Critical, "ERROR")
Environment.Exit(0)
End If
Process.Start("VERAGMonitoring.exe")
Environment.Exit(0)
End If
Threading.Thread.Sleep(1000)
Next
MsgBox("ERROR_UPDATE_01: Update konnte nicht durchgeführt werden. VERAGMonitoring.exe nicht beendet?", MsgBoxStyle.Critical, "ERROR")
End If
Environment.Exit(0)
End Sub
Private Sub FileCopier()
For Each file As String In IO.Directory.GetFiles(F_PFAD) ' Ermittelt alle Dateien des Ordners
If cut_file(file).Contains("settings.txt") = False Then
IO.File.Copy(file, AppDomain.CurrentDomain.BaseDirectory & cut_file(file), True) ' Kopiert die Dateien Next
End If
For Each filed As String In IO.Directory.GetDirectories(F_PFAD) ' Ermittelt alle Unterordner des Ordners
My.Computer.FileSystem.CopyDirectory(filed, AppDomain.CurrentDomain.BaseDirectory & cut_file(filed), True)
Next
Next
End Sub
Private Function cut_file(ByVal file As String) As String ' Funktion zum Entfernen der Backslashs / Ordner While file.Contains("\") file = file.Remove(0, 1) End While Return file End Function
While file.Contains("\")
file = file.Remove(0, 1)
End While
Return file
End Function
Private Sub delFiles()
Try
For Each file As String In IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory) ' Ermittelt alle Dateien des Ordners
If cut_file(file).Contains("VERAGMonitoringUPDATER") = False And cut_file(file).Contains("settings.txt") = False Then
My.Computer.FileSystem.DeleteFile(file) 'Löscht das ADMIN-Programm, außer den Updater
End If
Next
For Each file As String In IO.Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory) ' Ermittelt alle Dateien des Ordners
If cut_file(file).Contains("VERAGMonitoringUPDATER") = False Then
System.IO.Directory.Delete(file, True)
End If
Next
Catch ex As Exception
MsgBox("ERROR_UPDATE_04: Fehler beim Löschen", MsgBoxStyle.Critical, "ERROR")
Environment.Exit(0)
End Try
End Sub
Private Function DoesProcessExists(ByVal PName As String) As Boolean
If System.Diagnostics.Process.GetProcessesByName(PName).Length > 0 Then
Return True
End If
Return False
End Function
Function getFByIP() As String
Dim default_F = ""
getFByIP = ""
Try
Dim IPADDR As System.Net.IPAddress
IPADDR = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList(0)
'MsgBox(IPADDR.ToString())
For Each l In System.IO.File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory & "VERAGMonitoringUPDATER_Settings.txt")
If l.Contains("|") Then
Dim sp = l.Split("|")
If IPADDR.ToString.Contains(sp(0).Replace("**", "")) Then
getFByIP = sp(1)
End If
Else
default_F = l
End If
Next
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
If getFByIP = "" Then
If default_F <> "" Then
getFByIP = default_F
Else
getFByIP = F_PFAD
End If
End If
End Function
End Module