 | OO-Snippets: Use the OOo package manager to add a package (the ooRexx scripting language ) globally to OpenOffice.Commons| Keywords | Package Manager, ooRexx, Scripting Engine, Add Package |
|---|
| Language | ooRexx |
|---|
| Application | Office |
|---|
| Authors | Rony G. Flatscher (initial)
|
|---|
| Supported Versions | 2.0.x |
|---|
| Supported OS | All |
|---|
| Question | How can I add a (global) package programmatically?
For automatic installation of (global) packages one needs a
means to install packages.
|
|---|
| Answer | Use the built-in package manager singleton and related classes. |
|---|
xContext = UNO.connect()
XMcf = xContext~getServiceManager
packageName = "ScriptProviderForooRexx.jar"
mediaType = "application/vnd.sun.star.uno-component;type=Java"
tmpName = stream(packageName, 'C', "QUERY EXISTS")
if tmpName = "" then
do
.error~say("Cannot find" pp(packageName)", aborting...")
exit -1
end
urlName = ConvertToUrl(tmpName)
pmName="/singletons/com.sun.star.deployment.thePackageManagerFactory"
xpmf=xContext~getValueByName(pmName)~XPackageManagerFactory
call removePackage xpmf~getPackageManager("user"), packageName
xpmShared=xpmf~getPackageManager("shared")
call removePackage xpmShared, packageName
xpmShared~addPackage(urlName, mediaType, .nil, .nil)
dp=getDeployedPackage(xpmShared, packageName)
if .nil<>dp then
say "Is ["packageName"] registered?" "["dp~isRegistered(.nil,.nil)~value~value"]"
else
say "["packageName"] could not be added!"
::requires UNO.CLS
::routine removePackage
use arg xpmf, packageName
signal on any
xpmf~removePackage(packageName, .nil, .nil)
any: return
::routine getDeployedPackage
use arg xpm, packageName
signal on any
return xpm~getDeployedPackage(packageName, .nil)
any: return .nil
|
Changelog| Date | User | Modification |
|---|
| 2006-07-04 | RGF | Initial version | | 2006-07-08 | RGF | Version with embedded link to IDL docu. |
|