internal void UninstallPackage(Package packageToUninstall, ref List<Package> Packages)
{
string uninstallResults = "";
List<Package> brokenDependancies = Database.CheckUninstallDependancies(packageToUninstall.Dependancies);
if (brokenDependancies.Count != 0)
{
PopulatePackageList(brokenDependancies, dataGridViewBrokenDependancies, false, false, false);
labelMissingDependanciesText1.Text = Interface.GetInterfaceString("packages_uninstall_broken");
HidePanels();
panelDependancyError.Show();
}
if (Manipulation.UninstallPackage(packageToUninstall, currentDatabaseFolder, ref uninstallResults))
{
Packages.Remove(packageToUninstall);
switch (packageToUninstall.PackageType)
{
case PackageType.Other:
DatabaseFunctions.cleanDirectory(Program.FileSystem.OtherInstallationDirectory, ref uninstallResults);
break;
case PackageType.Route:
DatabaseFunctions.cleanDirectory(Program.FileSystem.RouteInstallationDirectory, ref uninstallResults);
break;
case PackageType.Train:
DatabaseFunctions.cleanDirectory(Program.FileSystem.TrainInstallationDirectory, ref uninstallResults);
break;
}
labelUninstallSuccess.Text = Interface.GetInterfaceString("packages_uninstall_success");
labelUninstallSuccessHeader.Text = Interface.GetInterfaceString("packages_uninstall_success_header");
textBoxUninstallResult.Text = uninstallResults;
HidePanels();
panelUninstallResult.Show();
}
else
{
labelUninstallSuccess.Text = Interface.GetInterfaceString("packages_uninstall_success");
labelUninstallSuccessHeader.Text = Interface.GetInterfaceString("packages_uninstall_success_header");
if (uninstallResults == null)
{
//Uninstall requires an XML list of files, and these were missing.......
textBoxUninstallResult.Text = Interface.GetInterfaceString("packages_uninstall_missing_xml");
currentPackage = packageToUninstall;
RemoveFromDatabase = false;
}
else
{
//Something went wrong in the uninstallation process, so show the log
//TODO: This doesn't log anything other than a list of files at the minute
textBoxUninstallResult.Text = uninstallResults;
}
}
HidePanels();
panelUninstallResult.Show();
}