private static void Main() { try { var args = Environment.GetCommandLineArgs(); if (args.Contains("-s")) { CreateShortcut(); } else if (args.Contains("-l")) { var cb = Properties.Settings.Default.CurrentBackup; var d = MsnBackup.GetBackups().First(b => Path.GetFileName(b.Directory) == cb).Directory; Process.Start(Path.Combine(d, "msnmsgr.exe")); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } } catch (Exception ex) { var result = MessageBox.Show($"{AppName} has crashed because of {ex.Message}. \nWould you like to copy the crash report?", AppName, MessageBoxButtons.YesNo, MessageBoxIcon.Error); if (result == DialogResult.Yes) { Clipboard.SetText($"{AppName} Crash Report: \n{ex.ToString()}"); MessageBox.Show("The crash report has been copied. You can sent this report to Craftplacer over the MessengerGeek forum.", AppName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
public static void CreateShortcut() { string link = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Windows Live Messenger.lnk"); var shortcut = new WshShell().CreateShortcut(link) as IWshShortcut; shortcut.TargetPath = Application.ExecutablePath; shortcut.WorkingDirectory = Application.StartupPath; shortcut.Arguments = "-l"; shortcut.WindowStyle = (int)WshWindowStyle.WshNormalFocus; var cb = Properties.Settings.Default.CurrentBackup; var d = MsnBackup.GetBackups().First(b => Path.GetFileName(b.Directory) == cb).Directory; shortcut.IconLocation = Path.GetFullPath(Path.Combine(d, "msnmsgr.exe")) + ",1"; shortcut.Save(); }
public void ListAllVersions() { VersionPanel.Controls.Clear(); var backups = MsnBackup.GetBackups(); if (backups.Count != 0) { foreach (MsnBackupVersion backup in backups) { var button = new Button() { Text = $" {backup.Title}\n Build {backup.BuildVersion}", TextImageRelation = TextImageRelation.ImageBeforeText, Dock = DockStyle.Top, FlatStyle = FlatStyle.Flat, Tag = backup, Height = 48, TextAlign = ContentAlignment.TopLeft, ImageAlign = ContentAlignment.TopLeft, }; button.Image = backup.BuildVersion.Major > 8 ? Properties.Resources.messenger14 : Properties.Resources.messenger8; button.FlatAppearance.BorderSize = 0; button.FlatAppearance.MouseDownBackColor = Color.Gainsboro; button.FlatAppearance.MouseOverBackColor = Color.WhiteSmoke; button.FlatAppearance.BorderColor = Color.White; button.Click += (s, e) => { CurrentBackup = backup; SwitchTab("progress"); }; VersionPanel.Controls.Add(button); } } else { var label = new Label() { Text = "You don't have any saved versions.", AutoSize = false, TextAlign = ContentAlignment.MiddleCenter, ForeColor = SystemColors.GrayText, Dock = DockStyle.Fill, }; VersionPanel.Controls.Add(label); } }
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { var job = (BackgroundWorkerJob)e.Argument; MsnBackup.CheckDirectory(); switch (job.Action) { case "save": var target = MsnBackup.GetNextAvailableDirectoryPath(); var directory = Path.GetDirectoryName(job.SaveMessengerPath); //Now Create all of the directories foreach (string dirPath in Directory.GetDirectories(directory, "*", SearchOption.AllDirectories)) { Directory.CreateDirectory(dirPath.Replace(directory, target)); } var files = Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) { string newPath = files[i]; File.Copy(newPath, newPath.Replace(directory, target), true); SetProgress(i, files.Length); } string title; if (CurrentBackupName == null) { title = "No title"; } else if (CurrentBackupName == "#auto") { var dict = new Dictionary <int, string>() { { 1, "MSN Messenger Service" }, { 2, "MSN Messenger Service" }, { 3, "MSN Messenger Service" }, { 4, "MSN Messenger" }, { 5, "MSN Messenger" }, { 6, "MSN Messenger" }, { 7, "MSN Messenger" }, { 8, "Windows Live Messenger" }, { 14, "Windows Live Messenger" }, { 15, "Windows Live Messenger" }, { 16, "Windows Live Messenger" }, }; var ver = MsnBackup.GetVersion(Path.Combine(directory, "msnmsgr.exe")); title = $"{dict[ver.Major]} {ver.Major}.{ver.Minor}"; } else { title = CurrentBackupName; } File.WriteAllText(Path.Combine(target, "title.msnbackup"), title); break; case "delete": BackgroundWorker.ReportProgress(-1); Directory.Delete(job.Backup.Directory, true); BackgroundWorker.ReportProgress(100); break; case "switch": Properties.Settings.Default.CurrentBackup = Path.GetFileName(job.Backup.Directory); Properties.Settings.Default.Save(); Program.CreateShortcut(); var TypeLib = new Dictionary <string, int>() { { @"SOFTWARE\Classes\TypeLib\{53CED51D-432B-45B2-A3E0-0CE2C24235D4}\1.0\0\win32", 1 }, { @"SOFTWARE\Classes\TypeLib\{15FB1006-158D-4bb9-816A-7B4EC5FDF96B}\1.0\0\win32", 8 }, { @"SOFTWARE\Classes\TypeLib\{1FA4B99F-3155-4A26-837B-9734C1297A1B}\1.0\0\win32", 6 }, { @"SOFTWARE\Classes\TypeLib\{36C8B6E8-7013-462A-85B7-298F91FBC783}\1.0\0\win32", 5 }, { @"SOFTWARE\Classes\TypeLib\{C1637F37-3FC8-4B37-B3B2-6CC5E202390D}\1.0\0\win32", 7 }, { @"SOFTWARE\Classes\TypeLib\{E02AD29E-80F5-46C6-B416-9B3EBDDF057E}\1.0\0\win32", 2 }, }; foreach (var item in TypeLib) { using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, /*Program.Is64Bit ? RegistryView.Registry64 :*/ RegistryView.Registry32)) { var key = hklm.OpenSubKey(item.Key, true); if (key == null) { hklm.CreateSubKey(item.Key); key = hklm.OpenSubKey(item.Key, true); } if (key != null) { key.SetValue("", $"{Path.GetFullPath(Path.Combine(job.Backup.Directory, "msnmsgr.exe"))}\\{item.Value}", RegistryValueKind.String); key.Close(); } } } break; } }