27#include <com/sun/star/registry/XSimpleRegistry.hpp>
28#include <com/sun/star/lang/XInitialization.hpp>
29#include <com/sun/star/lang/XMultiServiceFactory.hpp>
30#include <com/sun/star/uno/Exception.hpp>
31#include <com/sun/star/ucb/UniversalContentBroker.hpp>
33#include <officecfg/Setup.hxx>
34#include <osl/file.hxx>
35#include <rtl/bootstrap.hxx>
66 Reference<XMultiServiceFactory>
sm;
68 OUString aUnoRc(
"file:///assets/program/unorc" );
73 OUString uri(
"$APP_DATA_DIR" );
74 rtl_bootstrap_expandMacros( &uri.pData );
75 OUString aUnoRc(
"file://" + uri +
"/unorc");
103 officecfg::Setup::Office::ooSetupConnectionURL::get());
104 if (!conDcpCfg.isEmpty()) {
108 std::vector< OUString >
const & conDcp = rCmdLine.
GetAccept();
109 for (
auto const& elem : conDcp)
120typedef std::map< OUString, css::uno::Reference<css::lang::XInitialization> >
AcceptorMap;
129 OUString& CurrentTempURL()
131 static OUString SINGLETON;
142 AcceptorMap::const_iterator pIter = rMap.find(aAcceptString);
143 if (pIter != rMap.end() )
147 Reference< XComponentContext >
xContext = ::comphelper::getProcessComponentContext();
148 Reference<XInitialization> rAcceptor(
149 xContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.office.Acceptor",
xContext),
151 if ( rAcceptor.is() )
155 rAcceptor->initialize(
aSeq );
156 rMap.emplace(aAcceptString, rAcceptor);
158 catch (
const css::uno::Exception&)
168 SAL_WARN(
"desktop.app",
"Acceptor already exists.");
180 void operator() (
const AcceptorMap::value_type& val) {
181 if (val.second.is()) {
182 val.second->initialize(
m_aSeq);
199 std::for_each(rMap.begin(), rMap.end(), enable());
207 if (aAcceptString ==
"all") {
212 AcceptorMap::const_iterator pIter = rMap.find(aAcceptString);
213 if (pIter != rMap.end() ) {
216 rMap.erase(aAcceptString);
218 SAL_WARN(
"desktop.app",
"Found no acceptor to remove");
227 acceptorMap().clear();
232 OUString aTempBaseURL;
242 OUString aMsg =
DpResId(STR_BOOTSTRAP_ERR_NO_PATHSET_SERVICE);
243 e.Message = aMsg + e.Message;
248 OUString aTempPath = ::utl::SetTempNameBaseDirectory( aTempBaseURL );
249 if ( aTempPath.isEmpty()
250 && ::osl::File::getTempDirURL( aTempBaseURL ) == osl::FileBase::E_None )
252 aTempPath = ::utl::SetTempNameBaseDirectory( aTempBaseURL );
257 if (osl::FileBase::getFileURLFromSystemPath( aTempPath, aRet )
258 != osl::FileBase::E_None)
262 CurrentTempURL() = aRet;
268 OUString &rCurrentTempURL = CurrentTempURL();
269 if ( !rCurrentTempURL.isEmpty() )
271 ::utl::UCBContentHelper::Kill( rCurrentTempURL );
static void EnableHeadlessMode(bool dialogsAreFatal)
static void EnableEventTestingMode()
const OUString & GetTempPath() const
std::vector< OUString > const & GetAccept() const
bool IsEventTesting() const
static void RemoveTemporaryDirectory()
static void DeregisterServices()
static void destroyAcceptor(const OUString &aDescription)
static void InitApplicationServiceManager()
static void createAcceptor(const OUString &aDescription)
bool m_bServicesRegistered
static CommandLineArgs & GetCommandLineArgs()
static void CreateTemporaryDirectory()
#define TOOLS_WARN_EXCEPTION(area, stream)
OUString DpResId(TranslateId aId)
static uno::Reference< css::uno::XComponentContext > xContext
Sequence< sal_Int8 > aSeq
#define SAL_WARN(area, stream)
void setProcessServiceFactory(const Reference< XMultiServiceFactory > &xSMgr)
Reference< XComponentContext > getProcessComponentContext()
CPPUHELPER_DLLPUBLIC css::uno::Reference< css::uno::XComponentContext > SAL_CALL defaultBootstrap_InitialComponentContext()
std::map< OUString, css::uno::Reference< css::lang::XInitialization > > AcceptorMap
IMPL_STATIC_LINK_NOARG(Desktop, AsyncInitFirstRun, Timer *, void)
static void configureUcb()
css::uno::Reference< css::deployment::XPackageRegistry > create(css::uno::Reference< css::deployment::XPackageRegistry > const &xRootRegistry, OUString const &context, OUString const &cachePath, css::uno::Reference< css::uno::XComponentContext > const &xComponentContext)