//Anzeige des PackageSourcepfades in der nebenanliegenden Textbox
        private void combo_PackageSource_MouseLeave(object sender, MouseEventArgs e)
        {
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\NMPackageManagement\\NMPackageManagement.xml";
            List <NMPackageConfigFile> packageSources = NMPackageConfigFile.ReadConfig(appdata);

            foreach (NMPackageConfigFile packageSource in packageSources)
            {
                if (packageSource.SourceName.Equals(combo_PackageSource.Text))
                {
                    txt_PackageSource.Text = packageSource.Location;
                }
            }
        }
        private void combo_PackageSource_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\NMPackageManagement\\NMPackageManagement.xml";
            List <NMPackageConfigFile> packageSources = NMPackageConfigFile.ReadConfig(appdata);

            //Leeren der Combobox

            combo_PackageSource.Items.Clear();

            //Hinzufügen der PackageSources zur Combobox

            foreach (NMPackageConfigFile packageSource in packageSources)
            {
                combo_PackageSource.Items.Add(packageSource.SourceName);
            }
        }
        private void btn_OK_Click(object sender, RoutedEventArgs e)
        {
            //leeren der Stack_info (infoboxen)
            listv_info.Items.Clear();

            //Info Item für Infobox
            ListViewItem info;

            #region Überprüfung
            //Überprüfen ob alle relevanten Fenster etc ausgefüllt sind.
            //Textbox für neue infos

            bool ueberpruefung = true;

            if (txt_PackageSource.Text == "")
            {
                info         = new ListViewItem();
                info.Content = "Packagsource wurde nicht gesetzt";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (Combo_Architektur.Text == "Programmarchitektur")
            {
                info         = new ListViewItem();
                info.Content = "Programmarchitektur muss ausgeählt werden!";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (combo_Programmordner.Text == "Softwareordner wählen" || combo_Programmordner.Text == "Neuer Ordner")
            {
                info         = new ListViewItem();
                info.Content = "Softwareordner wurde nicht gewählt";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (tbox_Programmpfad.Text == "Pfad zur Prgrammdatei" || tbox_Programmpfad.Text == "Pfad zum Programmordner")
            {
                info         = info = new ListViewItem();
                info.Content = "Pfad zur Programmdatei / Programmordner nicht gesetzt!";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (combo_Programmdateipfad.Text == "exe, msi auswählen")
            {
                info         = info = new ListViewItem();
                info.Content = "exe, msi auswählen.";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (t_silentArgs.Text == "Silent install Parameter eintragen")
            {
                info         = info = new ListViewItem();
                info.Content = "Keine Silent install Argumente eingetragen";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (txt_version.Text == "Versionsnummer")
            {
                info         = info = new ListViewItem();
                info.Content = "Keine Versionsnummer eingetragen";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (txt_uninstall.Text == "Uninstallstring")
            {
                info         = new ListViewItem();
                info.Content = "Kein Uninstallstring eingetragen";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }
            if (txt_uninstallSilentArgs.Text == "Silent Uninstallargs")
            {
                info         = new ListViewItem();
                info.Content = "Keine Silent Uninstall Argumente angegeben";

                listv_info.Items.Add(info);
                ueberpruefung = false;
            }

            #endregion

            //Wenn Überprüfung OK, dann Ordner anlegen, Dateien kopieren, XML Metadaten anlegen.
            if (ueberpruefung)
            {
                #region Ordnererstellung

                string[] folderpaths = new string[]
                {
                    txt_PackageSource.Text + "\\" + combo_Programmordner.Text,
                    txt_PackageSource.Text + "\\" + combo_Programmordner.Text + "\\" + Combo_Architektur.Text,
                    txt_PackageSource.Text + "\\" + combo_Programmordner.Text + "\\" + Combo_Architektur.Text + "\\" + txt_version.Text,
                    txt_PackageSource.Text + "\\" + combo_Programmordner.Text + "\\" + Combo_Architektur.Text + "\\" + txt_version.Text + "\\LOG",
                    txt_PackageSource.Text + "\\" + combo_Programmordner.Text + "\\" + Combo_Architektur.Text + "\\" + txt_version.Text + "\\Setup"
                };

                bool isfolderCreated = true;
                try
                {
                    //Überprüfen / Erstellen der Ordner

                    TestFolderPath(folderpaths);
                }
                catch (Exception)
                {
                    MessageBox.Show("Fehler beim anlegen der Ordner");
                    isfolderCreated = false;
                }
                #endregion

                #region Kopiere Dateien / Ordner
                bool isFileCopied = true;
                if (isfolderCreated)
                {
                    try
                    {
                        //Kopieren der Datein

                        if (combo_Programmart.Text == "Neue Programmdatei")
                        {
                            File.Copy(tbox_Programmpfad.Text, $"{folderpaths[4]}\\{combo_Programmdateipfad.Text}");
                        }
                        else if (combo_Programmart.Text == "Neuer Programmordner")
                        {
                            DirectoryCopy(tbox_Programmpfad.Text, folderpaths[4], true);
                        }
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Fehler beim kopieren der Datein");
                        isFileCopied = false;
                    }
                }
                #endregion

                #region Generiere Metadata XML
                bool isMetadataGenerated = true;
                if (isfolderCreated)
                {
                    try
                    {
                        #region Read LocalinstallFolder
                        //ReadConfig für localInstallFolder
                        string localInstallFolder = "";
                        string appdata            = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\NMPackageManagement\\NMPackageManagement.xml";
                        List <NMPackageConfigFile> packageSources = NMPackageConfigFile.ReadConfig(appdata);

                        foreach (NMPackageConfigFile packageSource in packageSources)
                        {
                            if (packageSource.SourceName.Equals(combo_PackageSource.Text))
                            {
                                localInstallFolder = packageSource.LocalInstallFolder;
                            }
                        }
                        #endregion



                        //Generiere Metadaten.
                        string pathDependencies    = $"{txt_PackageSource.Text}\\{combo_Programmordner.Text}\\{Combo_Architektur.Text}\\{txt_version.Text}\\Dependencies.xml";
                        string pathMetadata        = $"{txt_PackageSource.Text}\\{combo_Programmordner.Text}\\{Combo_Architektur.Text}\\{txt_version.Text}\\Metadata.xml";
                        string packageName         = combo_Programmordner.Text;
                        string fileName            = combo_Programmdateipfad.Text;
                        string fileLocation        = $"{ txt_PackageSource.Text }\\{ combo_Programmordner.Text}\\{ Combo_Architektur.Text}\\{ txt_version.Text}\\Setup";
                        string folderPath          = $"{ txt_PackageSource.Text }\\{ combo_Programmordner.Text}\\{ Combo_Architektur.Text}\\{ txt_version.Text}";
                        string installFolder       = localInstallFolder;
                        string architecture        = Combo_Architektur.Text;
                        string silentArgs          = t_silentArgs.Text;
                        string version             = txt_version.Text;
                        string uninstallString     = txt_uninstall.Text;
                        string silentArgsUninstall = txt_uninstallSilentArgs.Text;
                        string psChildName         = txt_psChildName.Text;
                        #region Überprüfung Checkboxen
                        bool hasDependencies = false;
                        bool needsRestart    = false;

                        if (check_dependencies.IsChecked == true)
                        {
                            hasDependencies = true;
                        }

                        if (check_restart.IsChecked == true)
                        {
                            needsRestart = true;
                        }
                        #endregion

                        GenerateMetadataXML(pathMetadata, packageName, fileName, fileLocation, folderPath, installFolder, architecture, silentArgs, version, uninstallString, silentArgsUninstall, psChildName, needsRestart, hasDependencies);

                        if (hasDependencies)
                        {
                            GenerateDependenciesXML(pathDependencies, wrapp_combo_Dependencies.Children);
                        }
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Fehler beim generieren der Metadaten / Dependencies XML");
                        isMetadataGenerated = false;
                    }
                }
                #endregion

                #region Alles erstellt, kopiert...
                //Überprüfung ob alles erstellt und Kopiert wurde.
                if (isfolderCreated && isFileCopied && isMetadataGenerated)
                {
                    MessageBox.Show($"Package für {combo_Programmdateipfad.Text} wurde erstellt");
                }
                else
                {
                    MessageBox.Show($"Package wurde nicht richtig hinzugefügt!\n Bitte überprüfen Sie den Pfad: {txt_PackageSource.Text + "\\" + combo_Programmdateipfad.Text}", "Alert");
                }
                #endregion
            }
        }