// Copyright(c) 2019 pypy. All rights reserved. // // This work is licensed under the terms of the MIT license. // For a copy, see . using System; using System.IO; using System.Windows.Forms; namespace VRCX { public class Program { public static string BaseDirectory { get; private set; } public static string AppDataDirectory { get; private set; } static Program() { BaseDirectory = AppDomain.CurrentDomain.BaseDirectory; AppDataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "VRCX"); if (!Directory.Exists(AppDataDirectory)) { Directory.CreateDirectory(AppDataDirectory); // Migrate config to AppData if (File.Exists(Path.Combine(BaseDirectory, "VRCX.json"))) { File.Move(Path.Combine(BaseDirectory, "VRCX.json"), Path.Combine(AppDataDirectory, "VRCX.json")); File.Copy(Path.Combine(AppDataDirectory, "VRCX.json"), Path.Combine(AppDataDirectory, "VRCX-backup.json")); } if (File.Exists(Path.Combine(BaseDirectory, "VRCX.sqlite3"))) { File.Move(Path.Combine(BaseDirectory, "VRCX.sqlite3"), Path.Combine(AppDataDirectory, "VRCX.sqlite3")); File.Copy(Path.Combine(AppDataDirectory, "VRCX.sqlite3"), Path.Combine(AppDataDirectory, "VRCX-backup.sqlite3")); } } } [STAThread] private static void Main() { try { Run(); } catch (Exception e) { MessageBox.Show(e.ToString(), "PLEASE REPORT TO PYPY", MessageBoxButtons.OK, MessageBoxIcon.Error); Environment.Exit(0); } } private static void Run() { Update.Check(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); SQLite.Instance.Init(); VRCXStorage.Load(); CpuMonitor.Instance.Init(); Discord.Instance.Init(); WebApi.Instance.Init(); LogWatcher.Instance.Init(); CefService.Instance.Init(); VRCXVR.Instance.Init(); Application.Run(new MainForm()); WebApi.Instance.SaveCookies(); VRCXVR.Instance.Exit(); CefService.Instance.Exit(); LogWatcher.Instance.Exit(); WebApi.Instance.Exit(); Discord.Instance.Exit(); CpuMonitor.Instance.Exit(); VRCXStorage.Save(); SQLite.Instance.Exit(); } } }