private void btnAddExistingPacket_Click(object sender, EventArgs e)
    {
        if (TreeView1.SelectedNode == null | object.ReferenceEquals(TreeView1.SelectedNode, TreeView1.Nodes[0]))
            {
                MessageBox.Show("Programme können nur Gruppen hinzugefügt werden. Bitte wählen Sie eine Gruppe aus.");
                return;
            }

             OpenFileDialog FileDialog = new OpenFileDialog();
            FileDialog.Multiselect = true;

            FileDialog.Filter = "zip (*.zip)|*.zip";
            FileDialog.FilterIndex = 1;
            FileDialog.InitialDirectory = Server_Client.Properties.Settings.Default.SavePath + "Groups\\";
            FileDialog.RestoreDirectory = true;

            //geben sie einen namen für paket an falls kein paket markiert ist!
            if (FileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if (FileDialog.SafeFileNames.Length == 0)
                {
                    return;
                }

                for (int i = 0; i < FileDialog.FileNames.Length; i++)
            {
                    Guid PacketGuid = Guid.NewGuid();
                    string Path = Server_Client.Properties.Settings.Default.SavePath + "Groups\\" + TreeView1.SelectedNode.Text + "\\" + PacketGuid + ".zip";
                    System.IO.File.Copy(FileDialog.FileNames[i], Path);

                    frmNewName NewName = new frmNewName();
                    NewName.ShowDialog();
                    //Hier Datenbankabfrage der Gruppen auf Gruppe mit ID (Diesen Namen nehmen)

                    TreeNode NewPacketNode = new TreeNode();
                    if (!string.IsNullOrEmpty(NewGroupName))
                    {
                        NewPacketNode.Text = NewGroupName;
                        NewGroupName = "";
                        TreeView3.Nodes[0].Nodes.Add(NewPacketNode);
                        TreeView3.Nodes[0].Expand();
                    }
                    else
                    {
                        MessageBox.Show("Kein Softwarepaketname angegeben. Vorgang wird abgebrochen.");
                        return;
                    }

                   clsZipFile.Unzip(FileDialog.FileNames[i].ToString(), Server_Client.Properties.Settings.Default.SavePath + "Groups\\" + TreeView1.SelectedNode.Text + "\\Temp\\");

                   string[] FileArr=  System.IO.Directory.GetFiles(Server_Client.Properties.Settings.Default.SavePath + "Groups\\" + TreeView1.SelectedNode.Text + "\\Temp\\");

                   for (int d = 0; d < FileArr.Length; d++)
                   {
                       System.IO.DirectoryInfo oDir = new System.IO.DirectoryInfo(FileArr[0]);
                       NewPacketNode.Nodes.Add(oDir.Name);
                       System.IO.File.Delete(oDir.FullName);
                   }

                   System.IO.File.Copy(FileDialog.FileNames[i].ToString(), Server_Client.Properties.Settings.Default.SavePath + "Groups\\" + TreeView1.SelectedNode.Text + "\\" + NewPacketNode.Text);
                   string CurrentName = FileDialog.SafeFileName[i].ToString().Replace(".zip", "");

                 List<PackageInfoModel> AllPackages = request.getDatabasePackages(client);
                 PackageInfoModel CurrentPackage = new PackageInfoModel();
                 CurrentPackage.Name = PacketGuid.ToString();
                 CurrentPackage.group = Convert.ToInt32(TreeView1.SelectedNode.Tag);

                    foreach (PackageInfoModel Package in AllPackages)
                 {
                     if (Package.Name == CurrentName)
                     {
                         CurrentPackage.showName = Package.showName;
                         CurrentPackage.arc = Package.arc;
                         CurrentPackage.size = Package.size;
                         break;
                     }
                 }
                    request.addPackageInfo(client, CurrentPackage);

                    GroupInfoModel GroupModel = new GroupInfoModel();
                    GroupModel.ID = Convert.ToInt32(TreeView1.SelectedNode.Tag);
                    GroupModel.Name = TreeView1.SelectedNode.Text;
                    request.sendFile(client, GroupModel, CurrentPackage, Path + PacketGuid + ".zip");

                    NewPacketNode.Expand();
            }

                TreeView3.Nodes[0].Expand();
            }
    }
    private void btnAddSoftware_Click(object sender, EventArgs e)
    {
        if (TreeView1.SelectedNode == null | object.ReferenceEquals(TreeView1.SelectedNode, TreeView1.Nodes[0]))
            {
             MessageBox.Show("Programme können nur Gruppen hinzugefügt werden. Bitte wählen Sie eine Gruppe aus.");
                return;
            }

            OpenFileDialog FileDialog = new OpenFileDialog();
            FileDialog.Multiselect = true;

            FileDialog.Filter = "msi files (*.msi)|*.msi|exe files (*.exe*)|*.exe*|All files (*.*)|*.*";
            FileDialog.FilterIndex = 1;
            FileDialog.RestoreDirectory = true;

            //geben sie einen namen für paket an falls kein paket markiert ist!
            if (FileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if (FileDialog.SafeFileNames.Length == 0)
                {
                    return;
                }
                TreeNode NewListMainItem = new TreeNode("Neuer Eintrag");
                TreeView3.Nodes[0].Nodes.Add(NewListMainItem);

            frmNewName NewName = new frmNewName();
            NewName.ShowDialog();

            if (!string.IsNullOrEmpty(NewGroupName))
            {
                NewListMainItem.Text = NewGroupName;
                NewGroupName = "";
                TreeView3.Nodes[0].Expand();
            }
            else
            {
                MessageBox.Show("Kein Softwarepaketname angegeben. Vorgang wird abgebrochen.");
                return;
            }

                foreach (string File in FileDialog.SafeFileNames)
                {
                    TreeNode NewListItem = new TreeNode(File);
                    NewListMainItem.Nodes.Add(NewListItem);
                }
                string[] FileArray = new string[FileDialog.FileNames.Length];
                int counter = 0;

                string archit = "32bit";
                string Path = Server_Client.Properties.Settings.Default.SavePath + "Groups\\" + TreeView1.SelectedNode.Text + "\\";
                Guid PacketGuid = Guid.NewGuid();
                foreach (string File in FileDialog.FileNames)
                {
                    //Assembly ExeAssembly = Assembly.LoadFile(File);
                    //System.Reflection.AssemblyName AssemblyAr = new System.Reflection.AssemblyName(ExeAssembly.FullName);
                    //if (archit != "" && archit != AssemblyAr.ProcessorArchitecture.ToString())
                    //{
                    //    MessageBox.Show("Die Datei: " + File + " hat das falsche Format(" + AssemblyAr.ProcessorArchitecture.ToString() + "). Bitte erstellen Sie für 32/64 bit Programme einzelne Softwarepakete.");
                    //    continue;
                    //}
                    //archit = AssemblyAr.ProcessorArchitecture.ToString();

                      clsZipFile.CreatePackage(Path + PacketGuid + ".zip", File);
                    FileArray[counter] = File;
                    counter++;
                }

                if (!Directory.Exists(Path))
                {
                    Directory.CreateDirectory(Path);
                }

                NewListMainItem.Expand();

                //Assembly assembly = Assembly.LoadFile(Path + PacketGuid + ".zip");
                //System.Reflection.AssemblyName AssemblyName = new System.Reflection.AssemblyName(assembly.FullName);
                FileInfo fileinfo_ = new FileInfo(Path + PacketGuid + ".zip");

                PackageInfoModel CurrentPackage = new PackageInfoModel();
                CurrentPackage.showName = NewListMainItem.Text;
                CurrentPackage.Name =  PacketGuid.ToString();
                CurrentPackage.arc = archit;
                CurrentPackage.size  =Convert.ToInt32( fileinfo_.Length ) ;
                CurrentPackage.group = Convert.ToInt32( TreeView1.SelectedNode.Tag);

                request.addPackageInfo(client, CurrentPackage);

                GroupInfoModel GroupModel = new GroupInfoModel();
                GroupModel.ID = Convert.ToInt32( TreeView1.SelectedNode.Tag);
                GroupModel.Name = TreeView1.SelectedNode.Text;
                request.sendFile(client, GroupModel, CurrentPackage, Path + PacketGuid + ".zip");
            }

        //Füge Kopie der Datei hinzu und unten entfernen und client gui trayicon

                    //In Datenbank für diese Gruppe anlegen falls nicht exitstiert
                    //Pfad auf ServerClient dazu speichern
                    //msi gui
    }
    private bool AddGroup()
    {
        TreeNode NewListItem = new TreeNode("Neuer Eintrag");
            TreeView1.Nodes[0].Nodes.Add(NewListItem);

            frmNewName NewName = new frmNewName();
            NewName.ShowDialog();

            if (!string.IsNullOrEmpty(NewGroupName))
            {
                if (CheckIfEntryExists(ref NewListItem))
                {
                    MessageBox.Show("Gruppenname bereits vorhanden. Bitte geben Sie einen neuen Namen an.");
                    NewGroupName = "";
                    NewListItem.Parent.Nodes.Remove(NewListItem);
                    return false;
                }
                else
                {
                    NewListItem.Text = NewGroupName;
                    if (System.IO.Directory.Exists(Server_Client.Properties.Settings.Default.SavePath + "Groups") == false)
                    {
                        System.IO.Directory.CreateDirectory(Server_Client.Properties.Settings.Default.SavePath + "Groups");
                    }
                    System.IO.Directory.CreateDirectory(Server_Client.Properties.Settings.Default.SavePath + "Groups\\" + NewGroupName);

                    //Safe to DB
                    GroupInfoModel group = new GroupInfoModel();
                    group.Name = NewGroupName;
                    group.ID = -1;
                    NewListItem.Tag = request.addGroupInfo(client, group);
                    if (Convert.ToInt32(NewListItem.Tag) == -1)
                    {
                    MessageBox.Show("Es ist ein Fehler beim Hinzufügen aufgetreten.", "Achtung",MessageBoxButtons.OK ,MessageBoxIcon.Error);
                    NewListItem.Parent.Nodes.Remove(NewListItem);
                    }
                    NewGroupName = "";
                }
            }
            else
            {
                NewListItem.Parent.Nodes.Remove(NewListItem);
            }

            return true;
    }