private static void Main(string[] args) { try { Task.Run(() => { //Cache deserializers in another thread new XmlSerializer(typeof(Configuration)); new XmlSerializer(typeof(DebugWorkspace)); }); if (Type.GetType("Mono.Runtime") != null) { Program.IsMono = true; } Program.OriginalFolder = Directory.GetCurrentDirectory(); Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); Application.ThreadException += Application_ThreadException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //Enable TLS 1.0/1.1/1.2 support ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (ConfigManager.GetConfigFile() == null) { //Show config wizard ResourceHelper.LoadResources(Language.English); Application.Run(new frmConfigWizard()); if (ConfigManager.GetConfigFile() == null) { Application.Exit(); return; } } Directory.CreateDirectory(ConfigManager.HomeFolder); Directory.SetCurrentDirectory(ConfigManager.HomeFolder); try { if (!ResourceExtractor.ExtractResources()) { return; } } catch (FileNotFoundException e) { string message = "The Microsoft .NET Framework 4.5 could not be found. Please download and install the latest version of the .NET Framework from Microsoft's website and try again."; switch (ResourceHelper.GetCurrentLanguage()) { case Language.French: message = "Le .NET Framework 4.5 de Microsoft n'a pas été trouvé. Veuillez télécharger la plus récente version du .NET Framework à partir du site de Microsoft et essayer à nouveau."; break; case Language.Japanese: message = "Microsoft .NET Framework 4.5はインストールされていないため、Mesenは起動できません。Microsoft .NET Frameworkの最新版をMicrosoftのサイトからダウンロードして、インストールしてください。"; break; case Language.Russian: message = "Microsoft .NET Framework 4.5 не найден. Пожалуйста загрузите и установите последнюю версию .NET Framework с сайта Microsoft и попробуйте снова."; break; case Language.Spanish: message = "Microsoft .NET Framework 4.5 no se ha encontrado. Por favor, descargue la versión más reciente de .NET Framework desde el sitio de Microsoft y vuelva a intentarlo."; break; case Language.Ukrainian: message = "Microsoft .NET Framework 4.5 не знайдений. Будь ласка завантажте і встановіть останню версію .NET Framework з сайту Microsoft і спробуйте знову."; break; case Language.Portuguese: message = "Microsoft .NET Framework 4.5 não foi encontrado. Por favor, baixe a versão mais recente de .NET Framework do site da Microsoft e tente novamente."; break; case Language.Chinese: message = "找不到 Microsoft .NET Framework 4.5,请访问 Microsoft 官网下载安装之后再试。"; break; } MessageBox.Show(message + Environment.NewLine + Environment.NewLine + e.ToString(), "Mesen-S", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } catch (Exception e) { string message = "An unexpected error has occurred.\n\nError details:\n{0}"; switch (ResourceHelper.GetCurrentLanguage()) { case Language.French: message = "Une erreur inattendue s'est produite.\n\nDétails de l'erreur :\n{0}"; break; case Language.Japanese: message = "予期しないエラーが発生しました。\n\nエラーの詳細:\n{0}"; break; case Language.Russian: message = "Неизвестная ошибка.

Подробно:
{0}"; break; case Language.Spanish: message = "Se ha producido un error inesperado.

Detalles del error:
{0}"; break; case Language.Ukrainian: message = "Невідома помилка.

Детально:
{0}"; break; case Language.Portuguese: message = "Houve um erro inesperado.

Detalhes do erro:
{0}"; break; case Language.Chinese: message = "发生意外错误。\n\n详情:\n{0}"; break; } MessageBox.Show(string.Format(message, e.ToString()), "Mesen-S", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (!RuntimeChecker.TestDll()) { return; } using (SingleInstance singleInstance = new SingleInstance()) { if (singleInstance.FirstInstance || !ConfigManager.Config.Preferences.SingleInstance) { frmMain frmMain = new frmMain(args); singleInstance.ListenForArgumentsFromSuccessiveInstances(); singleInstance.ArgumentsReceived += (object sender, ArgumentsReceivedEventArgs e) => { if (frmMain.IsHandleCreated) { frmMain.BeginInvoke((MethodInvoker)(() => { new CommandLineHelper(e.Args).LoadGameFromCommandLine(); })); } }; Application.Run(frmMain); } else { if (singleInstance.PassArgumentsToFirstInstance(args)) { Process current = Process.GetCurrentProcess(); foreach (Process process in Process.GetProcessesByName(current.ProcessName)) { if (process.Id != current.Id) { Program.SetForegroundWindow(process.MainWindowHandle); break; } } } else { Application.Run(new frmMain(args)); } } } } catch (Exception e) { MesenMsgBox.Show("UnexpectedError", MessageBoxButtons.OK, MessageBoxIcon.Error, e.ToString()); } }
private static void Main(string[] args) { try { AppDomain.CurrentDomain.AssemblyResolve += LoadAssemblies; Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); Application.ThreadException += Application_ThreadException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Directory.CreateDirectory(ConfigManager.HomeFolder); Directory.SetCurrentDirectory(ConfigManager.HomeFolder); try { ResourceHelper.LoadResources(ConfigManager.Config.PreferenceInfo.DisplayLanguage); ResourceManager.ExtractResources(); } catch (FileNotFoundException) { string message = "The Microsoft .NET Framework 4.5 could not be found. Please download and install the latest version of the .NET Framework from Microsoft's website and try again."; switch (ResourceHelper.GetCurrentLanguage()) { case Language.French: message = "Le .NET Framework 4.5 de Microsoft n'a pas été trouvé. Veuillez télécharger la plus récente version du .NET Framework à partir du site de Microsoft et essayer à nouveau."; break; case Language.Japanese: message = "Microsoft .NET Framework 4.5はインストールされていないため、Mesenは起動できません。Microsoft .NET Frameworkの最新版をMicrosoftのサイトからダウンロードして、インストールしてください。"; break; case Language.Russian: message = "Microsoft .NET Framework 4.5 не найден. Пожалуйста загрузите и установите последнюю версию .NET Framework с сайта Microsoft и попробуйте снова."; break; case Language.Spanish: message = "Microsoft .NET Framework 4.5 no se ha encontrado. Por favor, descargue la versión más reciente de .NET Framework desde el sitio de Microsoft y vuelva a intentarlo."; break; case Language.Ukrainian: message = "Microsoft .NET Framework 4.5 не знайдений. Будь ласка завантажте і встановіть останню версію .NET Framework з сайту Microsoft і спробуйте знову."; break; } MessageBox.Show(message, "Mesen", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } catch (Exception e) { string message = "An unexpected error has occurred.\n\nError details:\n{0}"; switch (ResourceHelper.GetCurrentLanguage()) { case Language.French: message = "Une erreur inattendue s'est produite.\n\nDétails de l'erreur :\n{0}"; break; case Language.Japanese: message = "予期しないエラーが発生しました。\n\nエラーの詳細:\n{0}"; break; case Language.Russian: message = "Неизвестная ошибка.

Подробно:
{0}"; break; case Language.Spanish: message = "Se ha producido un error inesperado.

Detalles del error:
{0}"; break; case Language.Ukrainian: message = "Невідома помилка.

Детально:
{0}"; break; } MessageBox.Show(string.Format(message, e.ToString()), "Mesen", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (!RuntimeChecker.TestDll()) { return; } ResourceHelper.UpdateEmuLanguage(); Guid guid = new Guid("{A46606B7-2D1C-4CC5-A52F-43BCAF094AED}"); using (SingleInstance singleInstance = new SingleInstance(guid)) { if (singleInstance.FirstInstance || !Config.ConfigManager.Config.PreferenceInfo.SingleInstance) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Mesen.GUI.Forms.frmMain frmMain = new Mesen.GUI.Forms.frmMain(args); if (Config.ConfigManager.Config.PreferenceInfo.SingleInstance) { singleInstance.ListenForArgumentsFromSuccessiveInstances(); singleInstance.ArgumentsReceived += (object sender, ArgumentsReceivedEventArgs e) => { frmMain.BeginInvoke((MethodInvoker)(() => { frmMain.ProcessCommandLineArguments(e.Args, false); })); }; } Application.Run(frmMain); } else { if (singleInstance.PassArgumentsToFirstInstance(args)) { Process current = Process.GetCurrentProcess(); foreach (Process process in Process.GetProcessesByName(current.ProcessName)) { if (process.Id != current.Id) { Program.SetForegroundWindow(process.MainWindowHandle); break; } } } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Mesen.GUI.Forms.frmMain(args)); } } } } catch (Exception e) { MesenMsgBox.Show("UnexpectedError", MessageBoxButtons.OK, MessageBoxIcon.Error, e.ToString()); } }