--- sfx2/source/appl/sfxhelp.cxx.old	2007-07-06 12:16:30.000000000 +0200
+++ sfx2/source/appl/sfxhelp.cxx	2007-08-28 21:57:04.000000000 +0200
@@ -105,6 +105,9 @@
 #ifndef _UTL_CONFIGMGR_HXX_
 #include <unotools/configmgr.hxx>
 #endif
+#ifndef _UNOTOOLS_LOCALFILEHELPER_HXX
+#include <unotools/localfilehelper.hxx>
+#endif
 #ifndef _UCBHELPER_CONTENT_HXX
 #include <ucbhelper/content.hxx>
 #endif
@@ -185,13 +188,13 @@ rtl::OUString HelpLocaleString()
 		bool bOk = (aLocale >>= aLocaleStr);
 		if ( bOk )
 		{
-			rtl::OUString aBaseInstallPath;
-			// utl::Bootstrap::PathStatus aBaseLocateResult =
-			utl::Bootstrap::locateBaseInstallation(aBaseInstallPath);
-			static const char *szHelpPath = "/help/";
+			String sBaseHelpPathString;
+			::utl::LocalFileHelper::ConvertPhysicalNameToURL( SvtPathOptions().GetHelpPath(), sBaseHelpPathString );
+
+			rtl::OUString sBaseHelpPath( sBaseHelpPathString );
+			sBaseHelpPath += rtl::OUString::createFromAscii("/");
 
-			rtl::OUString sHelpPath = aBaseInstallPath +
-				rtl::OUString::createFromAscii(szHelpPath) + aLocaleStr;
+			rtl::OUString sHelpPath = sBaseHelpPath + aLocaleStr;
 			osl::DirectoryItem aDirItem;
 
 			if (!osl::DirectoryItem::get(sHelpPath, aDirItem) == osl::FileBase::E_None)
@@ -202,9 +205,8 @@ rtl::OUString HelpLocaleString()
 				if (nSepPos != STRING_NOTFOUND)
 				{
 					bOk = true;
-        			sLang = sLang.Copy( 0, nSepPos );
-					sHelpPath = aBaseInstallPath +
-						rtl::OUString::createFromAscii(szHelpPath) + sLang;
+        				sLang = sLang.Copy( 0, nSepPos );
+					sHelpPath = sBaseHelpPath + sLang;
 					if (!osl::DirectoryItem::get(sHelpPath, aDirItem) == osl::FileBase::E_None)
 						bOk = false;
 				}
--- svtools/source/config/pathoptions.cxx.old	2007-06-27 23:15:56.000000000 +0200
+++ svtools/source/config/pathoptions.cxx	2007-08-29 18:11:12.000000000 +0200
@@ -348,7 +348,11 @@ const String& SvtPathOptions_Impl::GetPa
 		{
             // These office paths have to be converted to system pathes
             utl::LocalFileHelper::ConvertURLToPhysicalName( aPathValue, aResult );
-            aPathValue = aResult;
+            // FIXME: The initial value (not modified by SetPath) is just a path, so the URL-conversion fails.
+            //        The best solution is to fix the module xmlhelp to accept the URL. Then we could remove
+            //        all these ugly conversions.
+            if ( aResult.Len() != 0 )
+        	    aPathValue = aResult;
 		}
 
 		m_aPathArray[ ePath ] = aPathValue;
