23#include <com/sun/star/beans/XPropertySet.hpp>
24#include <com/sun/star/configuration/theDefaultProvider.hpp>
25#include <com/sun/star/deployment/DeploymentException.hpp>
26#include <com/sun/star/deployment/ExtensionManager.hpp>
27#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
28#include <com/sun/star/frame/Desktop.hpp>
29#include <com/sun/star/frame/TerminationVetoException.hpp>
30#include <com/sun/star/ucb/CommandAbortedException.hpp>
31#include <com/sun/star/ucb/CommandFailedException.hpp>
34#include <osl/diagnose.h>
60 m_xParent(
std::move( xParent )),
62 m_bExtMgrDialogExecuting(false)
68 configuration::theDefaultProvider::get(
xContext));
71 {
"nodepath",
uno::Any(OUString(
"/org.openoffice.Office.OptionsDialog/Nodes"))}
74 xConfig->createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess",
args),
75 uno::UNO_QUERY_THROW);
80 {
"nodepath",
uno::Any(OUString(
"/org.openoffice.Office.ExtensionManager/ExtensionRepositories"))}
83 xNameAccessRepositories.set(
84 xConfig->createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess", args2),
85 uno::UNO_QUERY_THROW);
88 uno::Any value = xNameAccessRepositories->getByName(
"WebsiteLink");
91 catch (
const uno::Exception& )
153 xExtMgrDialog->Close();
206 std::vector< uno::Reference< deployment::XPackage > > vEntries;
212 }
catch (
const deployment::DeploymentException & ) {
214 }
catch (
const ucb::CommandFailedException & ) {
216 }
catch (
const ucb::CommandAbortedException & ) {
218 }
catch (
const lang::IllegalArgumentException & e ) {
220 throw css::lang::WrappedTargetRuntimeException( e.Message,
224 for (
auto const &
i : std::as_const(xAllPackages) )
227 OSL_ASSERT(xPackage.is());
230 vEntries.push_back( xPackage );
240 if ( rPackageURL.isEmpty() )
245 bool bInstall =
true;
246 bool bInstallForAll =
false;
255 if ( bInstallForAll )
295 }
catch (
const deployment::DeploymentException & ) {
297 }
catch (
const ucb::CommandFailedException & ) {
299 }
catch (
const ucb::CommandAbortedException & ) {
301 }
catch (
const lang::IllegalArgumentException & e ) {
303 throw css::lang::WrappedTargetRuntimeException( e.Message,
338 beans::Optional< beans::Ambiguous< sal_Bool > >
option(
343 ::beans::Ambiguous< sal_Bool >
const & reg =
option.Value;
344 if ( reg.IsAmbiguous )
352 catch (
const uno::RuntimeException & ) {
355 catch (
const uno::Exception &) {
376 bool bOptions =
false;
378 if ( ! xPackage->isBundle() )
381 beans::Optional< OUString > aId = xPackage->getIdentifier();
384 OSL_ASSERT( aId.IsPresent );
389 for ( OUString
const & nodeName : seqNames )
396 uno::Any anyLeaves = xNode->getByName(
"Leaves");
402 for ( OUString
const & leafName : seqLeafNames )
404 uno::Any anyLeaf = xLeaves->getByName( leafName );
409 uno::Any anyValue = xLeaf->getPropertyValue(
"Id");
411 OUString
sId = anyValue.get< OUString >();
412 if (
sId == aId.Value )
468 throw frame::TerminationVetoException(
469 "The office cannot be closed while the Extension Manager is running",
470 static_cast<frame::XTerminateListener*
>(
this));
510 const OUString & extensionURL )
514 OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
515 if ( !extensionURL.isEmpty() )
516 s_ExtMgr->installPackage( extensionURL,
true );
525 OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
529 if ( !extensionURL.isEmpty() )
530 s_ExtMgr->installPackage( extensionURL,
true );
static weld::Window * GetFrameWeld(const css::uno::Reference< css::awt::XWindow > &rWindow)
bool installForAllUsers(bool &bInstallForAll)
virtual void addPackageToList(const css::uno::Reference< css::deployment::XPackage > &xPackage, bool bLicenseMissing=false)=0
virtual void prepareChecking()=0
virtual void checkEntries()=0
Manages installing of extensions in the GUI mode.
css::uno::Reference< css::deployment::XExtensionManager > m_xExtensionManager
void SetText(const OUString &rTitle)
static ::rtl::Reference< TheExtensionManager > get(css::uno::Reference< css::uno::XComponentContext > const &xContext, css::uno::Reference< css::awt::XWindow > const &xParent=nullptr, OUString const &view=OUString())
css::uno::Reference< css::container::XNameAccess > m_xNameAccessNodes
bool installPackage(const OUString &rPackageURL, bool bWarnUser=false)
virtual void SAL_CALL notifyTermination(css::lang::EventObject const &evt) override
std::shared_ptr< ExtMgrDialog > m_xExtMgrDialog
static PackageState getPackageState(const css::uno::Reference< css::deployment::XPackage > &xPackage)
css::uno::Reference< css::awt::XWindow > m_xParent
static ::rtl::Reference< TheExtensionManager > s_ExtMgr
virtual void SAL_CALL queryTermination(css::lang::EventObject const &evt) override
std::unique_ptr< ExtensionCmdQueue > m_xExecuteCmdQueue
DialogHelper * getDialogHelper()
css::uno::Reference< css::uno::XComponentContext > m_xContext
bool isReadOnly(const css::uno::Reference< css::deployment::XPackage > &xPackage) const
std::unique_ptr< UpdateRequiredDialog > m_xUpdReqDialog
TheExtensionManager(css::uno::Reference< css::awt::XWindow > xParent, const css::uno::Reference< css::uno::XComponentContext > &xContext)
virtual void SAL_CALL disposing(css::lang::EventObject const &evt) override
weld::Window * getDialog()
bool supportsOptions(const css::uno::Reference< css::deployment::XPackage > &xPackage) const
virtual ~TheExtensionManager() override
void createDialog(const bool bCreateUpdDlg)
bool m_bExtMgrDialogExecuting
OUString m_sGetExtensionsURL
virtual void SAL_CALL modified(css::lang::EventObject const &evt) override
css::uno::Reference< css::frame::XDesktop2 > m_xDesktop
static bool runAsync(const std::shared_ptr< DialogController > &rController, const std::function< void(sal_Int32)> &)
virtual void set_title(const OUString &rTitle)=0
#define TOOLS_WARN_EXCEPTION(area, stream)
uno::Reference< uno::XComponentContext > m_xContext
constexpr OUStringLiteral SHARED_PACKAGE_MANAGER
constexpr OUStringLiteral USER_PACKAGE_MANAGER
static uno::Reference< css::uno::XComponentContext > xContext
css::uno::Sequence< css::uno::Any > InitAnyPropertySequence(::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
Any SAL_CALL getCaughtException()
constexpr OUStringLiteral SHARED_PACKAGE_MANAGER
constexpr OUStringLiteral USER_PACKAGE_MANAGER
DESKTOP_DEPLOYMENTMISC_DLLPUBLIC css::uno::Reference< css::deployment::XPackage > getExtensionWithHighestVersion(css::uno::Sequence< css::uno::Reference< css::deployment::XPackage > > const &seqExtensionsWithSameId)
css::uno::Reference< css::deployment::XPackageRegistry > create(css::uno::Reference< css::deployment::XPackageRegistry > const &xRootRegistry, OUString const &context, OUString const &cachePath, css::uno::Reference< css::uno::XComponentContext > const &xComponentContext)