예제 #1
0
        private static void Main(string[] args)
        {
            if (Config.Instance.DisableHardwareSpeedup)
            {
                RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
            }
            if (Config.Instance.EnableDebug)
            {
                DebugHelper.EnableDebug();
            }
            Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");

            if (args.Any(s => s == "AddPermissions"))
            {
                DirectoryHelper.AddCurrentDirectoryWritePermissionInternal();
                return;
            }

            if (args.Length == 3 && args.Any(s => s == "Update"))
            {
                var app = new App();
                app.InitializeComponent();
                AutoUpdater.UpdateInternal(args[1], args[2], app);
                return;
            }

            if (Config.Instance.UseAdmin && !IsRunAsAdmin())
            {
                Process.Start(
                    new ProcessStartInfo(Process.GetCurrentProcess().MainModule.FileName)
                {
                    Verb = "runas"
                });
                return;
            }

            using (var mutex = new Mutex(false,
                                         $"Global\\OrigindLauncher_{Process.GetCurrentProcess().MainModule.FileName.GetHashCode()}"))
            {
                if (!mutex.WaitOne(4000, false))
                {
                    MessageBox.Show("有一个 Origind Launcher 进程正在运行. 这个进程将会退出.");
                    return;
                }
                Trace.WriteLine("Init done.");

                if (args.Any(s => s == "Setup") || !File.Exists(Definitions.ConfigJsonPath) ||
                    Config.Instance.PlayerAccount == null)
                {
                    var app1 = new App();
                    app1.InitializeComponent();
                    app1.Run(new SetupWindow());
                }
                else
                {
                    var app = new App();
                    app.InitializeComponent();
                    ThemeManager.Init();
                    app.Run(new LauncherWindow());
                }
            }
        }