static void Main (string[] args) { var applicationPath = Assembly.GetEntryAssembly().Location; var options = new StartupOptions(); // Allow this to be specified on the command line. var customProgramDataPath = options.GetOption("-programdata"); var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Info); logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main"); ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; StartApplication(appPaths, logManager, options); NSApplication.Init (); NSApplication.Main (args); }
public static void Main (string[] args) { var applicationPath = Assembly.GetEntryAssembly ().Location; var appPaths = CreateApplicationPaths(applicationPath); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Info); var logger = _logger = logManager.GetLogger("Main"); BeginLog(logger); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; if (PerformUpdateIfNeeded(appPaths, logger)) { logger.Info("Exiting to perform application update."); return; } try { RunApplication(appPaths, logManager); } finally { logger.Info("Shutting down"); _appHost.Dispose(); } }
public static void Main (string[] args) { Application.Init (); var appPaths = CreateApplicationPaths(); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Info); var logger = _logger = logManager.GetLogger("Main"); BeginLog(logger); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; bool createdNew; var runningPath = Process.GetCurrentProcess().MainModule.FileName.Replace(Path.DirectorySeparatorChar.ToString(), string.Empty); //_singleInstanceMutex = new Mutex(true, @"Local\" + runningPath, out createdNew); createdNew = true; if (!createdNew) { _singleInstanceMutex = null; logger.Info("Shutting down because another instance of Media Browser Server is already running."); return; } if (PerformUpdateIfNeeded(appPaths, logger)) { logger.Info("Exiting to perform application update."); return; } try { RunApplication(appPaths, logManager); } finally { logger.Info("Shutting down"); ReleaseMutex(logger); _appHost.Dispose(); } }
public static void Main (string[] args) { //GetEntryAssembly is empty when running from a mkbundle package #if MONOMKBUNDLE var applicationPath = GetExecutablePath(); #else var applicationPath = Assembly.GetEntryAssembly ().Location; #endif var commandArgs = Environment.GetCommandLineArgs(); // Allow this to be specified on the command line. var customProgramDataPath = commandArgs.ElementAtOrDefault(1); var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Info); logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main"); BeginLog(logger); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; if (PerformUpdateIfNeeded(appPaths, logger)) { logger.Info("Exiting to perform application update."); return; } try { RunApplication(appPaths, logManager); } finally { logger.Info("Shutting down"); _appHost.Dispose(); } }
private static bool InstallUpdatePackage(ApplicationPaths appPaths, NlogManager logManager) { string updateArchive = Path.Combine(appPaths.TempUpdatePath, Constants.MbTheaterPkgName + ".zip"); if (File.Exists(updateArchive)) { // Update is there - execute update try { new ApplicationUpdater().UpdateApplication( appPaths, updateArchive, logManager.GetLogger("ApplicationUpdater"), string.Empty); // And just let the app exit so it can update return true; } catch (Exception e) { MessageBox.Show(string.Format("Error attempting to update application.\n\n{0}\n\n{1}", e.GetType().Name, e.Message)); } } return false; }
private static bool LaunchApplication(ApplicationPaths appPaths, NlogManager logManager) { #if !DEBUG ILogger logger = logManager.GetLogger("App"); try { #endif using (var appHost = new ApplicationHost(appPaths, logManager)) { appHost.Init(new Progress<double>()).Wait(); if (!appHost.TheaterConfigurationManager.Configuration.IsStartupWizardCompleted) { bool completed = appHost.RunStartupWizard(); if (completed) { appHost.TheaterConfigurationManager.Configuration.IsStartupWizardCompleted = true; appHost.TheaterConfigurationManager.SaveConfiguration(); appHost.Restart().Wait(); } else { appHost.Shutdown().Wait(); } } else { appHost.RunUserInterface(); } return appHost.RestartOnExit; } #if !DEBUG } catch (Exception ex) { logger.ErrorException("Error launching application", ex); MessageBox.Show("There was an error launching Media Browser Theater: " + ex.Message); // Shutdown the app with an error code Environment.Exit(1); return false; } #endif }
public static void Main(string[] args) { Mutex singleInstanceMutex = null; bool restartOnExit = false; try { bool createdNew; singleInstanceMutex = new Mutex(true, @"Local\" + typeof (Program).Assembly.GetName().Name, out createdNew); if (!createdNew) { singleInstanceMutex = null; return; } string appPath = Process.GetCurrentProcess().MainModule.FileName; var appPaths = new ApplicationPaths(appPath); var logManager = new NlogManager(appPaths.LogDirectoryPath, "theater"); logManager.ReloadLogger(LogSeverity.Debug); bool updateInstalling = InstallUpdatePackage(appPaths, logManager); if (!updateInstalling) { restartOnExit = LaunchApplication(appPaths, logManager); } } finally { if (singleInstanceMutex != null) { singleInstanceMutex.ReleaseMutex(); singleInstanceMutex.Close(); singleInstanceMutex.Dispose(); } } if (restartOnExit) { Application.Restart(); } }
public static void Main() { bool createdNew; _singleInstanceMutex = new Mutex(true, @"Local\" + typeof(App).Assembly.GetName().Name, out createdNew); if (!createdNew) { _singleInstanceMutex = null; return; } // Look for the existence of an update archive var appPaths = new ApplicationPaths(); var logManager = new NlogManager(appPaths.LogDirectoryPath, "theater"); logManager.ReloadLogger(LogSeverity.Debug); var updateArchive = Path.Combine(appPaths.TempUpdatePath, Constants.MbTheaterPkgName + ".zip"); if (File.Exists(updateArchive)) { // Update is there - execute update try { new ApplicationUpdater().UpdateApplication(MBApplication.MBTheater, appPaths, updateArchive, logManager.GetLogger("ApplicationUpdater"), string.Empty); // And just let the app exit so it can update return; } catch (Exception e) { MessageBox.Show(string.Format("Error attempting to update application.\n\n{0}\n\n{1}", e.GetType().Name, e.Message)); } } var application = new App(appPaths, logManager); application.Run(); }
public static void Main() { var startFlag = Environment.GetCommandLineArgs().ElementAtOrDefault(1); _isRunningAsService = string.Equals(startFlag, "-service", StringComparison.OrdinalIgnoreCase); var appPaths = CreateApplicationPaths(_isRunningAsService); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Info); var logger = _logger = logManager.GetLogger("Main"); BeginLog(logger, appPaths); // Install directly if (string.Equals(startFlag, "-installservice", StringComparison.OrdinalIgnoreCase)) { logger.Info("Performing service installation"); InstallService(logger); return; } // Restart with admin rights, then install if (string.Equals(startFlag, "-installserviceasadmin", StringComparison.OrdinalIgnoreCase)) { logger.Info("Performing service installation"); RunServiceInstallation(); return; } // Uninstall directly if (string.Equals(startFlag, "-uninstallservice", StringComparison.OrdinalIgnoreCase)) { logger.Info("Performing service uninstallation"); UninstallService(logger); return; } // Restart with admin rights, then uninstall if (string.Equals(startFlag, "-uninstallserviceasadmin", StringComparison.OrdinalIgnoreCase)) { logger.Info("Performing service uninstallation"); RunServiceUninstallation(); return; } AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; RunServiceInstallationIfNeeded(); var currentProcess = Process.GetCurrentProcess(); if (IsAlreadyRunning(currentProcess)) { logger.Info("Shutting down because another instance of Media Browser Server is already running."); return; } if (PerformUpdateIfNeeded(appPaths, logger)) { logger.Info("Exiting to perform application update."); return; } try { RunApplication(appPaths, logManager, _isRunningAsService); } finally { OnServiceShutdown(); } }
/// <summary> /// Defines the entry point of the application. /// </summary> public static void Main() { var options = new StartupOptions(); _isRunningAsService = options.ContainsOption("-service"); if (_isRunningAsService) { //_canRestartService = CanRestartWindowsService(); } var currentProcess = Process.GetCurrentProcess(); var applicationPath = currentProcess.MainModule.FileName; var architecturePath = Path.Combine(Path.GetDirectoryName(applicationPath), Environment.Is64BitProcess ? "x64" : "x86"); Wand.SetMagickCoderModulePath(architecturePath); var success = SetDllDirectory(architecturePath); var appPaths = CreateApplicationPaths(applicationPath, _isRunningAsService); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Debug); logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main"); ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); // Install directly if (options.ContainsOption("-installservice")) { logger.Info("Performing service installation"); InstallService(applicationPath, logger); return; } // Restart with admin rights, then install if (options.ContainsOption("-installserviceasadmin")) { logger.Info("Performing service installation"); RunServiceInstallation(applicationPath); return; } // Uninstall directly if (options.ContainsOption("-uninstallservice")) { logger.Info("Performing service uninstallation"); UninstallService(applicationPath, logger); return; } // Restart with admin rights, then uninstall if (options.ContainsOption("-uninstallserviceasadmin")) { logger.Info("Performing service uninstallation"); RunServiceUninstallation(applicationPath); return; } AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; RunServiceInstallationIfNeeded(applicationPath); if (IsAlreadyRunning(applicationPath, currentProcess)) { logger.Info("Shutting down because another instance of Emby Server is already running."); return; } if (PerformUpdateIfNeeded(appPaths, logger)) { logger.Info("Exiting to perform application update."); return; } try { RunApplication(appPaths, logManager, _isRunningAsService, options); } finally { OnServiceShutdown(); } }
static void Main() { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; bool createdNew; _singleInstanceMutex = new Mutex(true, @"Local\" + typeof(Program).Assembly.GetName().Name, out createdNew); if (!createdNew) { _singleInstanceMutex = null; return; } var appPath = Process.GetCurrentProcess().MainModule.FileName; // Look for the existence of an update archive var appPaths = new ApplicationPaths(GetProgramDataPath(appPath), appPath); var logManager = new NlogManager(appPaths.LogDirectoryPath, "theater"); logManager.ReloadLogger(LogSeverity.Debug); var updateArchive = Path.Combine(appPaths.TempUpdatePath, UpdatePackageName); if (File.Exists(updateArchive)) { ReleaseMutex(); // Update is there - execute update try { new ApplicationUpdater().UpdateApplication(appPaths, updateArchive, logManager.GetLogger("ApplicationUpdater")); // And just let the app exit so it can update return; } catch (Exception e) { MessageBox.Show(string.Format("Error attempting to update application.\n\n{0}\n\n{1}", e.GetType().Name, e.Message)); } } _logger = logManager.GetLogger("App"); bool supportsTransparency; try { supportsTransparency = NativeWindowMethods.DwmIsCompositionEnabled(); } catch (Exception ex) { _logger.ErrorException("Error in DwmIsCompositionEnabled", ex); supportsTransparency = true; } _logger.Info("OS Supports window transparency?: {0}", supportsTransparency); try { _appHost = new ApplicationHost(appPaths, logManager); var initTask = _appHost.Init(new Progress<Double>()); Task.WaitAll(initTask); var electronTask = StartElectron(appPaths, supportsTransparency); Task.WaitAll(electronTask); var electronProcess = electronTask.Result; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); _mainForm = new MainForm(_logger, _appHost.TheaterConfigurationManager, _appHost, electronProcess); Application.Run(_mainForm); } catch (Exception ex) { _logger.ErrorException("Error launching application", ex); MessageBox.Show("There was an error launching Emby: " + ex.Message); // Shutdown the app with an error code Environment.Exit(1); } finally { ReleaseMutex(); } }
/// <summary> /// Defines the entry point of the application. /// </summary> public static void Main() { var options = new StartupOptions(); _isRunningAsService = options.ContainsOption("-service"); var applicationPath = Process.GetCurrentProcess().MainModule.FileName; var appPaths = CreateApplicationPaths(applicationPath, _isRunningAsService); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Debug); logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main"); BeginLog(logger, appPaths); // Install directly if (options.ContainsOption("-installservice")) { logger.Info("Performing service installation"); InstallService(applicationPath, logger); return; } // Restart with admin rights, then install if (options.ContainsOption("-installserviceasadmin")) { logger.Info("Performing service installation"); RunServiceInstallation(applicationPath); return; } // Uninstall directly if (options.ContainsOption("-uninstallservice")) { logger.Info("Performing service uninstallation"); UninstallService(applicationPath, logger); return; } // Restart with admin rights, then uninstall if (options.ContainsOption("-uninstallserviceasadmin")) { logger.Info("Performing service uninstallation"); RunServiceUninstallation(applicationPath); return; } AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; RunServiceInstallationIfNeeded(applicationPath); var currentProcess = Process.GetCurrentProcess(); if (IsAlreadyRunning(applicationPath, currentProcess)) { logger.Info("Shutting down because another instance of Media Browser Server is already running."); return; } if (PerformUpdateIfNeeded(appPaths, logger)) { logger.Info("Exiting to perform application update."); return; } try { RunApplication(appPaths, logManager, _isRunningAsService, options); } finally { OnServiceShutdown(); } }