using System; using System.Diagnostics; using System.IO; using System.Text; using MiniSqlQuery.Core; using MiniSqlQuery.Core.Commands; using WeifenLuo.WinFormsUI.Docking; namespace MiniSqlQuery.ExternalTools.Plugin.Commands { public class RunExportSqlCeCommandBase : CommandBase { public RunExportSqlCeCommandBase(string name) : base(name) { } protected void RunExportSqlCe(string fileName) { string file = Path.GetTempFileName() + ".sql"; string conn = Settings.ConnectionDefinition.ConnectionString.Replace(@"""", @"\"""); string arguments = string.Format("\"{0}\" \"{1}\"", conn, file); var tool = new Process(); tool.StartInfo.FileName = fileName; tool.StartInfo.Arguments = arguments; tool.StartInfo.UseShellExecute = false; tool.StartInfo.RedirectStandardOutput = true; tool.StartInfo.RedirectStandardError = true; if (tool.Start()) { string output = tool.StandardOutput.ReadToEnd(); string err = tool.StandardError.ReadToEnd(); if (!string.IsNullOrEmpty(err)) { output = "ERROR:" + Environment.NewLine + err + Environment.NewLine + output; } if (File.Exists(file)) { IEditor editor = Services.Resolve().ResolveEditorInstance(file); editor.FileName = file; editor.LoadFile(); HostWindow.DisplayDockedForm(editor as DockContent); } else { var sb = new StringBuilder(); sb.AppendLine("Error generating the output file."); sb.AppendLine("Process Info:"); sb.AppendFormat(" File Name: {0}", tool.StartInfo.FileName); sb.AppendLine(); sb.AppendFormat(" Arguments: {0}", tool.StartInfo.Arguments); sb.AppendLine(); sb.AppendLine(output); output = sb.ToString(); } if (!string.IsNullOrEmpty(output)) { HostWindow.DisplaySimpleMessageBox(null, output, fileName + " Output"); } } } public override void Execute() { throw new NotImplementedException(); } } }