public void SetCertificates()
        {
            try
            {
                Certificates.Clear();
                var localStore = new X509Store(StoreLocation.CurrentUser);
                var machineStore = new X509Store(StoreLocation.LocalMachine);

                localStore.Open(OpenFlags.ReadOnly);
                if (localStore.Certificates.Count > 0)
                {
                    foreach (var certificate in localStore.Certificates)
                    {
                        var cert = new Certificate();
                        if (IsSigningCert(certificate))
                        {
                            if (string.IsNullOrEmpty(certificate.FriendlyName))
                            {
                                cert.FriendlyName = certificate.SubjectName.Name;
                            }
                            else
                            {
                                cert.FriendlyName = certificate.FriendlyName;
                            }

                            cert.IssuerName = certificate.IssuerName.Name;
                            cert.ThumbPrint = certificate.Thumbprint;

                            Certificates.Add(cert);
                        }

                    }
                }

                machineStore.Open(OpenFlags.ReadOnly);
                if (machineStore.Certificates.Count > 0)
                {
                    foreach (var certificate in machineStore.Certificates)
                    {
                        var cert = new Certificate();

                        if (IsSigningCert(certificate))
                        {
                            if (String.IsNullOrEmpty(certificate.FriendlyName))
                            {

                                cert.FriendlyName = certificate.SubjectName.Name;
                            }
                            else
                            {
                                cert.FriendlyName = certificate.FriendlyName;
                            }

                            cert.IssuerName = certificate.IssuerName.Name;
                            cert.ThumbPrint = certificate.Thumbprint;

                            Certificates.Add(cert);
                        }

                    }
                }
                localStore.Close();
                machineStore.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


        }
        public MainWindowViewModel(IDialogCoordinator dialogCoordinator)
        {
            _dialogCoordinator = dialogCoordinator;

            ApplicationMode = ApplicationMode.InstallGenerator;

            if (DefaultLanguage == null)
            {
                DefaultLanguage = new Language()
                {
                    Id = "en-us",
                    Name = "English",
                    Order = 1
                };
            }

            UseSameLanguagesForAllProducts = true;
            if (_selectedLanguages == null)
            {
                _selectedLanguages = new List<Language>()
                    {
                        DefaultLanguage,
                    };
            }

            _removedLanguages = new List<Language>();

            Builds = new List<Build>()
            {
                new Build()
                {
                    Version = "16.0.4949.1003"
                }
            };



            Channels = new List<Channel>()
            {
                new Channel()
                {

                }
            };

            Branches = new List<OfficeBranch>()
            {
                new OfficeBranch()
                {
                    Branch = Branch.Current,
                    Name = "Current",
                    NewName = "Current",
                    Id = "Current",
                    CurrentVersion = "16.0.7070.2028",
                    Versions = new List<Build>()
                    {
                        new Build() { Version = "16.0.7070.2028"},
                        new Build() { Version = "16.0.7070.2026"},
                        new Build() { Version = "16.0.7070.2022"},
                        new Build() { Version = "16.0.6965.2063"},
                        new Build() { Version = "16.0.6965.2058"},
                        new Build() { Version = "16.0.6965.2053"},
                        new Build() { Version = "16.0.6868.2067"},
                        new Build() { Version = "16.0.6868.2062"},
                        new Build() { Version = "16.0.6868.2060"},
                        new Build() { Version = "16.0.6769.2040"},
                        new Build() { Version = "16.0.6769.2017"},
                        new Build() { Version = "16.0.6769.2015"},
                        new Build() { Version = "16.0.6741.2021"},
                        new Build() { Version = "16.0.6741.2017"},
                        new Build() { Version = "16.0.6568.2036"},
                        new Build() { Version = "16.0.6568.2034"},
                        new Build() { Version = "16.0.6568.2025"},
                        new Build() { Version = "16.0.6366.2068"},
                        new Build() { Version = "16.0.6366.2062"},
                        new Build() { Version = "16.0.6366.2056"},
                        new Build() { Version = "16.0.6366.2036"},
                        new Build() { Version = "16.0.6001.1043"},
                        new Build() { Version = "16.0.6001.1038"},
                        new Build() { Version = "16.0.6001.1034"},
                        new Build() { Version = "16.0.4229.1029"},
                        new Build() { Version = "16.0.4229.1024"},
                    }
                },
                new OfficeBranch()
                {
                    Branch = Branch.Business,
                    Name = "Deferred",
                    NewName = "Deferred",
                    Id = "Business",
                    CurrentVersion = "16.0.6741.2056",
                    Versions = new List<Build>()
                    {
                        new Build() { Version = "16.0.6741.2056"},
                        new Build() { Version = "16.0.6001.1085"},
                        new Build() { Version = "16.0.6741.2048"},
                        new Build() { Version = "16.0.6001.1082"},
                        new Build() { Version = "16.0.6001.1078"},
                        new Build() { Version = "16.0.6001.1073"},
                        new Build() { Version = "16.0.6001.1068"},
                        new Build() { Version = "16.0.6001.1061"}
                    }
                },
                new OfficeBranch()
                {
                    Branch = Branch.FirstReleaseCurrent,
                    Name = "First Release Current",
                    NewName = "FirstReleaseCurrent",
                    Id = "FirstReleaseCurrent",
                    CurrentVersion = "16.0.7070.2030",
                    Versions = new List<Build>()
                    {
                        new Build() { Version = "16.0.7070.2030"},
                        new Build() { Version = "16.0.7070.2026"},
                        new Build() { Version = "16.0.7070.2022"},
                        new Build() { Version = "16.0.7070.2028"},
                        new Build() { Version = "16.0.7070.2020"},
                        new Build() { Version = "16.0.7070.2019"},
                        new Build() { Version = "16.0.6769.2015"},
                        new Build() { Version = "16.0.6769.2011"},
                        new Build() { Version = "16.0.6741.2017"},
                        new Build() { Version = "16.0.6741.2015"},
                        new Build() { Version = "16.0.6741.2014"},
                        new Build() { Version = "16.0.6568.2036"},
                        new Build() { Version = "16.0.6568.2025"},
                        new Build() { Version = "16.0.6568.2016"},
                        new Build() { Version = "16.0.6366.2062"},
                        new Build() { Version = "16.0.6366.2056"},
                        new Build() { Version = "16.0.6366.2047"},
                        new Build() { Version = "16.0.6366.2036"},
                        new Build() { Version = "16.0.6366.2025"},
                        new Build() { Version = "16.0.6228.1010"},
                        new Build() { Version = "16.0.6228.1007"},
                        new Build() { Version = "16.0.6228.1004"}
                    }
                },
                new OfficeBranch()
                {
                    Branch = Branch.FirstReleaseBusiness,
                    Name = "First Release Deferred",
                    NewName = "FirstReleaseDeferred",
                    Id = "FirstReleaseBusiness",
                    CurrentVersion = "16.0.6965.2069",
                    Versions = new List<Build>()
                    {
                        new Build() { Version = "16.0.6965.2069"},
                        new Build() { Version = "16.0.6965.2066"},
                        new Build() { Version = "16.0.6965.2063"},
                        new Build() { Version = "16.0.6965.2058"},
                        new Build() { Version = "16.0.6741.2047"},
                        new Build() { Version = "16.0.6741.2042"},
                        new Build() { Version = "16.0.6741.2037"},
                        new Build() { Version = "16.0.6741.2033"},
                        new Build() { Version = "16.0.6741.2026"},
                        new Build() { Version = "16.0.6741.2025"},
                        new Build() { Version = "16.0.6741.2021"},
                        new Build() { Version = "16.0.6741.2017"},
                        new Build() { Version = "16.0.6741.2015"},
                        new Build() { Version = "16.0.6741.2014"},
                        new Build() { Version = "16.0.6001.1061"},
                        new Build() { Version = "16.0.6001.1054"},
                        new Build() { Version = "16.0.6001.1043"},
                        new Build() { Version = "16.0.6001.1038"},
                        new Build() { Version = "16.0.6001.1034"},
                        new Build() { Version = "16.0.4229.1029"},
                        new Build() { Version = "16.0.4229.1024"}
                    }
                }
            };



            MainProducts = new List<Product>()
            {
                new Product()
                {
                    DisplayName = "Office 365 ProPlus",
                    Id = "O365ProPlusRetail",
                    ShortName = "Office 365 ProPlus"
                },
                new Product()
                {
                    DisplayName = "Office 365 for Business",
                    Id = "O365BusinessRetail",
                    ShortName = "Office 365 for Business"
                }
            };

            LanguagePackProducts = new List<Product>()
            {
                new Product()
                {
                    Id = "LanguagePack",
                    DisplayName = "Language Pack",
                    ShortName = "Language Pack"
                }
            };

            VisioProducts = new List<Product>()
            {
                new Product()
                {
                    DisplayName = "Visio for Office 365",
                    Id = "VisioProRetail",
                    ShortName = "Visio for Office 365"
                },
                new Product()
                {
                    DisplayName = "Visio for Office 365 Professional (Volume License)",
                    Id = "VisioProXVolume",
                    ShortName = "Visio for Office 365"
                },
                 new Product()
                {
                    DisplayName = "Visio for Office 365 Standard (Volume License)",
                    Id = "VisioStdXVolume",
                    ShortName = "Visio for Office 365"
                },
            };

            ProjectProducts = new List<Product>()
            {
                new Product()
                {
                    DisplayName = "Project for Office 365",
                    Id = "ProjectProRetail",
                    ShortName = "Project for Office 365"
                },
                new Product()
                {
                    DisplayName = "Project for Office 365 Professional(Volume License)",
                    Id = "ProjectProXVolume",
                    ShortName = "Project for Office 365"
                },
                new Product()
                {
                    DisplayName = "Project for Office 365 Standard (Volume License)",
                    Id = "ProjectStdXVolume",
                    ShortName = "Project for Office 365"
                }
            };

            SkypeProducts = new List<Product>()
            {
                new Product()
                {
                    DisplayName = "Skype For Business 2016",
                    Id = "SkypeforBusinessRetail",
                    ShortName = "Skype For Business 2016"
                },
                new Product()
                {
                    DisplayName = "Skype For Business Basic 2016",
                    Id = "SkypeforBusinessEntryRetail",
                    ShortName = "Skype For Business Basic 2016"
                }
            };

            ExcludeProducts = new List<ExcludeProduct>()
            {
                new ExcludeProduct()
                {
                    DisplayName = "Access"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Excel"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Groove"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Lync"
                },
                new ExcludeProduct()
                {
                    DisplayName = "OneNote"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Outlook"
                },
                new ExcludeProduct()
                {
                    DisplayName = "PowerPoint"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Project"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Publisher"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Visio"
                },
                new ExcludeProduct()
                {
                    DisplayName = "Word"
                },
                new ExcludeProduct()
                {
                    DisplayName = "OneDrive"
                }
            };

            Languages = new List<Language>()
            {
                new Language { Id="en-us", Name="English" },
                new Language { Id="ar-sa", Name="Arabic" },
                new Language { Id="bg-bg", Name="Bulgarian" },
                new Language { Id="zh-cn", Name="Chinese - Simplified" },
                new Language { Id="zh-tw", Name="Chinese" },
                new Language { Id="hr-hr", Name="Croatian" },
                new Language { Id="cs-cz", Name="Czech" },
                new Language { Id="da-dk", Name="Danish" },
                new Language { Id="nl-nl", Name="Dutch" },
                new Language { Id="et-ee", Name="Estonian" },
                new Language { Id="fi-fi", Name="Finnish" },
                new Language { Id="fr-fr", Name="French" },
                new Language { Id="de-de", Name="German" },
                new Language { Id="el-gr", Name="Greek" },
                new Language { Id="he-il", Name="Hebrew" },
                new Language { Id="hi-in", Name="Hindi" },
                new Language { Id="hu-hu", Name="Hungarian" },
                new Language { Id="id-id", Name="Indonesian" },
                new Language { Id="it-it", Name="Italian" },
                new Language { Id="ja-jp", Name="Japanese" },
                new Language { Id="kk-kz", Name="Kazakh" },
                new Language { Id="ko-kr", Name="Korean" },
                new Language { Id="lv-lv", Name="Latvian" },
                new Language { Id="lt-lt", Name="Lithuanian" },
                new Language { Id="ms-my", Name="Malay" },
                new Language { Id="nb-no", Name="Norwegian - Bokml" },
                new Language { Id="pl-pl", Name="Polish" },
                new Language { Id="pt-br", Name="Portuguese - Brazil" },
                new Language { Id="pt-pt", Name="Portuguese - Portugal" },
                new Language { Id="ro-ro", Name="Romanian" },
                new Language { Id="ru-ru", Name="Russian" },
                new Language { Id="sr-latn-rs", Name="Serbian - Latin" },
                new Language { Id="sk-sk", Name="Slovak" },
                new Language { Id="sl-si", Name="Slovenian" },
                new Language { Id="es-es", Name="Spanish" },
                new Language { Id="sv-se", Name="Swedish" },
                new Language { Id="th-th", Name="Thai" },
                new Language { Id="tr-tr", Name="Turkish" },
                new Language { Id="uk-ua", Name="Ukrainian" },
                new Language { Id="vi-vn", Name="Vietnamese" }
            };

            Certificates = new List<Certificate>();

            SelectedCertificate = new Certificate();


        }