diff options
Diffstat (limited to 'desktop/source/deployment/misc/dp_dependencies.cxx')
-rw-r--r-- | desktop/source/deployment/misc/dp_dependencies.cxx | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/desktop/source/deployment/misc/dp_dependencies.cxx b/desktop/source/deployment/misc/dp_dependencies.cxx index 4fc3877573de..5556b18bc843 100644 --- a/desktop/source/deployment/misc/dp_dependencies.cxx +++ b/desktop/source/deployment/misc/dp_dependencies.cxx @@ -59,15 +59,18 @@ namespace css = ::com::sun::star; static char const xmlNamespace[] = "http://openoffice.org/extensions/description/2006"; -#define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) - -bool satisfiesMinimalVersion( ::rtl::OUString const & version ) -{ - ::rtl::OUString aBaseVersion( UNISTRING( "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":Version:OOOPackageVersion}" ) ); - ::rtl::Bootstrap::expandMacros( aBaseVersion ); +::dp_misc::Order compareWithVersion(::rtl::OUString const & version) { + ::rtl::OUString v( + RTL_CONSTASCII_USTRINGPARAM( + "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") + ":Version:OOOPackageVersion}")); + ::rtl::Bootstrap::expandMacros(v); + return ::dp_misc::compareVersions(v, version); +} - return ::dp_misc::compareVersions(version, aBaseVersion) != ::dp_misc::GREATER; -}; +bool satisfiesMinimalVersion(::rtl::OUString const & version) { + return compareWithVersion(version) != ::dp_misc::LESS; +} } @@ -88,9 +91,6 @@ check(::dp_misc::DescriptionInfoset const & infoset) { css::uno::Reference< css::xml::dom::XElement > e( deps->item(i), css::uno::UNO_QUERY_THROW); bool sat = false; - // Currently, the only satisfied dependency is OpenOffice.org-minimal- - // version with a value of the current OOo release or less (the actual - // version string has to be updated here for every OOo release): if (e->getNamespaceURI().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(xmlNamespace)) && e->getTagName().equalsAsciiL( @@ -99,6 +99,17 @@ check(::dp_misc::DescriptionInfoset const & infoset) { sat = satisfiesMinimalVersion( e->getAttribute( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))); + } else if (e->getNamespaceURI().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM(xmlNamespace)) + && e->getTagName().equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM( + "OpenOffice.org-maximal-version"))) + { + sat = + compareWithVersion( + e->getAttribute( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))) + != ::dp_misc::GREATER; } else if (e->hasAttributeNS( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)), |