public ExportFileFlags GetImportFlags() { ExportFileFlags flags = ExportFileFlags.None; try{ using (CombinedFileStream stream = new CombinedFileStream(new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.None))){ string key; while ((key = stream.SkipFile()) != null) { switch (key) { case "config": flags |= ExportFileFlags.Config; break; case "plugin.config": case "plugin.data": flags |= ExportFileFlags.PluginData; break; case "cookies": flags |= ExportFileFlags.Session; break; } } } }catch (Exception e) { LastException = e; flags = ExportFileFlags.None; } return(flags); }
public bool Export(ExportFileFlags flags) { try{ using (CombinedFileStream stream = new CombinedFileStream(new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.None))){ if (flags.HasFlag(ExportFileFlags.UserConfig)) { stream.WriteFile("config", Program.UserConfigFilePath); } if (flags.HasFlag(ExportFileFlags.SystemConfig)) { stream.WriteFile("system", Program.SystemConfigFilePath); } if (flags.HasFlag(ExportFileFlags.PluginData)) { stream.WriteFile("plugin.config", Program.PluginConfigFilePath); foreach (Plugin plugin in plugins.Plugins) { foreach (PathInfo path in EnumerateFilesRelative(plugin.GetPluginFolder(PluginFolder.Data))) { try{ stream.WriteFile(new string[] { "plugin.data", plugin.Identifier, path.Relative }, path.Full); }catch (ArgumentOutOfRangeException e) { FormMessage.Warning("Export Profile", "Could not include a plugin file in the export. " + e.Message, FormMessage.OK); } } } } if (flags.HasFlag(ExportFileFlags.Session)) { stream.WriteFile("cookies", CookiesPath); } stream.Flush(); } return(true); }catch (Exception e) { LastException = e; return(false); } }
public bool Import(ExportFileFlags flags) { try{ HashSet <string> missingPlugins = new HashSet <string>(); using (CombinedFileStream stream = new CombinedFileStream(new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.None))){ CombinedFileStream.Entry entry; while ((entry = stream.ReadFile()) != null) { switch (entry.KeyName) { case "config": if (flags.HasFlag(ExportFileFlags.Config)) { entry.WriteToFile(Program.ConfigFilePath); } break; case "plugin.config": if (flags.HasFlag(ExportFileFlags.PluginData)) { entry.WriteToFile(Program.PluginConfigFilePath); } break; case "plugin.data": if (flags.HasFlag(ExportFileFlags.PluginData)) { string[] value = entry.KeyValue; entry.WriteToFile(Path.Combine(Program.PluginDataPath, value[0], value[1]), true); if (!plugins.IsPluginInstalled(value[0])) { missingPlugins.Add(value[0]); } } break; case "cookies": if (flags.HasFlag(ExportFileFlags.Session)) { entry.WriteToFile(Path.Combine(Program.StoragePath, TempCookiesPath)); IsRestarting = true; } break; } } } if (missingPlugins.Count > 0) { MessageBox.Show("Detected missing plugins when importing plugin data:" + Environment.NewLine + string.Join(Environment.NewLine, missingPlugins), "Importing " + Program.BrandName + " Profile", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (IsRestarting) { Program.Restart(new string[] { Arguments.ArgImportCookies }); } else { Program.ReloadConfig(); } return(true); }catch (Exception e) { LastException = e; return(false); } }
public bool Import(ExportFileFlags flags) { try{ HashSet <string> missingPlugins = new HashSet <string>(); using (CombinedFileStream stream = new CombinedFileStream(new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.None))){ CombinedFileStream.Entry entry; while ((entry = stream.ReadFile()) != null) { switch (entry.KeyName) { case "config": if (flags.HasFlag(ExportFileFlags.UserConfig)) { entry.WriteToFile(Program.UserConfigFilePath); } break; case "system": if (flags.HasFlag(ExportFileFlags.SystemConfig)) { entry.WriteToFile(Program.SystemConfigFilePath); IsRestarting = true; } break; case "plugin.config": if (flags.HasFlag(ExportFileFlags.PluginData)) { entry.WriteToFile(Program.PluginConfigFilePath); } break; case "plugin.data": if (flags.HasFlag(ExportFileFlags.PluginData)) { string[] value = entry.KeyValue; entry.WriteToFile(Path.Combine(Program.PluginDataPath, value[0], value[1]), true); if (!plugins.IsPluginInstalled(value[0])) { missingPlugins.Add(value[0]); } } break; case "cookies": if (flags.HasFlag(ExportFileFlags.Session)) { entry.WriteToFile(Path.Combine(Program.StoragePath, TempCookiesPath)); IsRestarting = true; } break; } } } if (missingPlugins.Count > 0) { FormMessage.Information("Importing TweetDuck Profile", "Detected missing plugins when importing plugin data:\n" + string.Join("\n", missingPlugins), FormMessage.OK); } return(true); }catch (Exception e) { LastException = e; return(false); } }