Re: AddOn works on Windows but not on Linux
Stephan Bergmann <[email protected]>
| Newsgroups | gmane.comp.openoffice.devel.api |
|---|---|
| Message-ID | <[email protected]> |
On 10/20/10 07:57, Martin Dobiasch wrote:
> I'm having one major problem:
> I need to provide some tools with my extension. To run them I try to detect
> the location of my package in the filesystem. With Windows no problem.
> On Linux if the package the path is always empty.
> My code, runs without an exception, but the URL seems to be empty:
> try
> {
> XPackageInformationProvider xPackageInformationProvider=
> PackageInformationProvider
> .get(m_xContext);
>
> String location= xPackageInformationProvider
> .getPackageLocation("at.univie.midicsdext"); //has to be the
> id from description.xml
Are you sure that location is already an empty string, or do you only
observe that PackagePath below is an empty string?
> Object oTransformer= m_xContext.getServiceManager()
>
> .createInstanceWithContext("com.sun.star.util.URLTransformer",
> m_xContext);
> XURLTransformer xTransformer= (XURLTransformer) UnoRuntime
> .queryInterface(XURLTransformer.class, oTransformer);
>
> com.sun.star.util.URL[] oURL= new com.sun.star.util.URL[1];
> oURL[0]= new com.sun.star.util.URL();
> oURL[0].Complete= location + "/midicsv/";
> xTransformer.parseStrict(oURL);
>
> PackagePath= oURL[0].Path + oURL[0].Name;
For adding a "midicsv" segment to the path of the URL represented by
location, I would not use URLTransformer (I have my personal doubts
about it), but com.sun.star.uri.UriReferenceFactory; something like:
UriReferenceFactory f = UriReferenceFactory.create(m_xContext);
XUriReference url = f.makeAbsolute(
f.parse(location), f.parse("midicsv"), false,
RelativeUriExcessParentSegments.ERROR);
if (sub == null) { ... error ... }
PackagePath = url.getUriReference();
// assuming that PackagePath shall denote a URL
-Stephan
> Debug.showMessage("Packpath: " + PackagePath);
> }
> catch (com.sun.star.uno.Exception ex)
> {
> Debug.showException(ex, "MidiCSD::updatePackagePath");
> System.out.println(ex);
> System.out.println(ex.getStackTrace());
> }