/// <summary> /// Schedule backup when outlook is closed /// </summary> public void ScheduleBackupOnExit(Office.IRibbonControl control) { var config = BackupSettingsDao.loadSettings(); config.LastRun = new DateTime(); BackupSettingsDao.saveSettings(config); }
/// <summary> /// Saves the current settings from the form to disk /// </summary> /// <returns>true, if save action was successful</returns> private bool saveSettings() { //preserve hidden flags //BackupSettings config = BackupSettingsDao.loadSettings(); if (config == null) { config = new BackupSettings(); } config.DestinationPath = txtDestination.Text; config.Interval = (int)numInterval.Value; config.BackupProgram = txtBackupExe.Text; config.BackupPrefix = txtPrefix.Text; config.BackupSuffix = txtSuffix.Text; config.PostBackupCmd = txtPostBackupCmd.Text; config.BackupAll = cbxBackupAll.Checked; config.CountdownSeconds = (int)numCountdown.Value; if (String.IsNullOrEmpty(txtLastBackup.Text)) { config.LastRun = DateTime.MinValue; } config.Items.Clear(); for (int i = 0; i < lvStores.Items.Count; i++) { if (lvStores.Items[i].Checked) { config.Items.Add(lvStores.Items[i].Text); } } return(BackupSettingsDao.saveSettings(config)); }
private /*async*/ void startAsyncWork() { Console.WriteLine("DoWork Starting"); //await Task.Run(() => Task t = Task.Factory.StartNew(() => { int iError = 0; BackupSettings config = BackupSettingsDao.loadSettings(); BackupTool.setFileLabel(this.lblFilename); BackupTool.setProgressBar(this.pbCopyProgress); BackupTool.setTotalProgressBar(this.pbTotalProgress); BackupTool.setMegaByesPerSecondLabel(this.lblMegaBytesPerSecond); if (config != null && config.LastRun == null) { startCountdown(config, LogToScreen); iError = BackupTool.tryBackup(config, LogToScreen); } else if (config != null && config.LastRun.AddDays(config.Interval) <= DateTime.Now) { startCountdown(config, LogToScreen); iError = BackupTool.tryBackup(config, LogToScreen); } if (iError == 0) { Application.Exit(); } else { BackupTool.CanExit = true; //allow manual closing } }); }
/// <summary> /// Waits, till outlook ends and then starts the backup process /// </summary> /// <param name="config">Stored configuration from outlook plugin</param> /// <param name="log">logging delegate to send error information</param> /// <returns>number of occurred errors</returns> public static int tryBackup(BackupSettings config, Logger log) { int iError = 0; if (config == null) { log("backup not configured"); return(0); } log("Starting backup...please wait..."); try { if (config.Items.Count > 0) { log("Check whether outlooks is still running ..."); if (WaitForProcessEnd(OUTLOOK_PROC, log)) { log("No outlook process found"); iError += doBackup(config, log); if (!String.IsNullOrEmpty(config.PostBackupCmd)) { int iRes = RunPostCmd(config.PostBackupCmd, config.ProfileName, log); iError += iRes; } } else { iError++; log("Error waiting for " + OUTLOOK_PROC); } } else { iError++; log("Error: no files for backup selected"); } //if no errors occurred, save current timestamp if (iError == 0) { config.LastRun = DateTime.Now; BackupSettingsDao.saveSettings(config); } } catch (InstanceAlreadyRunningException) { log("Backup already running..."); iError++; } return(iError); }
static int Main(string[] args) { int RetCode = 0; Dictionary <String, String> argsDict = new Dictionary <String, String>(); if (!parseArgs(args, argsDict)) { showHelp(args); return(0); } if (argsDict.ContainsKey("/register")) { RetCode = registerPlugin(true) ? 0 : 1; } else if (argsDict.ContainsKey("/registersetup")) { RetCode = registerPlugin(false) ? 0 : 1; } else if (argsDict.ContainsKey("/unregister")) { RetCode = unregisterPlugin() ? 0 : 1; } else if (argsDict.ContainsKey("/backupnow")) { int iError = 0; SafeNativeMethods.AttachConsole(SafeNativeMethods.ATTACH_PARENT_PROCESS); try { LogToConsole("Reading settings ..."); BackupSettings config = BackupSettingsDao.loadSettings(); LogToConsole("Reading settings finished"); iError = BackupTool.tryBackup(config, LogToConsole); } catch (Exception e) { LogToConsole(e.Message); LogToConsole(e.StackTrace); } SendKeys.SendWait("{ENTER}"); SafeNativeMethods.FreeConsole(); RetCode = iError; } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } return(RetCode); }
/// <summary> /// Run backup program if neccessary /// </summary> void ThisAddIn_Quit() { try { BackupSettings config = BackupSettingsDao.loadSettings(); //if configuration was done and backup program was configured if (config != null && !String.IsNullOrEmpty(config.BackupProgram)) { //and if not yet backuped or if backup too old, then run program if (config.LastRun == null || config.LastRun.AddDays(config.Interval).AddHours(config.IntervalHours) <= DateTime.Now) { bool configChanged = false; if (config.BackupAll) { //If alles pdf-files should be saved, enumerate them and save to config-file //Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); config.Items.Clear(); var list = BackupUtils.GetStoreLocations(config, Application.Session.Stores); config.Items.AddRange(list.ToArray()); configChanged = true; } if (config.ProfileName != Application.Session.CurrentProfileName) { config.ProfileName = Application.Session.CurrentProfileName; configChanged = true; } if (configChanged) { BackupSettingsDao.saveSettings(config); } try { Process.Start(config.BackupProgram); } catch (Exception e) { System.Windows.Forms.MessageBox.Show(config.BackupProgram + " not found! " + e.Message); } } }//config loaded } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); } }
private void ThisAddIn_Startup(object sender, System.EventArgs e) { ((Outlook.ApplicationEvents_11_Event)Application).Quit += new Outlook.ApplicationEvents_11_QuitEventHandler(ThisAddIn_Quit); //set language to office language //http://blog.sebastianbrand.com/2010/03/vsto-using-net-multi-language-support.html Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(this.Application.LanguageSettings.get_LanguageID(Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDUI)); BackupSettings config = BackupSettingsDao.loadSettings(); Rib.setAccessSettingsAllowed(config.AllowSettingsAccess); }
/// <summary> /// Populate form and display saved settings (if available) /// </summary> /// <param name="sender">not used</param> /// <param name="e">OnLoad-Event-Args</param> private void FBackupSettings_Load(object sender, EventArgs e) { //cleanup txtDestination.Text = ""; lvStores.Items.Clear(); config = BackupSettingsDao.loadSettings(); //Add pst-files to list var list = BackupUtils.GetStoreLocations(config, stores); ListViewItem[] lItem = list.Select(f => new ListViewItem(f + " (" + GetHumanReadableFileSize(f) + ")")) .ToArray(); lvStores.Items.AddRange(lItem); lvStores.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); applySettings(); }
private /*async*/ void startAsyncWork() { Console.WriteLine("DoWork Starting"); //await Task.Run(() => Task t = Task.Factory.StartNew(() => { int iError = 0; BackupSettings config = BackupSettingsDao.loadSettings(); BackupTool.setFileLabel(this.lblFilename); BackupTool.setProgressBar(this.pbCopyProgress); BackupTool.setTotalProgressBar(this.pbTotalProgress); BackupTool.setMegaByesPerSecondLabel(this.lblMegaBytesPerSecond); if (config != null && config.LastRun == null) { startCountdown(config, LogToScreen); iError = BackupTool.tryBackup(config, LogToScreen); } else if (config != null && config.LastRun.AddDays(config.Interval).AddHours(config.IntervalHours) <= DateTime.Now) { startCountdown(config, LogToScreen); iError = BackupTool.tryBackup(config, LogToScreen); } //if (!EventLog.SourceExists(EVENT_SRC)) // EventLog.CreateEventSource(EVENT_SRC, "Application"); if (iError == 0) { //if (sbLogs.Length > 0) // EventLog.WriteEntry(EVENT_SRC, sbLogs.ToString(), EventLogEntryType.Information); Application.Exit(); } else { BackupTool.CanExit = true; //allow manual closing LogToScreen("One or more errors occurred. Please check the messages above and close this window manually."); //if (sbLogs.Length > 0) // EventLog.WriteEntry(EVENT_SRC, sbLogs.ToString(), EventLogEntryType.Warning); } }); }
/// <summary> /// Populate form and display saved settings (if available) /// </summary> /// <param name="sender">not used</param> /// <param name="e">OnLoad-Event-Args</param> private void FBackupSettings_Load(object sender, EventArgs e) { //cleanup txtDestination.Text = ""; lvStores.Items.Clear(); config = BackupSettingsDao.loadSettings(); //Add pst-files to list var list = BackupUtils.GetStoreLocations(config, stores); ListViewItem[] lItem = list.Select(X => new ListViewItem(X)).ToArray(); lvStores.Items.AddRange(lItem); /* * for (int i = 1; i <= 20; i++) * lvStores.Items.Add("test test test test test testes testes testest " + i); */ lvStores.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); applySettings(); }