INTEGRATION: CWS jl102 (1.13.36); FILE MERGED
2008/06/03 08:42:11 jl 1.13.36.3: #i80501# 2008/06/02 14:46:20 jl 1.13.36.2: #i80501# Do not show error when removing bundled extension in case the extension does not exist 2008/05/30 12:20:34 jl 1.13.36.1: #i90096# better error message when extension already exist
This commit is contained in:
parent
ca993f7d6c
commit
6db2045765
1 changed files with 48 additions and 22 deletions
|
@ -7,7 +7,7 @@
|
|||
* OpenOffice.org - a multi-platform office productivity suite
|
||||
*
|
||||
* $RCSfile: unopkg_app.cxx,v $
|
||||
* $Revision: 1.13 $
|
||||
* $Revision: 1.14 $
|
||||
*
|
||||
* This file is part of OpenOffice.org.
|
||||
*
|
||||
|
@ -29,7 +29,6 @@
|
|||
************************************************************************/
|
||||
|
||||
// MARKER(update_precomp.py): autogen include statement, do not remove
|
||||
#include "precompiled_desktop.hxx"
|
||||
|
||||
#include "unopkg_main.h"
|
||||
#include "unopkg_shared.h"
|
||||
|
@ -107,6 +106,8 @@ const OptionInfo s_option_infos [] = {
|
|||
{ RTL_CONSTASCII_STRINGPARAM("log-file"), '\0', true },
|
||||
{ RTL_CONSTASCII_STRINGPARAM("shared"), '\0', false },
|
||||
{ RTL_CONSTASCII_STRINGPARAM("deployment-context"), '\0', true },
|
||||
{ RTL_CONSTASCII_STRINGPARAM("bundled"), '\0', false},
|
||||
|
||||
{ 0, 0, '\0', false }
|
||||
};
|
||||
|
||||
|
@ -203,14 +204,14 @@ void disposeBridges(Reference<css::uno::XComponentContext> ctx)
|
|||
extern "C" int unopkg_main()
|
||||
{
|
||||
tools::extendApplicationEnvironment();
|
||||
|
||||
DisposeGuard disposeGuard;
|
||||
rtl_TextEncoding textenc = osl_getThreadTextEncoding();
|
||||
|
||||
bool bNoOtherErrorMsg = false;
|
||||
OUString subCommand;
|
||||
bool option_shared = false;
|
||||
bool option_force = false;
|
||||
bool option_verbose = false;
|
||||
bool option_bundled = false;
|
||||
bool subcmd_add = false;
|
||||
bool subcmd_gui = false;
|
||||
OUString logFile;
|
||||
|
@ -232,6 +233,8 @@ extern "C" int unopkg_main()
|
|||
s_option_infos, OUSTR("help") );
|
||||
OptionInfo const * info_version = getOptionInfo(
|
||||
s_option_infos, OUSTR("version") );
|
||||
OptionInfo const * info_bundled = getOptionInfo(
|
||||
s_option_infos, OUSTR("bundled") );
|
||||
|
||||
Reference<XComponentContext> xComponentContext;
|
||||
Reference<XComponentContext> xLocalComponentContext;
|
||||
|
@ -239,7 +242,8 @@ extern "C" int unopkg_main()
|
|||
try {
|
||||
sal_uInt32 nPos = 0;
|
||||
sal_uInt32 nCount = osl_getCommandArgCount();
|
||||
if (nCount == 0 || isOption( info_help, &nPos )) {
|
||||
if (nCount == 0 || isOption( info_help, &nPos ))
|
||||
{
|
||||
printf( "%s\n", s_usingText );
|
||||
return 0;
|
||||
}
|
||||
|
@ -247,15 +251,19 @@ extern "C" int unopkg_main()
|
|||
printf( "\n%s Version 1.0\n", APP_NAME );
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
osl_getCommandArg( 0, &subCommand.pData );
|
||||
//consume all bootstrap variables which may occur before the subcommannd
|
||||
while(isBootstrapVariable(&nPos));
|
||||
|
||||
if(nPos >= nCount)
|
||||
return 0;
|
||||
//get the sub command
|
||||
osl_getCommandArg( nPos, &subCommand.pData );
|
||||
++nPos;
|
||||
subCommand = subCommand.trim();
|
||||
subcmd_add = subCommand.equalsAsciiL(
|
||||
RTL_CONSTASCII_STRINGPARAM("add") );
|
||||
subcmd_gui = subCommand.equalsAsciiL(
|
||||
RTL_CONSTASCII_STRINGPARAM("gui") );
|
||||
}
|
||||
|
||||
// sun-command options and packages:
|
||||
while (nPos < nCount)
|
||||
|
@ -267,6 +275,7 @@ extern "C" int unopkg_main()
|
|||
else if (!readOption( &option_verbose, info_verbose, &nPos ) &&
|
||||
!readOption( &option_shared, info_shared, &nPos ) &&
|
||||
!readOption( &option_force, info_force, &nPos ) &&
|
||||
!readOption( &option_bundled, info_bundled, &nPos ) &&
|
||||
!readArgument( &deploymentContext, info_context, &nPos ) &&
|
||||
!isBootstrapVariable(&nPos))
|
||||
{
|
||||
|
@ -300,6 +309,15 @@ extern "C" int unopkg_main()
|
|||
}
|
||||
}
|
||||
|
||||
//make sure the bundled option was provided together with shared
|
||||
if (option_bundled && !option_shared)
|
||||
{
|
||||
fprintf( stderr,
|
||||
"\nERROR: option --bundled can only be used together with --shared!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
xComponentContext = getUNO(
|
||||
disposeGuard, option_verbose, option_shared, subcmd_gui,
|
||||
xLocalComponentContext );
|
||||
|
@ -328,7 +346,7 @@ extern "C" int unopkg_main()
|
|||
|
||||
Reference< ::com::sun::star::ucb::XCommandEnvironment > xCmdEnv(
|
||||
createCmdEnv( xComponentContext, logFile,
|
||||
option_force, option_verbose) );
|
||||
option_force, option_verbose, option_bundled) );
|
||||
|
||||
if (subcmd_add ||
|
||||
subCommand.equalsAsciiL(
|
||||
|
@ -358,8 +376,14 @@ extern "C" int unopkg_main()
|
|||
Reference<deployment::XPackage> p(
|
||||
findPackage(
|
||||
xPackageManager, xCmdEnv, cmdPackage ) );
|
||||
if ( !p.is() )
|
||||
//Todo. temporary preventing exception in bundled case.
|
||||
//In case of a bundled extension, remove would be called as a result of
|
||||
//uninstalling a rpm. Then we do not want to show an error when the
|
||||
//extension does not exist, because the package will be uninstalled anyway
|
||||
//and the error would only confuse people.
|
||||
if ( !p.is() && !option_bundled)
|
||||
throw;
|
||||
else if (p.is())
|
||||
xPackageManager->removePackage(
|
||||
::dp_misc::getIdentifier(p), p->getName(),
|
||||
Reference<task::XAbortChannel>(), xCmdEnv );
|
||||
|
@ -435,8 +459,9 @@ extern "C" int unopkg_main()
|
|||
disposeBridges(xLocalComponentContext);
|
||||
return 0;
|
||||
}
|
||||
catch (ucb::CommandFailedException &) {
|
||||
// already handled by cmdenv
|
||||
catch (ucb::CommandFailedException &e) {
|
||||
fprintf(stderr, "%s\n", ::rtl::OUStringToOString(e.Message, textenc).getStr());
|
||||
bNoOtherErrorMsg = true;
|
||||
}
|
||||
catch (ucb::CommandAbortedException &) {
|
||||
fprintf( stderr, "\n%s aborted!\n", APP_NAME );
|
||||
|
@ -461,6 +486,7 @@ extern "C" int unopkg_main()
|
|||
option_verbose ? e.Message + OUSTR("\nException details: \n") +
|
||||
::comphelper::anyToString(exc) : e.Message, textenc).getStr() );
|
||||
}
|
||||
if (!bNoOtherErrorMsg)
|
||||
fprintf( stderr, "\n%s failed.\n", APP_NAME );
|
||||
disposeBridges(xLocalComponentContext);
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue