summaryrefslogtreecommitdiff
path: root/desktop/source/deployment/manager/dp_extensionmanager.cxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2012-08-24 16:45:20 +0200
committerStephan Bergmann <sbergman@redhat.com>2012-08-24 17:18:28 +0200
commit1b40fbe41459a2231870af94a06263d89af554a6 (patch)
tree509f78e5763f55fa1db8d39d774a978fb96e82a7 /desktop/source/deployment/manager/dp_extensionmanager.cxx
parent35d474ff8c36d12e2afafee8a061745e47ef4fb0 (diff)
fdo#53968 etc.: Fix more "doesn't start after upgrade" problems
* fdo#53968 revealed that multiple soffice.bin instances can run removeTree in parallel. Therefore, demoted failures from exceptions to SAL_WARNs. (And keeping fingers crossed.) * a8cdce148c76c93c5d41820610d6e6ac175e03a7 "fdo#53655: Ignore failure to remove directories (as happens on Windows XP)" was due to a forgotten osl::Directory::close before calling osl::Directory::remove after all. * UserInstallations have been seen in the wild where no extensions were installed per-user (any longer), but user/uno_packages/cache/registry/ com.sun.star.comp.deployment.component.PackageRegistryBackend/*.rdb files contained data nevertheless. To reliably clean out any old junk, refreshBundledExtensionsDir has been extended to cleanExtensionsCache which in tandem with an extended Desktop::SynchronizeExtensionRepositories now cleanly re-installs all bundled, shared, and per-user extensions after a LO upgrade. Change-Id: Ic6b5b6c1945d76eb3a65b6cd4512a657b7a835a0
Diffstat (limited to 'desktop/source/deployment/manager/dp_extensionmanager.cxx')
-rw-r--r--desktop/source/deployment/manager/dp_extensionmanager.cxx10
1 files changed, 6 insertions, 4 deletions
diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx
index 68403f1af6cb..b3c21b4db52e 100644
--- a/desktop/source/deployment/manager/dp_extensionmanager.cxx
+++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx
@@ -1205,9 +1205,10 @@ uno::Sequence< uno::Sequence<Reference<deploy::XPackage> > >
}
}
-//only to be called from unopkg!!!
+// Only to be called from unopkg or soffice bootstrap (with force=true in the
+// latter case):
void ExtensionManager::reinstallDeployedExtensions(
- OUString const & repository,
+ sal_Bool force, OUString const & repository,
Reference<task::XAbortChannel> const & xAbortChannel,
Reference<ucb::XCommandEnvironment> const & xCmdEnv )
throw (deploy::DeploymentException,
@@ -1220,10 +1221,11 @@ void ExtensionManager::reinstallDeployedExtensions(
xPackageManager = getPackageManager(repository);
::osl::MutexGuard guard(getMutex());
- xPackageManager->reinstallDeployedPackages(xAbortChannel, xCmdEnv);
+ xPackageManager->reinstallDeployedPackages(
+ force, xAbortChannel, xCmdEnv);
//We must sync here, otherwise we will get exceptions when extensions
//are removed.
- dp_misc::syncRepositories(xCmdEnv);
+ dp_misc::syncRepositories(force, xCmdEnv);
const uno::Sequence< Reference<deploy::XPackage> > extensions(
xPackageManager->getDeployedPackages(xAbortChannel, xCmdEnv));