Referenzen glattgezogen und MSI Paket neu konfiguriert

This commit is contained in:
Developer01
2026-05-04 14:35:33 +02:00
parent 45159b9ffc
commit bc75ea0d55
24 changed files with 528 additions and 222 deletions

View File

@@ -1,15 +1,16 @@
Imports System.ComponentModel
Imports DigitalData.Modules.License
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language.Utils
Imports System.Globalization
Imports System.Threading
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.EDMI.API
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Imports System.Globalization
Imports System.Threading
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Imports DigitalData.Modules.Language.Utils
Imports DigitalData.Modules.License
Imports DigitalData.Modules.Logging
Imports NLog
Public Class ClassInit
Public _lizenzManager As LicenseManagerLegacy
@@ -21,9 +22,9 @@ Public Class ClassInit
End Class
Public Sub InitLogger()
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, Application.CompanyName, Application.ProductName)
Logger = LogConfig.GetLogger()
_DataASorDB = New ClassDataASorDB(LogConfig)
_LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, Application.CompanyName, Application.ProductName)
_Logger = _LogConfig.GetLogger()
_DataASorDB = New ClassDataASorDB(_LogConfig)
End Sub
Public Function InitDatabase()
@@ -31,7 +32,7 @@ Public Class ClassInit
Dim Database_ECM As MSSQLServer = Nothing
Dim Database_IDB As MSSQLServer = Nothing
If MyConnectionString <> String.Empty Then
Database_ECM = New MSSQLServer(LogConfig, MyConnectionString)
Database_ECM = New MSSQLServer(_LogConfig, MyConnectionString)
Else
MsgBox("No Databaseconnection configured. (First Start or Appdata not accessible)" & vbNewLine & "Basic-Config will be loaded.", MsgBoxStyle.Information)
ERROR_INIT = "NO DB-CONNECTION"
@@ -39,7 +40,7 @@ Public Class ClassInit
InitBasics()
End If
If Database_ECM.DBInitialized = True Then
DatabaseFallback = New DatabaseWithFallback(LogConfig, _Client, Database_ECM, Database_IDB)
DatabaseFallback = New DatabaseWithFallback(_LogConfig, _Client, Database_ECM, Database_IDB)
Return True
Else
ERROR_INIT = "FAILED DBCONNECTION"
@@ -57,7 +58,7 @@ Public Class ClassInit
End If
Try
MyDB_DDECM = New MSSQLServer(LogConfig, MyConnectionString)
MyDB_DDECM = New MSSQLServer(_LogConfig, MyConnectionString)
If MyDB_DDECM.DBInitialized = True Then
Return True
Else
@@ -65,14 +66,14 @@ Public Class ClassInit
End If
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
Return False
End Try
End Function
Public Function InitAppDatabase() As Boolean
Try
DatabaseAppServ = New MSSQLServer(LogConfig, MyConStringAppserv)
DatabaseAppServ = New MSSQLServer(_LogConfig, MyConStringAppserv)
If DatabaseAppServ.DBInitialized = True Then
Return True
Else
@@ -80,7 +81,7 @@ Public Class ClassInit
End If
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
Return False
End Try
End Function
@@ -96,12 +97,12 @@ Public Class ClassInit
If oConfigPrefix.Length > 0 Then
oUserAppDataPath = IO.Path.Combine(Application.UserAppDataPath, oConfigPrefix)
Dim oConfigUtils As New ConfigUtils(LogConfig)
Dim oConfigUtils As New ConfigUtils(_LogConfig)
If oConfigUtils.TestMigrationNeeded(oUserAppDataPath) Then
LogConfig.Debug = True
_LogConfig.Debug = True
oConfigUtils.MigrateConfig(oLegacyAppDataPath, oUserAppDataPath)
LogConfig.Debug = False
_LogConfig.Debug = False
End If
End If
@@ -111,13 +112,13 @@ Public Class ClassInit
oCommonAppDataPath = oStartupPath
End If
CONFIG = New ConfigManager(Of ClassConfig)(LogConfig, oUserAppDataPath, oCommonAppDataPath, oStartupPath)
CONFIG = New ConfigManager(Of ClassConfig)(_LogConfig, oUserAppDataPath, oCommonAppDataPath, oStartupPath)
With CONFIG.Config
MyConnectionString = MSSQLServer.DecryptConnectionString(.ConnectionString)
LogErrorsOnly = .LogErrorsOnly
HotkeySearchKey = .HotkeySearchKey
LogConfig.Debug = Not .LogErrorsOnly
_LogConfig.Debug = Not .LogErrorsOnly
End With
If HotkeySearchKey_via_Server = False Then
HotkeyFunctionKey = CONFIG.Config.HotkeyFunctionKey
@@ -125,7 +126,7 @@ Public Class ClassInit
If CONFIG.Config.ConnectionStringAppServer <> String.Empty Then
MyConStringAppserv = MSSQLServer.DecryptConnectionString(CONFIG.Config.ConnectionStringAppServer)
If InitAppDatabase() Then
Logger.Debug("ConnectionStringAppServer will be used")
_Logger.Debug("ConnectionStringAppServer will be used")
End If
End If
@@ -143,16 +144,16 @@ Public Class ClassInit
If oSplit.Length = 2 Then
oAppServerPort = oSplit(1)
End If
_Client = New Client(LogConfig, oAppServerAddress, oAppServerPort)
_Client = New Client(_LogConfig, oAppServerAddress, oAppServerPort)
If Not IsNothing(_Client) Then
If _Client.Connect() Then
APPSERVER_ACTIVE = True
Else
Logger.Warn($"###!!!APPServer [{CONFIG.Config.AppServerConfig.ToString}] could not be initialized ")
_Logger.Warn($"###!!!APPServer [{CONFIG.Config.AppServerConfig.ToString}] could not be initialized ")
End If
End If
Catch ex As Exception
Logger.Warn($"Could not initialize the AppServer: {ex.Message}")
_Logger.Warn($"Could not initialize the AppServer: {ex.Message}")
End Try
End If
@@ -165,14 +166,14 @@ Public Class ClassInit
DT_CHECKUSER_MODULE = MyDB_DDECM.GetDatatable(oSql)
If DT_CHECKUSER_MODULE.Rows.Count = 0 Then
Logger.Info("DT_CHECKUSER_MODULE.Rows.Count = 0", True)
_Logger.Info("DT_CHECKUSER_MODULE.Rows.Count = 0", True)
'ERROR_STATE = "NO USER"
MsgBox("Sorry - Something went wrong in getting Your rights." & vbNewLine & "Please contact the system administrator!", MsgBoxStyle.Exclamation)
Return False
End If
If DT_CHECKUSER_MODULE.Rows.Count = 1 Then
Logger.Info("Login Username: " & USER_ID, False)
Logger.Info("Login time: " & Now.ToShortDateString, False)
_Logger.Info("Login Username: " & USER_ID)
_Logger.Info("Login time: " & Now.ToShortDateString, False)
USER_ID = DT_CHECKUSER_MODULE.Rows(0).Item("USER_ID")
USER_SURNAME = ObjectEx.NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_SURNAME"), "")
@@ -189,10 +190,10 @@ Public Class ClassInit
USER_IS_ADMIN = ObjectEx.NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("IS_ADMIN"), False)
ADDITIONAL_TITLE = ObjectEx.NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("ADDITIONAL_TITLE"), "")
Logger.Debug("User Id: [{0}]", USER_ID)
Logger.Debug("User Email: [{0}]", USER_EMAIL)
Logger.Debug("User Language: [{0}]", USER_LANGUAGE)
Logger.Debug("User Dateformat: [{0}]", USER_DATE_FORMAT)
_Logger.Debug("User Id: [{0}]", USER_ID)
_Logger.Debug("User Email: [{0}]", USER_EMAIL)
_Logger.Debug("User Language: [{0}]", USER_LANGUAGE)
_Logger.Debug("User Dateformat: [{0}]", USER_DATE_FORMAT)
If ADDITIONAL_TITLE = String.Empty Then
ADDITIONAL_TITLE = My.Application.Info.ProductName
@@ -207,54 +208,152 @@ Public Class ClassInit
Dim oSplitWorkMode As String() = WORKING_MODE.Split("#")
Dim oMode As String
For Each oMode In oSplitWorkMode
Logger.Debug($"oWorkingMode Parameter [{oMode}]")
If oMode = "NO_BASICCONF" Then
BASIC_CONF_VISIBLE = False
ElseIf oMode.StartsWith("NOMATCH_INFO") Then
Try
Dim oResult = oMode.Replace("NOMATCH_INFO=", "")
Logger.Info($"NOMATCH_INFO: {oResult}")
NOMATCH_INFO = CBool(oResult)
Catch ex As Exception
NOMATCH_INFO = False
End Try
ElseIf oMode.StartsWith("HotkeySearchKey") Then
Try
Dim oResult = oMode.Replace("HotkeySearchKey=", "")
Logger.Info($"HotkeySearchKey: {oResult}")
HotkeySearchKey = oResult
HotkeySearchKey_via_Server = True
Catch ex As Exception
HotkeySearchKey = "d"
End Try
ElseIf oMode.StartsWith("NotifyMode") Then
Try
Dim oResult = oMode.Replace("NotifyMode=", "")
Logger.Info($"NotifyMode: {oResult}")
NOTIFY_MODE = oResult
Catch ex As Exception
End Try
Else
Logger.Info($"Wrong oMode: {oMode}")
End If
ProcessWorkingModeParameter(oMode)
Next
Return True
Else
Logger.Info(" - UserId '" & USER_ID & "' not listed in Useradministration!", False)
_Logger.Info(" - UserId '" & USER_ID & "' not listed in Useradministration!")
'MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
'Me.Close()
Dim msg = String.Format("You are not listed in the Useradministration." & vbNewLine & "Please contact the admin.")
MsgBox(msg, MsgBoxStyle.Exclamation)
Return False
End If
oSql = "select CAT_TITLE,CAT_STRING from TBDD_CATALOG"
Dim DT_CATALOG As DataTable
DT_CATALOG = MyDB_DDECM.GetDatatable(oSql)
For Each oROW As DataRow In DT_CATALOG.Rows
If oROW.Item("CAT_TITLE") = "WM_PRAEFIX" Then
WMSUFFIX = oROW.Item("CAT_STRING")
_Logger.Info($"WMSUFFIX from Catalog: {WMSUFFIX}")
End If
Next
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
Return False
End Try
End Function
Private Shared Sub ProcessWorkingModeParameter(oMode As String)
_Logger.Debug($"Processing Working Mode Parameter: {oMode}")
Select Case True
Case oMode = "DEBUG_LOG"
_LogConfig.Debug = True
_Logger.Info("DEBUG_LOG = True")
Case oMode = "IDBWITHWMFS"
SetBooleanParameter(IDB_USES_WMFILESTORE, True, "IDB_USES_WMFILESTORE", LogLevel.Info)
Case oMode = "NO_BASICCONF"
SetBooleanParameter(BASIC_CONF_VISIBLE, False, "BASIC_CONF_VISIBLE", LogLevel.Info)
Case oMode = "SYS_LOCKED_MAINTENANCE"
SetBooleanParameter(SYS_LOCKED_MAINTENANCE, True, "SYS_LOCKED_MAINTENANCE")
Case oMode.StartsWith("IDB_CONID!")
ProcessIDBConnection(oMode)
Case oMode.StartsWith("COPYWM2TEMP")
ProcessBooleanParameter(oMode, "COPYWM2TEMP", COPY_WMFILE_2TEMP, "COPY_WMFILE_2TEMP")
Case oMode.StartsWith("MAP_SHARE_DRIVE")
MAP_SHARE_DRIVE = ExtractParameterValue(oMode, "MAP_SHARE_DRIVE")
_Logger.Info($"MAP_SHARE_DRIVE = {MAP_SHARE_DRIVE}")
Case oMode.StartsWith("MAP_BLACKLIST")
MAP_BLACKLIST = ExtractParameterValue(oMode, "MAP_BLACKLIST")
_Logger.Info($"MAP_BLACKLIST = {MAP_BLACKLIST}")
' Fehlende Alt-Fälle ergänzt:
Case oMode.StartsWith("NOMATCH_INFO")
Try
Dim oResult = oMode.Replace("NOMATCH_INFO=", "")
_Logger.Info($"NOMATCH_INFO: {oResult}")
NOMATCH_INFO = CBool(oResult)
Catch ex As Exception
NOMATCH_INFO = False
End Try
Case oMode.StartsWith("HotkeySearchKey")
Try
Dim oResult = oMode.Replace("HotkeySearchKey=", "")
_Logger.Info($"HotkeySearchKey: {oResult}")
HotkeySearchKey = oResult
HotkeySearchKey_via_Server = True
Catch ex As Exception
HotkeySearchKey = "d"
End Try
Case oMode.StartsWith("NotifyMode")
Try
Dim oResult = oMode.Replace("NotifyMode=", "")
_Logger.Info($"NotifyMode: {oResult}")
NOTIFY_MODE = oResult
Catch ex As Exception
End Try
Case Else
_Logger.Info($"Unknown Working Mode Parameter: {oMode}")
End Select
End Sub
Private Shared Function ExtractParameterValue(parameterString As String, prefix As String) As String
Return parameterString.Replace($"{prefix}=", "")
End Function
Private Shared Sub SetBooleanParameter(ByRef target As Boolean, value As Boolean, paramName As String, Optional logLevel As LogLevel = LogLevel.Debug)
target = value
LogParameterValue(paramName, value.ToString(), logLevel)
End Sub
Private Shared Sub ProcessBooleanParameter(oMode As String, prefix As String, ByRef target As Boolean, paramName As String)
Dim value = ExtractParameterValue(oMode, prefix)
Try
target = CBool(value)
_Logger.Debug($"{paramName} = {target}")
Catch ex As Exception
target = False
_Logger.Warn($"Failed to parse {paramName}: {ex.Message}")
End Try
End Sub
Private Shared Sub ProcessIntegerParameter(oMode As String, prefix As String, ByRef target As Integer, paramName As String)
Dim value = ExtractParameterValue(oMode, prefix)
Try
target = CInt(value)
_Logger.Debug($"{paramName} = {target}")
Catch ex As Exception
_Logger.Warn($"Failed to parse {paramName}: {ex.Message}. Setting to 0")
target = 0
End Try
End Sub
Private Shared Sub ProcessIDBConnection(oMode As String)
Dim Database_IDB As MSSQLServer = Nothing
Dim CON_ID = oMode.Replace("PM.IDB_CONID!", "")
Dim oConString = DatabaseFallback.GetConnectionString(CON_ID)
CONNECTION_STRING_IDB = oConString
Database_IDB = New MSSQLServer(_LogConfig, CONNECTION_STRING_IDB)
If Database_IDB.DBInitialized = True Then
IDB_ACTIVE = True
_Logger.Info($"IDB is active - IDB-Connection [{CON_ID}]")
DatabaseFallback.InitializeIDB(Database_IDB)
Else
IDB_ACTIVE = False
_Logger.Warn($"Failed to initialize IDB with Connection [{CON_ID}]")
End If
If CONNECTION_STRING_IDB <> "" AndAlso Database_IDB.DBInitialized = True Then
IDB_ACTIVE = True
_Logger.Debug("IDB already initialized and active")
Return
End If
End Sub
Private Shared Sub LogParameterValue(paramName As String, value As String, logLevel As LogLevel)
Select Case logLevel
Case LogLevel.Info
_Logger.Info($"{paramName} = {value}")
Case Else
_Logger.Debug($"{paramName} = {value}")
End Select
End Sub
Private Enum LogLevel
Debug
Info
End Enum
Public Function InitUserLogin(Optional _User As String = "") As Boolean
Try
If _User = "" Then
@@ -283,20 +382,20 @@ Public Class ClassInit
ElseIf DT_CLIENT_USER.Rows.Count = 1 Then
CLIENT_SELECTED = DT_CLIENT_USER.Rows(0).Item("CLIENT_ID")
Else
Logger.Info("User '" & USER_ID & "' not related to a client", True)
_Logger.Info("User '" & USER_ID & "' not related to a client")
ERROR_INIT = "NO CLIENT"
'ERROR_STATE = "NO CLIENT"
Return False
End If
Else
Logger.Info("User '" & USER_ID & "' not related to a client", True)
_Logger.Info("User '" & USER_ID & "' not related to a client")
ERROR_INIT = "NO CLIENT"
'ERROR_STATE = "NO CLIENT"
Return False
End If
Catch ex As Exception
Logger.Info("Unexpected error in checking CLIENT: " & ex.Message)
_Logger.Info("Unexpected error in checking CLIENT: " & ex.Message)
CLIENT_SELECTED = 1
End Try
@@ -305,7 +404,7 @@ Public Class ClassInit
If USER_IN_MODULE = False Then
If USER_IS_ADMIN = False Then
Logger.Info("User: " & USER_ID & " not related to module!", False)
_Logger.Info("User: " & USER_ID & " not related to module!")
Dim msg = String.Format("Sie sind nicht für die Nutzung dieses Moduls freigeschaltet." & vbNewLine & "Bitte setzen Sie sich mit dem Systemadministrator in Verbindung!")
If USER_LANGUAGE <> LANGUAGE_GERMAN Then
@@ -334,7 +433,7 @@ Public Class ClassInit
'frmLoginUserSelect.ShowDialog()
ESC_Hidden = False
If USER_USERNAME <> "" And GHOST_USERID <> 0 Then
Logger.Info("GHOST USER ACTIVE")
_Logger.Info("GHOST USER ACTIVE")
InitUserLogin(USER_USERNAME)
End If
@@ -348,13 +447,13 @@ Public Class ClassInit
and VERSION = '{My.Settings.GDPICTURE_VERSION}' AND ACTIVE = 1"
GDPICTURE_LICENSE = MyDB_DDECM.GetScalarValue(oSQL)
If GDPICTURE_LICENSE = String.Empty Then
Logger.Info($"ATTENTION: GDPICTURE VERSION is nothing. [{oSQL}]")
_Logger.Info($"ATTENTION: GDPICTURE VERSION is nothing. [{oSQL}]")
End If
oSQL = "SELECT LANG_CODE FROM TBDD_GUI_LANGUAGE WHERE ACTIVE = 1 ORDER BY LANG_CODE"
BASEDATA_DT_LANGUAGE = MyDB_DDECM.GetDatatable(oSQL)
Logger.Debug(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False)
_Logger.Debug(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False)
If LICENSE_COUNT < USERCOUNT_LOGGED_IN And LICENSE_EXPIRED = False Then
Dim msg = String.Format("Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!")
@@ -363,12 +462,12 @@ Public Class ClassInit
"Number of licenses: " & LICENSE_COUNT.ToString & vbNewLine & "Please contact Your admin!")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
Logger.Info(" >> The number of logged Users (" & USERCOUNT_LOGGED_IN.ToString & ") exceeds the number of licenses (" & LICENSE_COUNT & ") ", False)
_Logger.Info(" >> The number of logged Users (" & USERCOUNT_LOGGED_IN.ToString & ") exceeds the number of licenses (" & LICENSE_COUNT & ") ", False)
If USER_IS_ADMIN = False Then
'Anmeldung wieder herausnehmen
oSQL = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_ID & " AND MODULE= 'Clipboard-Watcher'"
MyDB_DDECM.ExecuteNonQuery(oSQL)
Logger.Info(" - logged out the user", False)
_Logger.Info(" - logged out the user", False)
Return False
End If
End If
@@ -376,7 +475,7 @@ Public Class ClassInit
Catch ex As Exception
Logger.Info("Unexpected Error in InitUserLogin: " & ex.Message, True)
_Logger.Info("Unexpected Error in InitUserLogin: " & ex.Message, True)
MsgBox("Unexpected Error in InitUserLogin: " & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
@@ -403,7 +502,7 @@ Public Class ClassInit
DT_CONNECTIONS = oDatatable
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
MsgBox("Unexpected Error in Refresh_Connections: " & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
@@ -420,37 +519,37 @@ Public Class ClassInit
DT_USER_PROFILES = MyDB_DDECM.GetDatatable(ProfileSQL)
If DT_USER_PROFILES Is Nothing Or DT_USER_PROFILES.Rows.Count = 0 Then
Logger.Warn("Keine Profile für den User auswertbar. Konfiuration oder SQL prüfen: " + ProfileSQL)
_Logger.Warn("Keine Profile für den User auswertbar. Konfiuration oder SQL prüfen: " + ProfileSQL)
Return S.Es_wurden_noch_keine_Profile_für_den_aktuellen_Benutzer_konfiguriert_
End If
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
MsgBox("Unexpected Error in Refresh_Profile_Links: " & ex.Message, MsgBoxStyle.Critical)
Logger.Warn("SQL so far: " + ProfileSQL)
_Logger.Warn("SQL so far: " + ProfileSQL)
Return S.Fehler_bei_der_Aktualisierung_
End Try
Try
DTPROFILE_REL_PROCESS = MyDB_DDECM.GetDatatable(oProcessSQL)
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
MsgBox("Unexpected Error in Refresh_ProcessLinks: " & ex.Message, MsgBoxStyle.Critical)
Logger.Warn("SQL so far: " + oProcessSQL)
_Logger.Warn("SQL so far: " + oProcessSQL)
Return S.Fehler_bei_der_Aktualisierung_
End Try
Try
DTPROFILE_REL_WINDOW = MyDB_DDECM.GetDatatable(oWindowSQL)
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
MsgBox("Unexpected Error in Refresh_windowLinks: " & ex.Message, MsgBoxStyle.Critical)
Logger.Warn("SQL so far: " + oWindowSQL)
_Logger.Warn("SQL so far: " + oWindowSQL)
Return S.Fehler_bei_der_Aktualisierung_
End Try
Try
DTPROFILE_REL_CONTROL = MyDB_DDECM.GetDatatable(oControlSQL)
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
MsgBox("Unexpected Error in Refresh_ControlLinks: " & ex.Message, MsgBoxStyle.Critical)
Logger.Warn("SQL so far: " + oControlSQL)
_Logger.Warn("SQL so far: " + oControlSQL)
Return S.Fehler_bei_der_Aktualisierung_
End Try