// a user wants to add or update a version information entry within the remote database..
        private void MnuAddUpdateAssembly_Click(object sender, EventArgs e)
        {
            Assembly assembly = null;

            if ((sender.Equals(mnuAddUpdateAssembly) || sender.Equals(tsbUpdateEntry)) &&
                odAssembly.ShowDialog() == DialogResult.OK)
            {
                assembly = Assembly.LoadFile(odAssembly.FileName);
            }
            else if (sender.Equals(mnuThisAssemblyVersion))
            {
                // ..just use the entry assembly..
                assembly = Assembly.GetEntryAssembly();
            }

            if (assembly != null)
            {
                var info = FormDialogAddUpdateAssemblyVersion.ShowDialog(assembly.Location, assembly,
                                                                         out bool archivePreviousEntry, out bool previousLocalizedData);

                var version = gvSoftwareVersions.CurrentRow?.Cells[colVersion.Index].Value.ToString();

                if (info != null)
                {
                    if (info.ID != -1)
                    {
                        if (archivePreviousEntry)
                        {
                            VersionCheck.ArchiveVersion(info.ID);
                            if (previousLocalizedData && version != null)
                            {
                                VersionCheck.PreservePreviousVersionData(version, info.SoftwareVersion, info.ID);
                            }
                            else
                            {
                                VersionCheck.ArchiveVersionHistoryByApplicationId(info.ID, true);
                            }
                        }
                        else
                        {
                            VersionCheck.DeleteVersionHistoryByApplicationId(info.ID);
                        }
                    }

                    VersionCheck.UpdateVersion(assembly, info.DownloadLink, info.IsDirectDownload, info.ReleaseDate,
                                               info.MetaData);
                    ListVersions();
                }
            }
        }
        private void mnuUpdateVersionManually_Click(object sender, EventArgs e)
        {
            var assemblyName = gvSoftwareVersions.CurrentRow?.Cells[colApp.Index].Value.ToString();

            var versionNew = FormDialogUpdateVersion.ShowDialog();

            var info = FormDialogAddUpdateAssemblyVersion.ShowDialog(assemblyName, versionNew,
                                                                     out bool archivePreviousEntry, out bool previousLocalizedData);

            var version = gvSoftwareVersions.CurrentRow?.Cells[colVersion.Index].Value.ToString();

            if (info != null)
            {
                if (info.ID != -1)
                {
                    if (archivePreviousEntry)
                    {
                        VersionCheck.ArchiveVersion(info.ID);
                        if (previousLocalizedData && version != null)
                        {
                            VersionCheck.PreservePreviousVersionData(version, info.SoftwareVersion, info.ID);
                        }
                        else
                        {
                            VersionCheck.ArchiveVersionHistoryByApplicationId(info.ID, true);
                        }
                    }
                    else
                    {
                        VersionCheck.DeleteVersionHistoryByApplicationId(info.ID);
                    }
                }

                VersionCheck.UpdateVersion(assemblyName, versionNew, info.DownloadLink, info.IsDirectDownload,
                                           info.ReleaseDate,
                                           info.MetaData);
                ListVersions();
            }
        }
        // a user wants to delete a selected entry in the grid from the remote database..
        private void TsbDeleteSelectedEntry_Click(object sender, EventArgs e)
        {
            if (gvSoftwareVersions.CurrentRow != null)
            {
                // verify that the user wants to delete a software entry from the server's database..
                var(dialogResult, archive, archiveHistory) = FormDialogQueryDeleteArchiveEntry.ShowDialog(this,
                                                                                                          gvSoftwareVersions.CurrentRow.Cells[colApp.Index].Value.ToString());

                var name = gvSoftwareVersions.CurrentRow.Cells[colApp.Index].Value.ToString();

                var id = Convert.ToInt32(gvSoftwareVersions.CurrentRow.Cells[colID.Index].Value);

                if (dialogResult == DialogResult.OK)
                {
                    if (archive)
                    {
                        VersionCheck.ArchiveVersion(id, true);
                    }
                    else
                    {
                        VersionCheck.DeleteSoftwareEntry(name);
                    }

                    if (archiveHistory)
                    {
                        VersionCheck.ArchiveVersionHistoryByApplicationId(id, true);
                    }
                    else
                    {
                        VersionCheck.DeleteVersionHistoryByApplicationId(id);
                    }

                    //VersionCheck.DeleteSoftwareEntry(name);
                }
            }

            ListVersions();
        }