Пример #1
0
        private void InitializeApplicationDataDirectory()
        {
            string appFolderName;
            using (var reg = new DataDirectorySettings())
            {
                appFolderName = reg.DataDirectory;
                if (String.IsNullOrEmpty(reg.DataDirectory) || !Directory.Exists(reg.DataDirectory))
                {
                    appFolderName = "HearthstoneTracker";
                    appFolderName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), appFolderName);
                    if (!Directory.Exists(appFolderName))
                    {
                        Directory.CreateDirectory(appFolderName);
                    }
                    reg.DataDirectory = appFolderName;
                }
            }

            var logFolder = Path.Combine(appFolderName, "logs");

            if (!Directory.Exists(logFolder))
            {
                Directory.CreateDirectory(logFolder);
            }

            AppDomain.CurrentDomain.SetData("DataDirectory", appFolderName);
        }
Пример #2
0
        public void ChangeDataFolder()
        {
            var current = (string)AppDomain.CurrentDomain.GetData("DataDirectory");

            var dialog = new CommonOpenFileDialog()
            {
                InitialDirectory = current,
                DefaultDirectory = current,
                IsFolderPicker   = true,
                EnsurePathExists = true
            };
            var result = dialog.ShowDialog();

            if (result == CommonFileDialogResult.Ok)
            {
                var targetDb = Path.Combine(dialog.FileName, "db.sdf");
                if (!File.Exists(targetDb))
                {
                    var msg = MessageBox.Show("Copy existing database to this location?", "Copy database?", MessageBoxButton.YesNo, MessageBoxImage.Question);
                    if (msg == MessageBoxResult.Yes)
                    {
                        var currentDb = Path.Combine(current, "db.sdf");
                        File.Copy(currentDb, targetDb);
                    }
                }

                using (var reg = new DataDirectorySettings())
                {
                    reg.DataDirectory = dialog.FileName;
                }

                MessageBox.Show(
                    "Application will now restart with new data folder location.",
                    "Restarting",
                    MessageBoxButton.OK,
                    MessageBoxImage.Information);

                Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location, "-restarting");
                Application.Current.Shutdown();
            }
        }