113 lines
5.1 KiB
VB.net
113 lines
5.1 KiB
VB.net
Imports System.IO.Path
|
|
Imports DigitalData.Modules.Config
|
|
Imports DigitalData.Modules.EDMI.API
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.Logging.LogConfig
|
|
Imports Microsoft.VisualBasic.ApplicationServices
|
|
|
|
Namespace My
|
|
' Für MyApplication sind folgende Ereignisse verfügbar:
|
|
' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
|
|
' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung mit einem Fehler beendet wird.
|
|
' UnhandledException: Wird bei einem Ausnahmefehler ausgelöst.
|
|
' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn die Anwendung bereits aktiv ist.
|
|
' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
|
|
Partial Friend Class MyApplication
|
|
Private Logger As Logger
|
|
|
|
Private ReadOnly CommonAppDataPath As String = Windows.Forms.Application.CommonAppDataPath
|
|
Private ReadOnly StartupPath As String = Windows.Forms.Application.StartupPath
|
|
|
|
Private ReadOnly Property Prefix
|
|
Get
|
|
Return My.Settings.UserConfig_Prefix
|
|
End Get
|
|
End Property
|
|
|
|
Private ReadOnly Property HasPrefix
|
|
Get
|
|
Return TypeOf Prefix Is String AndAlso Prefix.Length > 0
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property UserAppDataPath As String
|
|
Get
|
|
If HasPrefix Then
|
|
Return Combine(Windows.Forms.Application.UserAppDataPath, Prefix)
|
|
Else
|
|
Return Windows.Forms.Application.UserAppDataPath
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property LocalUserConfigPath As String
|
|
Get
|
|
If HasPrefix Then
|
|
Return Combine(Windows.Forms.Application.LocalUserAppDataPath, Prefix)
|
|
Else
|
|
Return Windows.Forms.Application.LocalUserAppDataPath
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub App_Startup() Handles Me.Startup
|
|
Dim oLogConfig As New LogConfig(LogPath:=PathType.CustomPath,
|
|
CustomLogPath:=Combine(LocalUserConfigPath, "Log"),
|
|
CompanyName:="Digital Data",
|
|
ProductName:="ZooFlow",
|
|
FileKeepRangeInDays:=30) With {.Debug = True}
|
|
|
|
' System Config files like Service Url will be saved in %LocalAppdata% so they will remain on the machine
|
|
Dim oConfigManager As New ConfigManager(Of SystemConfig)(oLogConfig, UserAppDataPath, CommonAppDataPath, StartupPath)
|
|
|
|
' Layout files will be saved in %Appdata% (Roaming) so they will be syncronized with the user profile
|
|
Dim oUIConfigPath = IO.Path.Combine(UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
|
|
Dim oUIConfigAlternatePath = IO.Path.Combine(UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
|
|
Dim oUIConfigManager As New ConfigManager(Of UIConfig)(oLogConfig, oUIConfigPath, oUIConfigPath, oUIConfigAlternatePath)
|
|
|
|
LogConfig = oLogConfig
|
|
LogConfig.Debug = True
|
|
|
|
SystemConfigManager = oConfigManager
|
|
UIConfigManager = oUIConfigManager
|
|
|
|
Logger = LogConfig.GetLogger()
|
|
Logger.Debug("Starting ZooFlow...")
|
|
|
|
If oConfigManager.Config.AppServerConfig <> String.Empty Then
|
|
Try
|
|
Dim oSplit() As String = oConfigManager.Config.AppServerConfig.ToString.Split(":"c)
|
|
Dim oAppServerAddress As String = oSplit(0)
|
|
Dim oAppServerPort As Integer = 9000
|
|
If oSplit.Length = 2 Then
|
|
oAppServerPort = oSplit(1)
|
|
End If
|
|
|
|
My.Application.Service.Client = New Client(LogConfig, oAppServerAddress, oAppServerPort)
|
|
If Not IsNothing(My.Application.Service.Client) Then
|
|
My.Application.Service.Client.Connect()
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Warn($"Could not initialize the AppServer: {ex.Message}")
|
|
End Try
|
|
End If
|
|
|
|
Dim oCommandLineArgs As New ClassCommandlineArgs(LogConfig)
|
|
Dim oArgs = Environment.GetCommandLineArgs().Skip(1).ToList()
|
|
oCommandLineArgs.Parse(oArgs)
|
|
|
|
CommandLineFunction = oCommandLineArgs.FunctionName
|
|
CommandLineArguments = oCommandLineArgs.FunctionArgs
|
|
End Sub
|
|
|
|
Public Sub App_Shutdown(sender As Object, e As EventArgs) Handles Me.Shutdown
|
|
Logger.Debug("Shutting down Zooflow..")
|
|
End Sub
|
|
|
|
Private Sub MyApplication_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs) Handles Me.UnhandledException
|
|
Logger.Warn("Unhandled exception occurred: [{0}]", e.Exception.Message)
|
|
Logger.Error(e.Exception)
|
|
End Sub
|
|
|
|
End Class
|
|
End Namespace |