Example #1
0
 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);
         }
     }
 }
Example #2
0
        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;
            }
        }