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); }
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(); } }