static int Main(string[] args) { if (!DicomDemoSettingsManager.Is64Process()) { _demoName = "LEADTOOLS PACS Configuration Demo (32 bit)"; } else { _demoName = "LEADTOOLS PACS Configuration Demo (64 bit)"; } if (DemosGlobal.MustRestartElevated()) { DemosGlobal.TryRestartElevated(args); return(0); } ReadCommandLine(args); MySettings mySettings = new MySettings(); if (_bInitialize) { #if !FOR_DOTNET4 if (false == DemosGlobal.IsDotNet35Installed()) { return(0); } #endif MyUtils.RemoveConfigurationFiles(); MyUtils.RemoveGlobalPacsConfig(); mySettings.Save(); return(0); } bool showUI = !_bUninstall && !_bInitialize; #if !FOR_DOTNET4 bool dotNet35Installed = DemosGlobal.IsDotNet35Installed(); if (showUI && !dotNet35Installed) { Messager.ShowWarning(null, ".NET Framework 3.5 could not be found on this machine.\n\nPlease install the .NET Framework 3.5 runtime and try again. This program will now exit."); } if (!dotNet35Installed) { return(0); } #endif mySettings.Load(); #if LEADTOOLS_V19_OR_LATER if (showUI) { if (!Support.SetLicense()) { return(-1); } } #endif // If calling with the /uninstall flag, do not display the nag message if (_bUninstall == false) { if (RasterSupport.KernelExpired) { return(-1); } } #if LEADTOOLS_V175_OR_LATER if (showUI) { if (RasterSupport.IsLocked(RasterSupportType.DicomCommunication)) { MessageBox.Show(String.Format("{0} Support is locked!", RasterSupportType.DicomCommunication.ToString()), "Warning"); return(-1); } } #else if (RasterSupport.IsLocked(RasterSupportType.MedicalNet)) { MessageBox.Show(String.Format("{0} Support is locked!", RasterSupportType.MedicalNet.ToString()), "Warning"); return(-1); } if (RasterSupport.IsLocked(RasterSupportType.MedicalServer)) { MessageBox.Show(String.Format("{0} Support is locked!", RasterSupportType.MedicalServer.ToString()), "Warning"); return(-1); } #endif //_admin = new ServiceAdministrator(_baseDir); //_admin.Unlock(Support.MedicalServerKey); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); #if (LEADTOOLS_V20_OR_LATER) if (DemosGlobal.IsDotNet45OrLaterInstalled() == false) { MessageBox.Show("To run this application, you must first install Microsoft .NET Framework 4.5 or later.", "Microsoft .NET Framework 4.5 or later Required", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(-1); } #endif //Utils.EngineStartup(); DicomEngine.Startup(); if (_bUninstall) { try { using (ServiceAdministrator serviceAdmin = CreateServiceAdministrator()) { MyUtils.UninstallAllDicomServersSilent(serviceAdmin); MyUtils.RemoveConfigurationFiles(); } } catch (Exception) { } } else { string missingDbComponents; DialogResult result = DialogResult.Yes; Messager.Caption = _demoName; string platform = "32-bit"; if (DicomDemoSettingsManager.Is64Process()) { platform = "64-bit"; } string [] productsToCheck = new string[] { DicomDemoSettingsManager.ProductNameDemoServer, DicomDemoSettingsManager.ProductNameWorkstation, DicomDemoSettingsManager.ProductNameStorageServer }; bool isDbConfigured = GlobalPacsUpdater.IsDbComponentsConfigured(productsToCheck, out missingDbComponents); if (!isDbConfigured) // databases not configured { string message = "The following databases are not configured:\n\n{0}\nRun the {1} CSPacsDatabaseConfigurationDemo to configure the missing databases then run this demo again.\n\nDo you want to run the {2} CSPacsDatabaseConfigurationDemo wizard now?"; message = string.Format(message, missingDbComponents, platform, platform); result = Messager.ShowQuestion(null, message, MessageBoxButtons.YesNo); if (DialogResult.Yes == result) { RunDatabaseConfigurationDemo(); } } mySettings._settings.FirstRun = false; mySettings.Save(); // Add event handler for handling UI thread exceptions to the event Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); // Set the unhandled exception mode to force all Windows Forms errors to go through our handler. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); // Add the event handler for handling non-UI thread exceptions to the event. AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); try { Application.Run(new MainForm()); } catch (FileNotFoundException ex) { MessageBox.Show("File not found exception.\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } DicomEngine.Shutdown(); return(0); }
static int Main(string[] args) { #if LEADTOOLS_V19_OR_LATER if (!Support.SetLicense()) { return(0); } #else Support.SetLicense(); if (RasterSupport.KernelExpired) { return(0); } #endif Mutex m; if (DemosGlobal.MustRestartElevated()) { DemosGlobal.TryRestartElevated(args); return(0); } #if !FOR_DOTNET4 bool dotNet35Installed = DemosGlobal.IsDotNet35Installed(); if (!dotNet35Installed) { return(0); } #endif bool ok; #if LEADTOOLS_V175_OR_LATER m = new Mutex(true, "LEADTOOLS_V175_OR_LATER", out ok); if (!ok) { return(1); } #else SingleInstanceController controller; #endif Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); #if LEADTOOLS_V175_OR_LATER if (RasterSupport.IsLocked(RasterSupportType.DicomCommunication)) #else if (RasterSupport.IsLocked(RasterSupportType.MedicalNet)) #endif { MessageBox.Show("Support for LEADTOOLS PACS Module is locked!\nServer Manager cannot run!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(-1); } #if (LEADTOOLS_V20_OR_LATER) if (DemosGlobal.IsDotNet45OrLaterInstalled() == false) { MessageBox.Show("To run this application, you must first install Microsoft .NET Framework 4.5 or later.", "Microsoft .NET Framework 4.5 or later Required", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(-1); } #endif { string message = string.Empty; string[] productsToCheck = new string[] { DicomDemoSettingsManager.ProductNameStorageServer }; bool dbConfigured = GlobalPacsUpdater.IsDbComponentsConfigured(productsToCheck, out message); if (!dbConfigured && !RequestUserToConfigureDbSucess(message)) { return(-1); } if (!GlobalPacsUpdater.IsProductDatabaseUpTodate(DicomDemoSettingsManager.ProductNameDemoServer) && !RequestUserToUpgradeDbSucess()) { return(-1); } if (!ok) { return(-1); } } BaseDir = Path.GetFullPath(GetWorkingDirectory()).ToLower(); DicomEngine.Startup(); DicomNet.Startup(); #if !LEADTOOLS_V175_OR_LATER controller = new SingleInstanceController(); controller.Run(Environment.GetCommandLineArgs()); #else try { Application.Run(new MainForm()); } catch (FileNotFoundException ex) { MessageBox.Show("File not found exception.\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } #endif DicomNet.Shutdown(); DicomEngine.Shutdown(); #if LEADTOOLS_V175_OR_LATER GC.KeepAlive(m); #endif return(0); }
/// <summary> /// Checks if the Storage server DB is configured/created /// </summary> /// <returns></returns> public static bool IsDatabaseConfigured( ) { string missingDb; return(GlobalPacsUpdater.IsDbComponentsConfigured(new string [] { DicomDemoSettingsManager.ProductNameStorageServer }, out missingDb)); }
private static bool RequestUserToConfigureDbSucess(string missingDbComponents) { string message; DialogResult result; string Caption = "Warning"; string pacsDatabaseConfigDemoFileName = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), PacsDatabaseConfigurationDemoNames[0]); if (!File.Exists(pacsDatabaseConfigDemoFileName) && PacsDatabaseConfigurationDemoNames.Length > 1) { pacsDatabaseConfigDemoFileName = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), PacsDatabaseConfigurationDemoNames[1]); } message = "The following databases are not configured:\n\n{0}\nRun the " + PacsDatabaseConfigurationDemoNames[0] + " to configure the missing databases.\n\n" + "Do you want to run the " + PacsDatabaseConfigurationDemoNames[0] + " wizard now?"; message = string.Format(message, missingDbComponents); result = MessageBox.Show(message, Caption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (DialogResult.Yes == result) { if (File.Exists(pacsDatabaseConfigDemoFileName)) { Process dbConfigProcess; dbConfigProcess = new Process(); dbConfigProcess.StartInfo.FileName = pacsDatabaseConfigDemoFileName; dbConfigProcess.Start(); dbConfigProcess.WaitForExit(); string[] productsToCheck = new string[] { DicomDemoSettingsManager.ProductNameStorageServer }; bool isDbConfigured = GlobalPacsUpdater.IsDbComponentsConfigured(productsToCheck, out missingDbComponents); if (!isDbConfigured) { MessageBox.Show("Database is not configured.", Caption, MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { MessageBox.Show("Could not find the " + PacsDatabaseConfigurationDemoNames[0] + " wizard", Caption, MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } else { return(false); } return(true); }
static void Main() { // Still want to let this application run with an expired license (as this is an enterprise level application), but in very a limited mode // For example, the user should be able to view the log //Support.SetLicense(); //if (Support.KernelExpired) // return; InitializeLicense(); if (ProcessChecker.IsOnlyProcess(Shell.storageServerName)) { #if (LEADTOOLS_V20_OR_LATER) if (DemosGlobal.IsDotNet45OrLaterInstalled() == false) { MessageBox.Show("To run this application, you must first install Microsoft .NET Framework 4.5 or later.", "Microsoft .NET Framework 4.5 or later Required", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } #endif Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); PacsProduct.ProductName = DicomDemoSettingsManager.ProductNameStorageServer; bool ok; string exeName = Path.GetFileNameWithoutExtension(Application.ExecutablePath); if (Demos.DemosGlobal.Is64Process( )) { exeName += "64"; } else { exeName += "32"; } Mutex m = new Mutex(true, exeName, out ok); #if !TUTORIAL_CUSTOM_DATABASE && !LEADTOOLS_V19_OR_LATER_MEDICAL_EXTERNAL_STORE CheckPacsConfigDemo(); #endif string globalPacsConfigPath = DicomDemoSettingsManager.GlobalPacsConfigFullFileName; if (File.Exists(globalPacsConfigPath)) { try { if (false == UpgradeConfigFiles()) { return; } } catch (Exception ex) { string msg = string.Format("Upgrade Failed!\n\n{0}", ex.Message); MessageBox.Show(msg, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } try { string message = string.Empty; string[] productsToCheck = new string[] { DicomDemoSettingsManager.ProductNameStorageServer }; bool dbConfigured = GlobalPacsUpdater.IsDbComponentsConfigured(productsToCheck, out message); #if TUTORIAL_CUSTOM_DATABASE // When manually configuring the storage server to use a different database schema, the helper funciton 'IsDbComponentsConfigured' // will incorrectly detect that the database has not been configured. In this case, set 'dbConfigured' to true. // For more details, see the "Changing the LEAD Medical Storage Server to use a different database schema" tutorial. dbConfigured = true; #endif if (!dbConfigured && !RequestUserToConfigureDbSucess(message)) { return; } #if !TUTORIAL_CUSTOM_DATABASE if (!GlobalPacsUpdater.IsProductDatabaseUpTodate(DicomDemoSettingsManager.ProductNameStorageServer) && !RequestUserToUpgradeDbSucess( )) { return; } #endif IOptionsDataAccessAgent optionsAgent; System.Configuration.Configuration configuration = DicomDemoSettingsManager.GetGlobalPacsConfiguration(); if (!ok) { return; } optionsAgent = DataAccessFactory.GetInstance(new OptionsDataAccessConfigurationView(configuration, DicomDemoSettingsManager.ProductNameStorageServer, null)).CreateDataAccessAgent <IOptionsDataAccessAgent>(); DataAccessServices.RegisterDataAccessService <IOptionsDataAccessAgent>(optionsAgent); if (Login(string.Empty, false)) { //#if !DEBUG SplashForm.ShowSplash(); // #endif Shell shell = new Shell( ); shell.Run( ); } } catch (Exception ex) { MessageBox.Show("The program failed to run with the following error:\n\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { #if LEADTOOLS_V19_OR_LATER ProducerConsumerQueue.Instance.Shutdown(true); #endif m.Close( ); } } }