325 lines
13 KiB
Text
325 lines
13 KiB
Text
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
module com { module sun { module star { module deployment {
|
|
|
|
/** The XExtensionManager interface is used to manage extensions
|
|
in the user, shared and bundled repository.
|
|
|
|
@see ExtensionManager
|
|
@since OOo 3.3
|
|
*/
|
|
interface XExtensionManager
|
|
{
|
|
/** interface to notify disposing
|
|
*/
|
|
interface com::sun::star::lang::XComponent;
|
|
|
|
/** interface to notify changes of the set of deployed packages of
|
|
this manager
|
|
*/
|
|
interface com::sun::star::util::XModifyBroadcaster;
|
|
|
|
|
|
/** gets the supported XPackageTypeInfos.
|
|
|
|
@return
|
|
supported XPackageTypeInfos.
|
|
*/
|
|
sequence<XPackageTypeInfo> getSupportedPackageTypes();
|
|
|
|
/** creates a command channel to be used to asynchronously abort a command.
|
|
|
|
@return
|
|
abort channel
|
|
*/
|
|
com::sun::star::task::XAbortChannel createAbortChannel();
|
|
|
|
/** adds an extension.
|
|
|
|
The properties argument is currently only used to suppress the license information
|
|
for shared extensions.
|
|
|
|
@param url
|
|
package URL, must be UCB conform
|
|
@param properties
|
|
additional properties, for example, that the license is to be
|
|
suppressed (if supported by the extension)
|
|
@param repository
|
|
the name of the repository
|
|
@param xAbortChannel
|
|
abort channel to asynchronously abort the adding process,
|
|
or null
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
@return
|
|
object representing the extension.
|
|
*/
|
|
XPackage addExtension( [in] string url,
|
|
[in] sequence<com::sun::star::beans::NamedValue> properties,
|
|
[in] string repository,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** removes an extension.
|
|
|
|
@param identifier
|
|
package identifier
|
|
@param fileName
|
|
package file name
|
|
@param repository
|
|
the name of the repository
|
|
@param xAbortChannel
|
|
abort channel to asynchronously abort the removing process,
|
|
or null
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
*/
|
|
void removeExtension(
|
|
[in] string identifier,
|
|
[in] string fileName,
|
|
[in] string repository,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
|
|
/** enable an extension.
|
|
|
|
If the extension is not from the user repository then an
|
|
IllegalArgumentException is thrown.
|
|
|
|
@param extension
|
|
the extension which is to be enabled.
|
|
@param xAbortChannel
|
|
abort channel to asynchronously abort the removing process,
|
|
or null
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
*/
|
|
void enableExtension(
|
|
[in] XPackage extension,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** disable an extension.
|
|
|
|
If the extension is not from the user repository then an
|
|
IllegalArgumentException is thrown.
|
|
|
|
@param extension
|
|
the extension which is to be disabled
|
|
@param xAbortChannel
|
|
abort channel to asynchronously abort the removing process,
|
|
or null
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
*/
|
|
void disableExtension(
|
|
[in] XPackage extension,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** gets all currently installed extensions, including disabled
|
|
user extensions.
|
|
|
|
@param repository
|
|
the repository from which the extensions are returned
|
|
@param xAbortChannel
|
|
abort channel to asynchronously abort the removing process,
|
|
or null
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
@return
|
|
all currently installed packages
|
|
*/
|
|
sequence<XPackage> getDeployedExtensions(
|
|
[in] string repository,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
|
|
/** gets an installed extensions.
|
|
|
|
@param repository
|
|
the name of the repository
|
|
@param identifier
|
|
extension identifier
|
|
@param fileName
|
|
extension file name
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
@return
|
|
XPackage object
|
|
*/
|
|
XPackage getDeployedExtension(
|
|
[in] string repository,
|
|
[in] string identifier,
|
|
[in] string fileName,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** gets all extensions with the same identifier from all repositories.
|
|
|
|
The extension at the first position in the returned sequence represents
|
|
the extension from the user repository. The next element is from the shared
|
|
and the last one is from the bundled repository.
|
|
If one repository does not contain this extension, then the respective
|
|
element is a null reference.
|
|
*/
|
|
sequence<XPackage> getExtensionsWithSameIdentifier(
|
|
[in] string identifier,
|
|
[in] string fileName,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
|
|
/** returns a sequence containing all installed extensions.
|
|
|
|
The members of the returned sequence correspond to an extension with a
|
|
particular extension identifier. The members are also sequences which
|
|
contain as many elements as there are repositories. Those are ordered
|
|
according to the priority of the repository. That is, the first member
|
|
is the extension from the user repository, the second is from the shared
|
|
repository and the last is from the bundled repository.
|
|
*/
|
|
sequence<sequence<XPackage> > getAllExtensions(
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
|
|
/** Expert feature: erases the underlying registry cache and reinstalls
|
|
all previously added extensions. Please keep in mind that all
|
|
registration status get lost.
|
|
<p>
|
|
Please use this in case of suspected cache inconsistencies only.
|
|
</p>
|
|
@param force
|
|
set to true when called during soffice bootstrap after cleaning
|
|
old extension cache
|
|
@param repository
|
|
the name of the repository
|
|
@param xAbortChannel
|
|
abort channel to asynchronously abort the adding process
|
|
@param xCmdEnv
|
|
command environment for error and progress handling
|
|
*/
|
|
void reinstallDeployedExtensions(
|
|
[in] boolean force,
|
|
[in] string repository,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
|
|
/** synchronizes the extension database with the contents of the extensions
|
|
folder of shared and bundled extensions.
|
|
|
|
Added extensions will be added to the database and removed extensions
|
|
will be removed from the database.
|
|
The active extensions are determined. That is, shared or bundled extensions
|
|
are not necessarily registered (XPackage::registerPackage()).
|
|
|
|
@return
|
|
If true - then at least one extension was removed or added. Otherwise
|
|
nothing was changed.
|
|
*/
|
|
boolean synchronize(
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** returns all extensions which are currently not in use
|
|
because the user did not accept the license.
|
|
|
|
The function will not return any object for the user repository, because
|
|
a user extension will not be kept in the user repository if its license
|
|
is declined. Only extensions which are registered at start-up of OOo,
|
|
that is, shared and bundled extensions, can be returned.
|
|
|
|
Extensions which allow the license to be suppressed, that is, it does not
|
|
need to be displayed, and which are installed with the corresponding option,
|
|
are also not returned.
|
|
|
|
Extensions returned by these functions are not returned by
|
|
XExtensionManager::getDeployedExtension()
|
|
XExtensionManager::getDeployedExtensions()
|
|
XExtensionManager::getAllExtensions()
|
|
XExtensionManager::getExtensionsWithSameIdentifier()
|
|
*/
|
|
sequence<XPackage> getExtensionsWithUnacceptedLicenses(
|
|
[in] string repository,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** check if all prerequisites for the extension are fulfilled
|
|
and activates it, if possible.
|
|
*/
|
|
long checkPrerequisitesAndEnable(
|
|
[in] XPackage extension,
|
|
[in] com::sun::star::task::XAbortChannel xAbortChannel,
|
|
[in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
|
|
raises (DeploymentException,
|
|
com::sun::star::ucb::CommandFailedException,
|
|
com::sun::star::ucb::CommandAbortedException,
|
|
com::sun::star::lang::IllegalArgumentException);
|
|
|
|
/** determines if the current user has write access to the extensions folder
|
|
of the repository.
|
|
*/
|
|
boolean isReadOnlyRepository([in] string repository);
|
|
};
|
|
|
|
}; }; }; };
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|