From 8035a8406cb4c1b0d73f265819961630610fb08c Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Mon, 14 Oct 2013 23:47:08 -0400 Subject: [PATCH] Fix #10100. - If a package is already installed, look up its installed location and use that when initializing the package manager for uninstallation, otherwise we'd potentially fail to find the package, and consequently fail to remove it. --- src/apps/haiku-depot/PackageAction.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/apps/haiku-depot/PackageAction.cpp b/src/apps/haiku-depot/PackageAction.cpp index 913dc0d4e2..e812bb8f02 100644 --- a/src/apps/haiku-depot/PackageAction.cpp +++ b/src/apps/haiku-depot/PackageAction.cpp @@ -22,9 +22,20 @@ PackageAction::PackageAction(int32 type, PackageInfoRef package, Model* model) fType(type), fModel(model) { + const PackageInstallationLocationSet& locations + = package->InstallationLocations(); + + int32 location = B_PACKAGE_INSTALLATION_LOCATION_HOME; + // if the package is already installed, use its first installed location + // to initialize the manager. + // TODO: ideally if the package is installed at multiple locations, + // the user should be able to pick which one to remove. + if (locations.size() != 0) + location = *locations.begin(); + // TODO: allow configuring the installation location fPackageManager = new(std::nothrow) PackageManager( - B_PACKAGE_INSTALLATION_LOCATION_HOME); + (BPackageInstallationLocation)location); }