<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jl</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jl"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/Jl"/>
	<updated>2026-05-05T22:26:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Value_Objects&amp;diff=195519</id>
		<title>Documentation/DevGuide/ProUNO/Bridge/Value Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Value_Objects&amp;diff=195519"/>
		<updated>2011-03-29T10:37:40Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ProUNOTOC&lt;br /&gt;
|ProUNO2c=block&lt;br /&gt;
|ABridgeSvcMgr=block&lt;br /&gt;
|ABridgeTM=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/ProUNO/Bridge/Client-Side Conversions&lt;br /&gt;
|NextPage=Documentation/DevGuide/ProUNO/Bridge/Exceptions and Errorcodes&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/Bridge/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Value Objects}}&lt;br /&gt;
==The Automation Value Object==&lt;br /&gt;
The object can be obtained from any uno object by calling the Bridge_GetValueObject on it. It holds a value and a type description, hence it resembles a UNO any or a VARIANT. A Value Object can stand in for all kinds of arguments in a call to a UNO method from a automation language. A Value Object is used when the bridge needs additional information for the parameter conversion. This is the case when a UNO method takes an any as argument. In many cases, however, one can do without a Value Object if one provides an argument which maps exactly to the expected UNO type according to the default mapping. For example, a UNO method takes an any as argument which is expected to contain a short. Then it would be sufficient to provide a Long in Visual Basic. But in JScript there are no types and implicitly a four byte integer would be passed to the call. Then the any would not contain a short and the call may fail. In that case the Value Object would guarantee the proper conversion.&lt;br /&gt;
&lt;br /&gt;
A Value Object also enables in/out and out parameter in languages which only know in-parameters in functions. JScript is a particular case because one can use Array objects as well as Value Objects for those parameters.&lt;br /&gt;
&lt;br /&gt;
A Value Object exposes four functions that can be accessed through &amp;lt;code&amp;gt;IDispatch&amp;lt;/code&amp;gt;. These are:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void Set( [in]VARIANT type, [in]VARIANT value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Assigns a type and a value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void Get( [out,retval] VARIANT* val);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Returns the value contained in the object. Get is used when the Value Object was used as inout or out parameter.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void InitOutParam();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tells the object that it is used as out parameter.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void InitInOutParam( [in]VARIANT type, [in]VARIANT value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tells the object that it is used as inout parameter and passes the value for the in parameter, as well as the type.&lt;br /&gt;
&lt;br /&gt;
When the Value Object is used as in or inout parameter then specify the type of the value. The names of types correspond to the names used in UNO IDL, except for the “object” name. The following table shows what types can be specified.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
!Name (used with Value Object) &lt;br /&gt;
!UNO IDL &lt;br /&gt;
|-&lt;br /&gt;
|char &lt;br /&gt;
|char &lt;br /&gt;
|-&lt;br /&gt;
|boolean &lt;br /&gt;
|boolean &lt;br /&gt;
|-&lt;br /&gt;
|byte &lt;br /&gt;
|byte &lt;br /&gt;
|-&lt;br /&gt;
|unsigned  &lt;br /&gt;
|unsigned byte &lt;br /&gt;
|-&lt;br /&gt;
|short &lt;br /&gt;
|short &lt;br /&gt;
|-&lt;br /&gt;
|unsigned short &lt;br /&gt;
|unsigned short &lt;br /&gt;
|-&lt;br /&gt;
|long &lt;br /&gt;
|long &lt;br /&gt;
|-&lt;br /&gt;
|unsigned long &lt;br /&gt;
|unsigned long &lt;br /&gt;
|-&lt;br /&gt;
|string &lt;br /&gt;
|string &lt;br /&gt;
|-&lt;br /&gt;
|float &lt;br /&gt;
|float &lt;br /&gt;
|-&lt;br /&gt;
|double &lt;br /&gt;
|double &lt;br /&gt;
|-&lt;br /&gt;
|any &lt;br /&gt;
|any &lt;br /&gt;
|-&lt;br /&gt;
|object &lt;br /&gt;
|some UNO interface &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To show that the value is a sequence, put brackets before the names, for example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  []char - sequence&amp;lt;char&amp;gt;&lt;br /&gt;
  [][]char - sequence &amp;lt; sequence &amp;lt;char &amp;gt; &amp;gt; &lt;br /&gt;
  [][][]char - sequence &amp;lt; sequence &amp;lt; sequence &amp;lt; char &amp;gt; &amp;gt; &amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;Value Objects&amp;lt;/code&amp;gt; are provided by the bridge and can be obtained from the service manager object. The service manager is a registered COM component with the ProgId “com.sun.star.ServiceManager” ([[Documentation/DevGuide/ProUNO/Bridge/The Service Manager Component|The Service Manager Component]]). For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var valueObject= objSericeManager.Bridge_GetValueObject();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
To use a &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; as in parameter, specify the type and pass the value to the object:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL&lt;br /&gt;
  void doSomething( [in] sequence&amp;lt; short &amp;gt; ar);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var value= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  var array= new Array(1,2,3);&lt;br /&gt;
  value.Set(&amp;quot;[]short&amp;quot;,array);&lt;br /&gt;
  object.doSomething( value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In the previous example, the &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; was defined to be a sequence of short values. The array could also contain &amp;lt;code&amp;gt;Value Objects&amp;lt;/code&amp;gt; again:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  var value1= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  var value2= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  value1.Set(&amp;quot;short“, 100);&lt;br /&gt;
  value2.Set(&amp;quot;short&amp;quot;, 111);&lt;br /&gt;
  var array= new Array();&lt;br /&gt;
  array[0]= value1;&lt;br /&gt;
  array[1]= value2;&lt;br /&gt;
  var allValue= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  allValue.Set(&amp;quot;[]short“, array);&lt;br /&gt;
  object.doSomething( allValue);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
If a function takes an out parameter, tell the &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL&lt;br /&gt;
  void doSomething( [out] long);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var value= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  value.InitOutParam();&lt;br /&gt;
  object.doSomething( value);&lt;br /&gt;
  var out= value.Get();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
When the &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; is an &amp;lt;code&amp;gt;inout&amp;lt;/code&amp;gt; parameter, it needs to know the type and value as well:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  //UNO IDL&lt;br /&gt;
  void doSomething( [inout] long);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  //JScript&lt;br /&gt;
  var value= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  value.InitInOutParam(&amp;quot;long&amp;quot;, 123);&lt;br /&gt;
  object.doSomething(value);&lt;br /&gt;
  var out= value.Get();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UNO Value Object (as of OOo 3.4)==&lt;br /&gt;
The UNO Value Object is basically the same as the Automation Value Object. It can be provided as argument in calls on automation objects. The value object is an uno service and implements &amp;lt;idl&amp;gt;com.sun.star.bridge.oleautomation.XValueObject&amp;lt;/idl&amp;gt;. The type description is provided by flags which resemble the &amp;lt;code&amp;gt;VARTYPE&amp;lt;/code&amp;gt; as used by &amp;lt;code&amp;gt;VARIANTs&amp;lt;/code&amp;gt;. All possible type flags are provided as properties by the XValueObject interface.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;OOo Basic&lt;br /&gt;
&amp;#039;function expects a VARIANT of VT_I1 (signed char)&lt;br /&gt;
Dim value As Object&lt;br /&gt;
value = createUnoService(&amp;quot;com.sun.star.bridge.oleautomation.ValueObject&amp;quot;)&lt;br /&gt;
value.set(valueI2.VT_I1, 100)&lt;br /&gt;
automation_object.func(value)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;function expects a VARIANT of SAFEARRAY of VT_I2&lt;br /&gt;
Dim valueI2 As Object&lt;br /&gt;
Dim arI2(1) As Long&lt;br /&gt;
arI2(0) = 1000&lt;br /&gt;
arI2(1) = 1000&lt;br /&gt;
valueI2 = createUnoService(&amp;quot;com.sun.star.bridge.oleautomation.ValueObject&amp;quot;)&lt;br /&gt;
valueI2.set(valueI2.VT_I2 Or valueI2.VT_ARRAY, arI2)&lt;br /&gt;
automation_object.func(valueI2)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a Value Object is provided as out or in/out parameter then the type will be changed after the function has returned. Therefore the argument type must be of Variant. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Dim valueLong As Variant&lt;br /&gt;
valueLong = createUnoService(&amp;quot;com.sun.star.bridge.oleautomation.ValueObject&amp;quot;)&lt;br /&gt;
valueLong.set(valueLong.VT_INT, 1000)&lt;br /&gt;
automation_object.outLong(valueLong) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Professional UNO]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Value_Objects&amp;diff=195518</id>
		<title>Documentation/DevGuide/ProUNO/Bridge/Value Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Value_Objects&amp;diff=195518"/>
		<updated>2011-03-29T10:36:26Z</updated>

		<summary type="html">&lt;p&gt;Jl: Uno Value Object&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ProUNOTOC&lt;br /&gt;
|ProUNO2c=block&lt;br /&gt;
|ABridgeSvcMgr=block&lt;br /&gt;
|ABridgeTM=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/ProUNO/Bridge/Client-Side Conversions&lt;br /&gt;
|NextPage=Documentation/DevGuide/ProUNO/Bridge/Exceptions and Errorcodes&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/Bridge/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Value Objects}}&lt;br /&gt;
==The Automation Value Object==&lt;br /&gt;
The object can be obtained from any uno object by calling the Bridge_GetValueObject on it. It holds a value and a type description, hence it resembles a UNO any or a VARIANT. A Value Object can stand in for all kinds of arguments in a call to a UNO method from a automation language. A Value Object is used when the bridge needs additional information for the parameter conversion. This is the case when a UNO method takes an any as argument. In many cases, however, one can do without a Value Object if one provides an argument which maps exactly to the expected UNO type according to the default mapping. For example, a UNO method takes an any as argument which is expected to contain a short. Then it would be sufficient to provide a Long in Visual Basic. But in JScript there are no types and implicitly a four byte integer would be passed to the call. Then the any would not contain a short and the call may fail. In that case the Value Object would guarantee the proper conversion.&lt;br /&gt;
&lt;br /&gt;
A Value Object also enables in/out and out parameter in languages which only know in-parameters in functions. JScript is a particular case because one can use Array objects as well as Value Objects for those parameters.&lt;br /&gt;
&lt;br /&gt;
A Value Object exposes four functions that can be accessed through &amp;lt;code&amp;gt;IDispatch&amp;lt;/code&amp;gt;. These are:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void Set( [in]VARIANT type, [in]VARIANT value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Assigns a type and a value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void Get( [out,retval] VARIANT* val);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Returns the value contained in the object. Get is used when the Value Object was used as inout or out parameter.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void InitOutParam();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tells the object that it is used as out parameter.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void InitInOutParam( [in]VARIANT type, [in]VARIANT value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tells the object that it is used as inout parameter and passes the value for the in parameter, as well as the type.&lt;br /&gt;
&lt;br /&gt;
When the Value Object is used as in or inout parameter then specify the type of the value. The names of types correspond to the names used in UNO IDL, except for the “object” name. The following table shows what types can be specified.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
!Name (used with Value Object) &lt;br /&gt;
!UNO IDL &lt;br /&gt;
|-&lt;br /&gt;
|char &lt;br /&gt;
|char &lt;br /&gt;
|-&lt;br /&gt;
|boolean &lt;br /&gt;
|boolean &lt;br /&gt;
|-&lt;br /&gt;
|byte &lt;br /&gt;
|byte &lt;br /&gt;
|-&lt;br /&gt;
|unsigned  &lt;br /&gt;
|unsigned byte &lt;br /&gt;
|-&lt;br /&gt;
|short &lt;br /&gt;
|short &lt;br /&gt;
|-&lt;br /&gt;
|unsigned short &lt;br /&gt;
|unsigned short &lt;br /&gt;
|-&lt;br /&gt;
|long &lt;br /&gt;
|long &lt;br /&gt;
|-&lt;br /&gt;
|unsigned long &lt;br /&gt;
|unsigned long &lt;br /&gt;
|-&lt;br /&gt;
|string &lt;br /&gt;
|string &lt;br /&gt;
|-&lt;br /&gt;
|float &lt;br /&gt;
|float &lt;br /&gt;
|-&lt;br /&gt;
|double &lt;br /&gt;
|double &lt;br /&gt;
|-&lt;br /&gt;
|any &lt;br /&gt;
|any &lt;br /&gt;
|-&lt;br /&gt;
|object &lt;br /&gt;
|some UNO interface &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To show that the value is a sequence, put brackets before the names, for example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  []char - sequence&amp;lt;char&amp;gt;&lt;br /&gt;
  [][]char - sequence &amp;lt; sequence &amp;lt;char &amp;gt; &amp;gt; &lt;br /&gt;
  [][][]char - sequence &amp;lt; sequence &amp;lt; sequence &amp;lt; char &amp;gt; &amp;gt; &amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;Value Objects&amp;lt;/code&amp;gt; are provided by the bridge and can be obtained from the service manager object. The service manager is a registered COM component with the ProgId “com.sun.star.ServiceManager” ([[Documentation/DevGuide/ProUNO/Bridge/The Service Manager Component|The Service Manager Component]]). For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var valueObject= objSericeManager.Bridge_GetValueObject();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
To use a &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; as in parameter, specify the type and pass the value to the object:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL&lt;br /&gt;
  void doSomething( [in] sequence&amp;lt; short &amp;gt; ar);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var value= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  var array= new Array(1,2,3);&lt;br /&gt;
  value.Set(&amp;quot;[]short&amp;quot;,array);&lt;br /&gt;
  object.doSomething( value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In the previous example, the &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; was defined to be a sequence of short values. The array could also contain &amp;lt;code&amp;gt;Value Objects&amp;lt;/code&amp;gt; again:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  var value1= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  var value2= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  value1.Set(&amp;quot;short“, 100);&lt;br /&gt;
  value2.Set(&amp;quot;short&amp;quot;, 111);&lt;br /&gt;
  var array= new Array();&lt;br /&gt;
  array[0]= value1;&lt;br /&gt;
  array[1]= value2;&lt;br /&gt;
  var allValue= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  allValue.Set(&amp;quot;[]short“, array);&lt;br /&gt;
  object.doSomething( allValue);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
If a function takes an out parameter, tell the &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL&lt;br /&gt;
  void doSomething( [out] long);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var value= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  value.InitOutParam();&lt;br /&gt;
  object.doSomething( value);&lt;br /&gt;
  var out= value.Get();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
When the &amp;lt;code&amp;gt;Value Object&amp;lt;/code&amp;gt; is an &amp;lt;code&amp;gt;inout&amp;lt;/code&amp;gt; parameter, it needs to know the type and value as well:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  //UNO IDL&lt;br /&gt;
  void doSomething( [inout] long);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  //JScript&lt;br /&gt;
  var value= objServiceManager.Bridge_GetValueObject();&lt;br /&gt;
  value.InitInOutParam(&amp;quot;long&amp;quot;, 123);&lt;br /&gt;
  object.doSomething(value);&lt;br /&gt;
  var out= value.Get();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UNO Value Object==&lt;br /&gt;
The UNO Value Object is basically the same as the Automation Value Object. It can be provided as argument in calls on automation objects. The value object is an uno service and implements &amp;lt;idl&amp;gt;com.sun.star.bridge.oleautomation.XValueObject&amp;lt;/idl&amp;gt;. The type description is provided by flags which resemble the &amp;lt;code&amp;gt;VARTYPE&amp;lt;/code&amp;gt; as used by &amp;lt;code&amp;gt;VARIANTs&amp;lt;/code&amp;gt;. All possible type flags are provided as properties by the XValueObject interface.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;OOo Basic&lt;br /&gt;
&amp;#039;function expects a VARIANT of VT_I1 (signed char)&lt;br /&gt;
Dim value As Object&lt;br /&gt;
value = createUnoService(&amp;quot;com.sun.star.bridge.oleautomation.ValueObject&amp;quot;)&lt;br /&gt;
value.set(valueI2.VT_I1, 100)&lt;br /&gt;
automation_object.func(value)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;function expects a VARIANT of SAFEARRAY of VT_I2&lt;br /&gt;
Dim valueI2 As Object&lt;br /&gt;
Dim arI2(1) As Long&lt;br /&gt;
arI2(0) = 1000&lt;br /&gt;
arI2(1) = 1000&lt;br /&gt;
valueI2 = createUnoService(&amp;quot;com.sun.star.bridge.oleautomation.ValueObject&amp;quot;)&lt;br /&gt;
valueI2.set(valueI2.VT_I2 Or valueI2.VT_ARRAY, arI2)&lt;br /&gt;
automation_object.func(valueI2)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a Value Object is provided as out or in/out parameter then the type will be changed after the function has returned. Therefore the argument type must be of Variant. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Dim valueLong As Variant&lt;br /&gt;
valueLong = createUnoService(&amp;quot;com.sun.star.bridge.oleautomation.ValueObject&amp;quot;)&lt;br /&gt;
valueLong.set(valueLong.VT_INT, 1000)&lt;br /&gt;
automation_object.outLong(valueLong) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Professional UNO]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Mapping_of_Sequence&amp;diff=195517</id>
		<title>Documentation/DevGuide/ProUNO/Bridge/Mapping of Sequence</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Mapping_of_Sequence&amp;diff=195517"/>
		<updated>2011-03-29T09:32:37Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ProUNOTOC&lt;br /&gt;
|ProUNO2c=block&lt;br /&gt;
|ABridgeSvcMgr=block&lt;br /&gt;
|ABridgeTM=block&lt;br /&gt;
|ABridgeDM=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/ProUNO/Bridge/Mapping of Interfaces and Structures&lt;br /&gt;
|NextPage=Documentation/DevGuide/ProUNO/Bridge/Mapping of Type&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/Bridge/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Mapping of Sequence}}&lt;br /&gt;
==Kinds of arrays==&lt;br /&gt;
Arrays in Automation have a particular type. The &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;. A &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; array is used when a UNO function takes a sequence as an argument. To create a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; in C++, use Windows API functions. The C++ name is also &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;, but in other languages it might be named differently. In VB for example, the type does not even exist, because it is mapped to an ordinary VB array:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  Dim myarr(9) as String&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JScript is different. It does not have a method to create a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;. Instead, JScript features an &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; object that can be used as a common array in terms of indexing and accessing its values. It is represented by a dispatch object internally. JScript offers a &amp;lt;code&amp;gt;VBArray&amp;lt;/code&amp;gt; object that converts a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; into an &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; object, which can then be processed further.&lt;br /&gt;
&lt;br /&gt;
The Automation bridge accepts both, &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; object, for arguments whose UNO type is a sequence. &lt;br /&gt;
&lt;br /&gt;
{{Documentation/Tip|If a &amp;lt;tt&amp;gt;SAFEARRAY&amp;lt;/tt&amp;gt; is obtained in JScript as a result of a call to an ActiveX component or a VB Script function (for example, the Internet Explorer allows JScript and VBS code on the same page), then it can also be used as an argument of a UNO function without converting it to an &amp;lt;tt&amp;gt;Array&amp;lt;/tt&amp;gt; object.}}&lt;br /&gt;
&lt;br /&gt;
==Multidimensional arrays==&lt;br /&gt;
UNO does not recognize multi-dimensional sequences. Instead, a sequences can have elements that are also sequences. Those “inner” sequences can have different lengths, whereas the elements of a dimension of a multi-dimensional array are all the same length.&lt;br /&gt;
&lt;br /&gt;
To provide an argument for a sequence of sequences, a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; containing &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s of &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s has to be created. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  //UNO method&lt;br /&gt;
  void foo([in] sequence&amp;lt; sequence&amp;lt; long &amp;gt; &amp;gt; value);&lt;br /&gt;
&amp;lt;/source&amp;gt;  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;  &lt;br /&gt;
  Dim seq(1) As Variant&lt;br /&gt;
  Dim ar1(3) As Long&lt;br /&gt;
  Dim ar2(4) As Long &lt;br /&gt;
  &amp;#039;fill ar1, ar2&lt;br /&gt;
  ...&lt;br /&gt;
  &lt;br /&gt;
  seq(0) = ar1&lt;br /&gt;
  seq(1) = ar2&lt;br /&gt;
  &lt;br /&gt;
  objUno.foo seq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The array seq corresponds to the “outer” sequence and contains two &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s, which in turn contain &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s of different lengths. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use a multi-dimensional &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; if the elements of the sequence are all the same length:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  Dim seq(9, 1) As Long&lt;br /&gt;
  &amp;#039;fill the sequence &lt;br /&gt;
  ...&lt;br /&gt;
  objUno.foo seq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be aware that Visual Basic uses a column-oriented ordering in contrast to C. That is, the C equivalent to the VB array is &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  long seq[2][10]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The highest dimension in VB is represented by the right-most number. &lt;br /&gt;
&lt;br /&gt;
This language binding specifies that the “outer” sequence corresponds to the highest dimension. Therefore, the VB array seq(9,1) would map to a sequence of sequences where the outer sequence has two elements and the inner sequences each have ten elements.&lt;br /&gt;
&lt;br /&gt;
==Conversion of returned sequences==&lt;br /&gt;
&lt;br /&gt;
Sequences can be returned as return values of uno functions or properties and as in/out or out arguments of uno functions. They are converted into &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s containing &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s. If a sequence of sequences is returned, then the &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s contain again &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s. For example, if an uno function returns a sequence of strings then the bridge will convert the sequence into a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; containing &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s of strings. This is necessary because some languages, for example VBScript can only access members of arrays if they are &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
To process a returned &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; in JScript, use the &amp;lt;code&amp;gt;VBArray&amp;lt;/code&amp;gt; object to convert the &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; into a JScript &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
That a returned sequence maps to a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s is not ideal because it is ambiguous when the array is passed back to UNO. However, the bridge solves this problem by using UNO type information. For example, a returned sequence of longs will result in a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s containing long values. When the &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; is passed in a method as an argument for a parameter of type &amp;lt;code&amp;gt;sequence&amp;lt;long &amp;gt;&amp;lt;/code&amp;gt; then it is converted accordingly. However, if the parameter is an &amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt;, then the bridge does not have the necessary type information and converts the &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;sequence&amp;lt;any&amp;gt;&amp;lt;/code&amp;gt;. If the method now expects the any to contain a &amp;lt;code&amp;gt;sequence&amp;lt;long&amp;gt;&amp;lt;/code&amp;gt; then it may fail. This is confusing if there are pairs of methods like &amp;lt;code&amp;gt;getxxx&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;setxxx&amp;lt;/code&amp;gt;, which take any arguments. Then you may get a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; as a return value, which cannot be used in the respective &amp;lt;code&amp;gt;setXXX&amp;lt;/code&amp;gt; call. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  //UNO IDL&lt;br /&gt;
  any getByIndex();&lt;br /&gt;
  void setByIndex([in] any value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;#039; VB&lt;br /&gt;
  Dim arLong() As Variant &lt;br /&gt;
  arLong = objUno.getByIndex() &amp;#039;object returns sequence&amp;lt;long&amp;gt; in any&lt;br /&gt;
  objUno.setByIndex arLong &amp;#039;object receives sequence&amp;lt;any&amp;gt; in any and may cause an error.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this problem, wrap the argument in a Value Object ([[Documentation/DevGuide/ProUNO/Bridge/Value Objects|Value Objects]]):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;#039; VB&lt;br /&gt;
  Dim arLong() As Variant &lt;br /&gt;
  arLong = objUno.getByIndex() &amp;#039;object returns sequence&amp;lt;long&amp;gt; in any&lt;br /&gt;
  &lt;br /&gt;
  Dim objValueObject As Object&lt;br /&gt;
  Set objValueObject = objServiceManager.Bridge_GetValueObject()&lt;br /&gt;
  objValueObject.set “[]long”, arLong&lt;br /&gt;
  &lt;br /&gt;
  objUno.setByIndex objValueObject &amp;#039;object receives sequence&amp;lt;long&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A similar problem may occur when one calls functions of an automation object which takes &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s as arguments and the function expects particular types within those &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s. For example, an automation object expects a &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt; containing a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of strings. The bridge only knows from the object&amp;#039;s type information that the function expects a &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;, but not the contained type. The bridge will therefore do a default conversion of the sequence, which produces a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s. The function may not be able to understand this argument. Then one can use a value object in order to give the bridge a hint of the expected type.&lt;br /&gt;
&lt;br /&gt;
If the parameter is a multi–dimensional &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;, then a sequence containing sequences has to be provided. The number of nested sequences corresponds to the number of dimensions. Since the elements of a dimension have the same length, the sequences that represent that dimension should also have the same length. For example, assume the expected &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; can be expressed in C as &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  long ar[2][10]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the outer sequence must have two elements and each of those sequences has 10 elements. &lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Professional UNO]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Mapping_of_Sequence&amp;diff=195516</id>
		<title>Documentation/DevGuide/ProUNO/Bridge/Mapping of Sequence</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Mapping_of_Sequence&amp;diff=195516"/>
		<updated>2011-03-29T09:28:08Z</updated>

		<summary type="html">&lt;p&gt;Jl: Some cleanup and mentioning use of value objects on the uno side&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ProUNOTOC&lt;br /&gt;
|ProUNO2c=block&lt;br /&gt;
|ABridgeSvcMgr=block&lt;br /&gt;
|ABridgeTM=block&lt;br /&gt;
|ABridgeDM=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/ProUNO/Bridge/Mapping of Interfaces and Structures&lt;br /&gt;
|NextPage=Documentation/DevGuide/ProUNO/Bridge/Mapping of Type&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/Bridge/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Mapping of Sequence}}&lt;br /&gt;
==Kinds of arrays==&lt;br /&gt;
Arrays in Automation have a particular type. The &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;. A &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; array is used when a UNO function takes a sequence as an argument. To create a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; in C++, use Windows API functions. The C++ name is also &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;, but in other languages it might be named differently. In VB for example, the type does not even exist, because it is mapped to an ordinary VB array:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  Dim myarr(9) as String&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JScript is different. It does not have a method to create a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;. Instead, JScript features an &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; object that can be used as a common array in terms of indexing and accessing its values. It is represented by a dispatch object internally. JScript offers a &amp;lt;code&amp;gt;VBArray&amp;lt;/code&amp;gt; object that converts a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; into an &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; object, which can then be processed further.&lt;br /&gt;
&lt;br /&gt;
The Automation bridge accepts both, &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; object, for arguments whose UNO type is a sequence. &lt;br /&gt;
&lt;br /&gt;
{{Documentation/Tip|If a &amp;lt;tt&amp;gt;SAFEARRAY&amp;lt;/tt&amp;gt; is obtained in JScript as a result of a call to an ActiveX component or a VB Script function (for example, the Internet Explorer allows JScript and VBS code on the same page), then it can also be used as an argument of a UNO function without converting it to an &amp;lt;tt&amp;gt;Array&amp;lt;/tt&amp;gt; object.}}&lt;br /&gt;
&lt;br /&gt;
==Multidimensional arrays==&lt;br /&gt;
UNO does not recognize multi-dimensional sequences. Instead, a sequences can have elements that are also sequences. Those “inner” sequences can have different lengths, whereas the elements of a dimension of a multi-dimensional array are all the same length.&lt;br /&gt;
&lt;br /&gt;
To provide an argument for a sequence of sequences, a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; containing &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s of &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s has to be created. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  //UNO method&lt;br /&gt;
  void foo([in] sequence&amp;lt; sequence&amp;lt; long &amp;gt; &amp;gt; value);&lt;br /&gt;
&amp;lt;/source&amp;gt;  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;  &lt;br /&gt;
  Dim seq(1) As Variant&lt;br /&gt;
  Dim ar1(3) As Long&lt;br /&gt;
  Dim ar2(4) As Long &lt;br /&gt;
  &amp;#039;fill ar1, ar2&lt;br /&gt;
  ...&lt;br /&gt;
  &lt;br /&gt;
  seq(0) = ar1&lt;br /&gt;
  seq(1) = ar2&lt;br /&gt;
  &lt;br /&gt;
  objUno.foo seq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The array seq corresponds to the “outer” sequence and contains two &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s, which in turn contain &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s of different lengths. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use a multi-dimensional &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; if the elements of the sequence are all the same length:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  Dim seq(9, 1) As Long&lt;br /&gt;
  &amp;#039;fill the sequence &lt;br /&gt;
  ...&lt;br /&gt;
  objUno.foo seq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be aware that Visual Basic uses a column-oriented ordering in contrast to C. That is, the C equivalent to the VB array is &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  long seq[2][10]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The highest dimension in VB is represented by the right-most number. &lt;br /&gt;
&lt;br /&gt;
This language binding specifies that the “outer” sequence corresponds to the highest dimension. Therefore, the VB array seq(9,1) would map to a sequence of sequences where the outer sequence has two elements and the inner sequences each have ten elements.&lt;br /&gt;
&lt;br /&gt;
==Conversion of returned sequences==&lt;br /&gt;
&lt;br /&gt;
Sequences can be returned as return values of uno functions or properties and as in/out or out arguments of uno functions. They are converted into &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s containing &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s. If a sequence of sequences is returned, then the &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s contain again &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;s. For example, if an uno function returns a sequence of strings then the bridge will convert the sequence into a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; containing &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s of strings. This is necessary because some languages, for example VBScript can only access members of arrays if they are &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
To process a returned &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; in JScript, use the &amp;lt;code&amp;gt;VBArray&amp;lt;/code&amp;gt; object to convert the &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; into a JScript &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
That a returned sequence maps to a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s is not ideal because it is ambiguous when the array is passed back to UNO. However, the bridge solves this problem by using UNO type information. For example, a returned sequence of longs will result in a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s containing long values. When the &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; is passed in a method as an argument for a parameter of type &amp;lt;code&amp;gt;sequence&amp;lt;long &amp;gt;&amp;lt;/code&amp;gt; then it is converted accordingly. However, if the parameter is an &amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt;, then the bridge does not have the necessary type information and converts the &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;sequence&amp;lt;any&amp;gt;&amp;lt;/code&amp;gt;. That is, the called method receives an any containing a &amp;lt;code&amp;gt;sequence&amp;lt;any&amp;gt;&amp;lt;/code&amp;gt;. If the method now expects the any to contain a &amp;lt;code&amp;gt;sequence&amp;lt;long&amp;gt;&amp;lt;/code&amp;gt; then it may fail. This is confusing if there are pairs of methods like &amp;lt;code&amp;gt;getxxx&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;setxxx&amp;lt;/code&amp;gt;, which take any arguments. Then you may get a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; as a return value, which cannot be used in the respective &amp;lt;code&amp;gt;setXXX&amp;lt;/code&amp;gt; call. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  //UNO IDL&lt;br /&gt;
  any getByIndex();&lt;br /&gt;
  void setByIndex([in] any value);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;#039; VB&lt;br /&gt;
  Dim arLong() As Variant &lt;br /&gt;
  arLong = objUno.getByIndex() &amp;#039;object returns sequence&amp;lt;long&amp;gt; in any&lt;br /&gt;
  objUno.setByIndex arLong &amp;#039;object receives sequence&amp;lt;any&amp;gt; in any and may cause an error.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this problem, wrap the argument in a Value Object ([[Documentation/DevGuide/ProUNO/Bridge/Value Objects|Value Objects]]):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;#039; VB&lt;br /&gt;
  Dim arLong() As Variant &lt;br /&gt;
  arLong = objUno.getByIndex() &amp;#039;object returns sequence&amp;lt;long&amp;gt; in any&lt;br /&gt;
  &lt;br /&gt;
  Dim objValueObject As Object&lt;br /&gt;
  Set objValueObject = objServiceManager.Bridge_GetValueObject()&lt;br /&gt;
  objValueObject.set “[]long”, arLong&lt;br /&gt;
  &lt;br /&gt;
  objUno.setByIndex objValueObject &amp;#039;object receives sequence&amp;lt;long&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A similar problem may occur when one calls functions of an automation object which takes &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s as arguments and the function expects particular types within those &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s. For example, an automation object expects a &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt; containing a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of strings. The bridge only knows from the object&amp;#039;s type information that the function expects a &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;, but not the contained type. The bridge will therefore do a default conversion of the sequence, which produces a &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;VARIANT&amp;lt;/code&amp;gt;s. The function may not be able to understand this argument. Then one can use a value object in order to give the bridge a hint of the expected type.&lt;br /&gt;
&lt;br /&gt;
If the parameter is a multi–dimensional &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt;, then a sequence containing sequences has to be provided. The number of nested sequences corresponds to the number of dimensions. Since the elements of a dimension have the same length, the sequences that represent that dimension should also have the same length. For example, assume the expected &amp;lt;code&amp;gt;SAFEARRAY&amp;lt;/code&amp;gt; can be expressed in C as &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  long ar[2][10]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the outer sequence must have two elements and each of those sequences has 10 elements. &lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Professional UNO]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Client-Side_Conversions&amp;diff=195513</id>
		<title>Documentation/DevGuide/ProUNO/Bridge/Client-Side Conversions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/ProUNO/Bridge/Client-Side_Conversions&amp;diff=195513"/>
		<updated>2011-03-29T08:21:11Z</updated>

		<summary type="html">&lt;p&gt;Jl: Remove the duplicate text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ProUNOTOC&lt;br /&gt;
|ProUNO2c=block&lt;br /&gt;
|ABridgeSvcMgr=block&lt;br /&gt;
|ABridgeTM=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/ProUNO/Bridge/Conversion Mappings&lt;br /&gt;
|NextPage=Documentation/DevGuide/ProUNO/Bridge/Value Objects&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/Bridge/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Client-Side Conversions}}&lt;br /&gt;
The UNO IDL description and the defined mappings indicate what to expect as a return value when a particular UNO function is called. However, the language used might apply yet another conversion after a value came over the bridge.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL &lt;br /&gt;
  float func();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;#039; VB&lt;br /&gt;
  Dim ret As Single&lt;br /&gt;
  ret= obj.func() &amp;#039;no conversion by VB&lt;br /&gt;
  &lt;br /&gt;
  Dim ret2 As String&lt;br /&gt;
  ret2= obj.func() &amp;#039;VB converts float to string&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the function returns, VB converts the &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; value into a &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; and assigns it to &amp;lt;code&amp;gt;ret2&amp;lt;/code&amp;gt;. Such a conversion comes in useful when functions return a character, and a string is preferred instead of a VB Integer value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL&lt;br /&gt;
  char func();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;#039; VB&lt;br /&gt;
  Dim ret As String&lt;br /&gt;
  ret= obj.func()&amp;#039;VB converts the returned short into a string&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be aware of the different value spaces if taking advantage of these conversions. That is, if the value space of a variable that receives a return value is smaller than the UNO type, a runtime error might occur if the value does not fit into the provided variable. Refer to the documentation of your language for client-side conversions.&lt;br /&gt;
&lt;br /&gt;
Client-side conversions only work with return values and not with out or inout parameters. The current bridge implementation is unable to transport an out or inout parameter back to Automation if it does not have the expected type according to the default mapping.&lt;br /&gt;
&lt;br /&gt;
Another kind of conversion is done implicitly. The user has no influence on the kind of conversion. For example, the scripting engine used with the Windows Scripting Host or Internet Explorer uses double values for all floating point values. Therefore, when a UNO function returns a float value, then it is converted into a double which may cause a slightly different value. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  // UNO IDL&lt;br /&gt;
  float func(); //returns 3.14&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  // JScript&lt;br /&gt;
  var ret= obj.func(); // implicit conversion from float to double, ret= 3.14000010490417&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Professional UNO]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=189194</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=189194"/>
		<updated>2010-11-24T08:51:35Z</updated>

		<summary type="html">&lt;p&gt;Jl: removed update of bundled extensions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/The Active Extension&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Updating Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  &lt;br /&gt;
&lt;br /&gt;
Updating shared extensions is now possible. If the user has no write permission, then the update will be installed in the user repository. The actual shared extension will then remain unchanged, but it will be superseded by the update, because it has a higher priority.&lt;br /&gt;
&lt;br /&gt;
Bundled extensions cannot be updated by the extension manager (see [[Setup_-_Bundled_Extensions | Setup - Bundled Extensions]]). However, users can still download and install these extension themselves.&lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions, which they currently use, are available. It does not matter if the currently used extensions are from the user or shared repository. If there is a better version, then it is offered as an update.  This allows users to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which ones have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. If the version of an extension in a local repository is the same as the one from the online repository, then the local one is used.  &lt;br /&gt;
&lt;br /&gt;
Using a local repository (bundled or shared) as update source is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository. The user would then use the &amp;quot;old&amp;quot; version, although a better one is already available.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in the user repository) is possible, if&lt;br /&gt;
#there is shared extension (no user) and the bundled or online repository contains a higher version&lt;br /&gt;
#there is a user extension and the shared, bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;shared repository&amp;#039;&amp;#039;&amp;#039;. If a user extension exists does not matter.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository    || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in shared repository) is possible, if there is shared extension  and the bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
This also means that, if there is only a user extension (no shared, no bundled) and there is one with a higher version in the online repository, then no update  is done in the shared repository. &lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in user repository) is possible, if there is a user extension and the shared, bundled, or online repository contains a higher version.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=177098</id>
		<title>Setup - Bundled Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=177098"/>
		<updated>2010-08-03T13:46:16Z</updated>

		<summary type="html">&lt;p&gt;Jl: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Setup - Bundled/Integrated Extensions=&lt;br /&gt;
&lt;br /&gt;
{{Specification_Header|Lutz Hoeger|Jun 17, 2010|Standard}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
Integrated extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). This allows users to gain more control over what will be installed on their system. At the same time, managing such extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Reference Document&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Check&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Location (URL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Product Requirement, RFE, Issue ID&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available]&lt;br /&gt;
| http://www.openoffice.org/issues/show_bug.cgi?id=112404&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[[Test case specification]]&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available]&lt;br /&gt;
| http://www.openoffice.org/nonav/issues/showattachment.cgi/70050/Bundled%20Extensions.html&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Role&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;E-Mail Address&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Developer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Joachim Lingner&lt;br /&gt;
| jl@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Quality Assurance&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Olaf Felka&lt;br /&gt;
| of@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Uwe Fischer&lt;br /&gt;
| ufi@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Detailed Specification ==&lt;br /&gt;
&lt;br /&gt;
This document distinguishes between &amp;#039;&amp;#039;&amp;#039;bundled&amp;#039;&amp;#039;&amp;#039; extensions and &amp;#039;&amp;#039;&amp;#039;integrated&amp;#039;&amp;#039;&amp;#039; extensions.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bundled Extensions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
* The extension package is &amp;#039;&amp;#039;&amp;#039;co-located with the main product installer&amp;#039;&amp;#039;&amp;#039;. This can be in a separate directory, next to the installer, or on an additional medium. &lt;br /&gt;
* There is &amp;#039;&amp;#039;&amp;#039;no integration into the installation process&amp;#039;&amp;#039;&amp;#039; of the main product. &lt;br /&gt;
* The purpose of bundled extensions is to achieve a moderate level of &amp;#039;&amp;#039;&amp;#039;convenience&amp;#039;&amp;#039;&amp;#039; for users, and to add value to the overall &amp;#039;&amp;#039;&amp;#039;product bundling&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Integrated Extensions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
* The extension is &amp;#039;&amp;#039;&amp;#039;part of the installation&amp;#039;&amp;#039;&amp;#039; package of the main application. It is installed via the main product installer. &lt;br /&gt;
* The purpose of integrated extensions is to &amp;#039;&amp;#039;&amp;#039;add functionality to the main product&amp;#039;&amp;#039;&amp;#039;, while maintaining the flexibility given by extensions.&lt;br /&gt;
* Typical integrated extensions - such as dictionaries for spell checking - will be &amp;#039;&amp;#039;&amp;#039;displayed in the OOo installer&amp;#039;&amp;#039;&amp;#039; module selection (during custom installation). &lt;br /&gt;
* On Windows and Unix, user can de-select items; on Mac, all items will be installed&lt;br /&gt;
* At the same time, managing integrated extensions (remove, update) will be &amp;#039;&amp;#039;&amp;#039;removed from the Extension Manager&amp;#039;&amp;#039;&amp;#039; and put into the application installer. &lt;br /&gt;
* Integrated extensions shall &amp;#039;&amp;#039;&amp;#039;not ping for updates&amp;#039;&amp;#039;&amp;#039;. Any update available will be deployed exclusively via later releases of the main product OOo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Display of Dictionaries:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Location in setup: Optional Components, #1 after Java&lt;br /&gt;
* Module name: Dictionaries&lt;br /&gt;
* Module description: Spelling and hyphenation dictionaries and thesauri&lt;br /&gt;
* Default: ON (incl. all sub-modules, according to spellchecker selection per language specific installation set)&lt;br /&gt;
* Sub-modules: See list below.&lt;br /&gt;
&lt;br /&gt;
=== Dictionaries ===&lt;br /&gt;
Note: The set of dictionaries actually included in a language specific installation set – or in a multi language set – does not change. The following list just enlists all dictionary languages possibly shipped in OOo.&lt;br /&gt;
&lt;br /&gt;
The set of languages display in setup should be sorted alphabetically by Module name.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Language&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module descrition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| af&lt;br /&gt;
| Afrikaans&lt;br /&gt;
| Afrikaans spell checker&lt;br /&gt;
|-&lt;br /&gt;
| pt&lt;br /&gt;
| Brazilian Portuguese&lt;br /&gt;
| Brazilian Portuguese Spelling Dictionary - 1990 Spelling Agreement&lt;br /&gt;
|-&lt;br /&gt;
| ca&lt;br /&gt;
| Catalan&lt;br /&gt;
| Spelling and hyphenation dictionaries and thesaurus for Catalan language (general)&lt;br /&gt;
|-&lt;br /&gt;
| cs&lt;br /&gt;
| Czech&lt;br /&gt;
| Czech thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| da&lt;br /&gt;
| Danish&lt;br /&gt;
| Spelling and hyphenation dictionary for Danish&lt;br /&gt;
|-&lt;br /&gt;
| nl&lt;br /&gt;
| Dutch&lt;br /&gt;
| Dutch spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| en-US&lt;br /&gt;
| English&lt;br /&gt;
| English spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| et&lt;br /&gt;
| Estonian&lt;br /&gt;
| Estonian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| fr&lt;br /&gt;
| French&lt;br /&gt;
| French &amp;quot;Classic and Reform 1990&amp;quot; spelling, thesaurus and hyphenation&lt;br /&gt;
|-&lt;br /&gt;
| gl&lt;br /&gt;
| Galician&lt;br /&gt;
| Galician spellchecker dictionary for OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| de-AT&lt;br /&gt;
| German (Austria)&lt;br /&gt;
| German (AT-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-DE&lt;br /&gt;
| German (Germany)&lt;br /&gt;
| German (DE-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-CH&lt;br /&gt;
| German (Switzerland)&lt;br /&gt;
| German (CH-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| he&lt;br /&gt;
| Hebrew&lt;br /&gt;
| Hebrew spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| hu&lt;br /&gt;
| Hungarian&lt;br /&gt;
| Hungarian spelling dictionary, hyphenation patterns, and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| it&lt;br /&gt;
| Italian&lt;br /&gt;
| Italian spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ku-TR&lt;br /&gt;
| Kurdish (Turkey)&lt;br /&gt;
| Kurdish (Turkey) spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| lt&lt;br /&gt;
| Lithuanian&lt;br /&gt;
| Lithuanian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ne&lt;br /&gt;
| Nepali&lt;br /&gt;
| Nepali spelling dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| no&lt;br /&gt;
| Norwegian&lt;br /&gt;
| Norwegian dictionaries (Nynorsk and Bokmål)&lt;br /&gt;
|-&lt;br /&gt;
| pl&lt;br /&gt;
| Polish&lt;br /&gt;
| Polish spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ro&lt;br /&gt;
| Romanian&lt;br /&gt;
| Romanian Dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ru&lt;br /&gt;
| Russian&lt;br /&gt;
| Russian hyphenation dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sr&lt;br /&gt;
| Serbian&lt;br /&gt;
| Serbian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| sk&lt;br /&gt;
| Slovak&lt;br /&gt;
| Slovak spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sl&lt;br /&gt;
| Slovenian&lt;br /&gt;
| Slovenian dictionary pack&lt;br /&gt;
|-&lt;br /&gt;
| es&lt;br /&gt;
| Spanish&lt;br /&gt;
| Spanish spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sw&lt;br /&gt;
| Swahili&lt;br /&gt;
| Swahili spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sv&lt;br /&gt;
| Swedish&lt;br /&gt;
| Swedish Dictionary&lt;br /&gt;
|-&lt;br /&gt;
| th&lt;br /&gt;
| Thai&lt;br /&gt;
| Thai spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| vi&lt;br /&gt;
| Vietnamese&lt;br /&gt;
| Vietnamese spellchecker dictionary&lt;br /&gt;
|-&lt;br /&gt;
| zu&lt;br /&gt;
| Zulu&lt;br /&gt;
| Zulu hyphenation dictionary&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Detailed_Specification|Help]] | [[UI-Elements|User Interface Element Templates]] | [[Specification_Example|Example Spec]]&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
Accessibility not impacted.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
Bundled dictionaries in OOo versions previous to 3.3 were installed as shared extensions. Shared extensions are not migrated.&lt;br /&gt;
&lt;br /&gt;
As of 3.3 bundled extensions will always be removed when uninstalling OOo. They are therefore not eligible for being migrated.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Bundled extensions can be configured if they provide their own options pages in OOo&amp;#039;s options dialog.&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Configuration|Help]] | [[Configuration-Table|Configuration Table Template]]&lt;br /&gt;
&lt;br /&gt;
== Open Issues ==&lt;br /&gt;
* Pre-bundled extensions still show up in the Extension Manager. This is considered a minor impact, as the user cannot change such extension in this place. Issue will be resolved in the future.&lt;br /&gt;
&lt;br /&gt;
[[Category:Specification]] &lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=177079</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=177079"/>
		<updated>2010-08-03T08:02:26Z</updated>

		<summary type="html">&lt;p&gt;Jl: minor correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/The Active Extension&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Updating Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  &lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user, the extension manager allows to install updates for shared or bundled extensions. These updates will in fact be installed as user extensions, in case the user cannot write in the shared repository. The installed bundled/shared extension will then remain unchanged, but it will be superseded by the update, because it has a higher priority.&lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in the user repository) is possible, if&lt;br /&gt;
#there is a bundled extension (no user and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension (no user) and the bundled or online repository contains a higher version&lt;br /&gt;
#there is a user extension and the shared, bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;shared repository&amp;#039;&amp;#039;&amp;#039;. If a user extension exists does not matter.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository    || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository  || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in shared repository) is possible, if&lt;br /&gt;
#there is a bundled extension (and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension  and the bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
This also means that, if there is only a user extension (no shared, no bundled) and there is one with a higher version in the online repository, then no update  is done in the shared repository. &lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in user repository) is possible, if there is a user extension and the shared, bundled, or online repository contains a higher version.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Processing_Extensions&amp;diff=174284</id>
		<title>Documentation/DevGuide/Extensions/Processing Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Processing_Extensions&amp;diff=174284"/>
		<updated>2010-07-07T07:33:58Z</updated>

		<summary type="html">&lt;p&gt;Jl: Paragraph &amp;quot;Restarting OOo&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Packaging Notes&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Processing Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
==Checking for modification during start-up==&lt;br /&gt;
Every time OOo is started it needs to check if extensions were removed from or added to the shared or bundled repository. If this is the case, then the registration data of the repository must be updated accordingly and OOo is restarted. &lt;br /&gt;
&lt;br /&gt;
Because OOo checks for added or removed extensions at start-up, this must be very quick. To achieve this, OOo compares the modification time of extension folders of the repositories with the time of the most recently performed check. This time is “saved” in the file lastsynchronized in the registration data folder of the repositories. In fact, the modification time of the file is used rather then a value is written into the file. If the modification time of the extension folder is more recent, then the extension manager will check if extensions were added or removed and update its database accordingly. This is of course an implementation detail and may change at any time.&lt;br /&gt;
&lt;br /&gt;
==Restarting OOo==&lt;br /&gt;
The restart is necessary to avoid that users use &amp;#039;&amp;#039;removed&amp;#039;&amp;#039; shared extensions. Removing a shared extensions does not entail the immediate removal of the the extension files. This is necessary to allow live deployment. For details see [[Documentation/DevGuide/Extensions/Processing_Extensions#Adding a shared extension | Adding a shared extension]] and [[Documentation/DevGuide/Extensions/Processing_Extensions#Removing a shared extension | Removing a shared extension]].&lt;br /&gt;
The extension manager updates its databases during start-up of OOo an removes entries of removed extension, so that they cannot be used anymore. However, until this has happend services from the removed extension may have been started and menus added to the menu bar.&lt;br /&gt;
&lt;br /&gt;
Even if the extensions are completely removed from the disk, as is the case with removed bundled extensions, remnants can still be visible for the user. This applies particularly for configuration data. The extension manager processes them and creates additional data (registration data), that is configuration data containing expanded URLs. OOo only uses the registration data, which is stored in the user data. Removing the bundled extension, which is done by the installer, does not remove the registration data. This is only done during the start-up when the extension manager runs. But by this time, the configuration manager has already loaded the registration data of the removed extension. &amp;#039;&amp;#039;Live removal&amp;#039;&amp;#039; of menu entries does not work yet. Therefore artifacts of removed extensions may still be seen when OOo is run the first after removing the extension.&lt;br /&gt;
&lt;br /&gt;
There are also extensions which do not work well right after they are installed. In other words, they do not support live deployment. This is typically caused by issues in OOo and/or the extension. After restarting OOo, the extensions perform as expected.&lt;br /&gt;
&lt;br /&gt;
Although live deployment issues can be fixed, there is still the problem of removed shared extensions. This could only be solved if one would not allow live deployment of shared extensions.&lt;br /&gt;
&lt;br /&gt;
==Adding==&lt;br /&gt;
===Adding a user extension===&lt;br /&gt;
A user extension is extracted into a folder with a unique name which in turn is contained in the extensions folder. The additional folder with the unique name is necessary to make live deployment possible. When removing an extension, it is only marked as “unusable” and the extension is not deleted, because it may still be in use. If now the same extension is installed again in the same process, then it will be extracted to another folder with a unique name. This prevents a name clash with the folder name of the previously “removed” extension. The user can now repeat to remove and install the extension in the same process. This results in having the same extension multiple times in the extensions folder of the repository, but everyone is contained in a folder with a unique name. The folders of the “removed” extensions, as well as the folders which contain them, are only removed after running the extension manager after restarting OOo.&lt;br /&gt;
&lt;br /&gt;
The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
===Adding a shared extension===&lt;br /&gt;
For the user who adds a shared extension, the extension is processed the same way as a user extension.&lt;br /&gt;
&lt;br /&gt;
For all other users, the extension manager processes the extension the next time they start OOo.&lt;br /&gt;
The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
===Adding a bundled extension===&lt;br /&gt;
A bundled extension is installed by the installation program of OOo. The folder of the extension, including all files contained therein, is copied into the extensions folder of the bundled repository. &lt;br /&gt;
Only when a user starts OOo, then the extension manager processes the extension. The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
==Removing==&lt;br /&gt;
===Removing a user extension===&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. The extension will be deleted when the user runs the extension manager after restarting OOo. &lt;br /&gt;
&lt;br /&gt;
===Removing a shared extension===&lt;br /&gt;
The extension will be revoked if it was registered. To prevent other users from using the extension it is marked to be deleted. This is done by creating a tag file, the &amp;quot;extension removed file&amp;quot;, next to the folder with the unique name. This way, the information that the extension was deleted can be accessed by all users. If this file does not exist and there is no entry in the extensions database, then it is assumed that the extension was added. The file will be deleted when the extension is deleted. The file also contains the name of the user who removed the extension. If the same user runs the extension manager after restarting OOo, then the extension, the unique folder, temp file and the  &amp;quot;extensions removed file are deleted. Why it must be the same user shows the following scenario:&lt;br /&gt;
&lt;br /&gt;
A user starts OOo and uses the extension. The extension will then be removed and OOo keeps running. Now a second user, who also has write access to the extensions folder, starts OOo. When the extension manager starts it would properly delete extensions which were previously removed. However in this case this would affect the office of the first user which still uses that extension.&lt;br /&gt;
The same user cannot start another instance, because this is prevented by the lock file.&lt;br /&gt;
&lt;br /&gt;
For all other users, the extension manager processes the extension the next time they start OOo. This includes the detection of the removed extensions. An extension is regarded as removed if:&lt;br /&gt;
*The unique folder, tmp file, extension folder do not exist anymore.&lt;br /&gt;
*There is a &amp;quot;extension removed file&amp;quot;&lt;br /&gt;
*The extension exists but has a different identifier or version than the one which was previously at the same location. This may happen when the extension was updated, or a previous office update removed the extension and another with the same name was added in the latest office update.&lt;br /&gt;
&lt;br /&gt;
The extension could also have the same file name.&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. &lt;br /&gt;
&lt;br /&gt;
===Removing a bundled extension=== &lt;br /&gt;
A bundled extension can only be removed by the set-up. The folder of the extension, including all files contained in it, is deleted from the extension folder of the bundled repository. &lt;br /&gt;
&lt;br /&gt;
If a user starts OOo, then the extension manager processes the removed extension. This includes the detection of the removed extensions. &lt;br /&gt;
An extension is regarded as removed if:&lt;br /&gt;
*The extension folder do not exist anymore.&lt;br /&gt;
*The extension exists but has a different identifier or version than the one which was previously at the same location.  &lt;br /&gt;
&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. &lt;br /&gt;
&lt;br /&gt;
==Updating==&lt;br /&gt;
An update consists of first removing the extension and then adding the new extension. That is, this is already covered by these two scenarios.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Layers&amp;diff=173790</id>
		<title>Documentation/DevGuide/Extensions/Extension Layers</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Layers&amp;diff=173790"/>
		<updated>2010-07-02T10:13:22Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Location of Installed Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Checklist for Writing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Manager Rework}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The Extension Manager uses two extension layers, the user and the shared layer. Extensions installed in the shared layer can be used by all users whereas those in the user layer can only be used by the user who installed them. An extension can be installed in either layer or both. &lt;br /&gt;
&lt;br /&gt;
This system was developed many years ago. Since then new features were added, such as extension versioning, online update, bundled extensions, etc. During that time it became obvious that there are some problems with the original design. This document tries to explain them. &lt;br /&gt;
==Current problems==&lt;br /&gt;
&lt;br /&gt;
=== Hiding ===&lt;br /&gt;
The idea of layers is that extensions in the top layer &amp;#039;&amp;#039;&amp;#039;hide&amp;#039;&amp;#039;&amp;#039; the same extensions in the layer below. In other words, the extension in the highest layer will be given preference, when resources from the extension are requested. Because the user layer is the top layer, a shared extension is only used when the same extension does not exist in the user layer. The version of the extension has no influence.&lt;br /&gt;
&lt;br /&gt;
This, however, is only a simplified model. An extension is never used as a whole. Instead clients access the particular contents, such as components, configuration data, etc. And it is also these contents which obscure the same content in a lower layer. For example, an extension contains a UNO service, which is installed in both layers. When the client instantiates it then the one from the top layer is used.&lt;br /&gt;
&lt;br /&gt;
There are situations where contents of the shared extensions are still used, although they should be hidden and therefore not usable. Assuming there are version 1 and version 2 of  an extension. Then the different versions may have different content. For example, version 1 may contain a service &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; which is not contained in version 2. If now version 1 is installed in the shared layer and version 2 in the user layer then &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; is still around and can be instantiated. Foo may access resources which are also delivered with this extension and are also available in version 2 which is in the user layer. Resources in version 2, which hide those from version 1 (same node in xcu or same service), can be incompatible, so that foo fails.&lt;br /&gt;
&lt;br /&gt;
A service may also need files which are part of the same extension and which are only directly accessible. That is there is no  API, such as the registry or service manager, which can provide the content. A &amp;quot;running&amp;quot; service does not know from which layer it comes from. To get the install location it can use the  [[Documentation/DevGuide/Extensions/Location of Installed Extensions|PackageInformationProvider]]. This service will first look into user layer and if the extension cannot be found, then it will look into the shared layer. If now the service from the shared layer needs some file from its extension, then it may accidentally use the one from a different version of the extension in the user layer. This file can be incompatible or not even exist and make the service fail.&lt;br /&gt;
&lt;br /&gt;
Another example can be constructed using registry values, which are contained in xcu files. Let&amp;#039;s assume that version 1 of an extension adds a menu &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; and version 2 adds menu &amp;#039;&amp;#039;bar&amp;#039;&amp;#039;. If one extension is installed in the share and the other in the user layer, then both menus appear. This is because the nodes of the configuration files are merged into the configuration and not the xcu files itself. That is, if the extensions contain an xcu file with the same name, then the xcu file of the last installed extension will NOT replace the one from the other extension. The second xcu file can, however, change the values for nodes which have been defined by the first xcu.&lt;br /&gt;
&lt;br /&gt;
These examples prove that the layering (in terms of hiding the items from the layer below) on extension level does not work, although it does for the respective [[Documentation/DevGuide/Extensions/Deployment Items|deployment items]]. And it may be safe to say, that this goes against the user&amp;#039;s expectation.&lt;br /&gt;
&lt;br /&gt;
===Unclear behavior===&lt;br /&gt;
It may be unclear to users how the behavior is when the same extension is installed as user and shared extension. If there is a shared extension and the same extension is installed as user extension, then the user should be informed that the currently installed extension will become &amp;#039;inactive&amp;#039;. Then, when the user extension is uninstalled, the user should be informed that the shared extension will become &amp;#039;active&amp;#039; again.&lt;br /&gt;
&lt;br /&gt;
=== Extension versions ===&lt;br /&gt;
&lt;br /&gt;
As already observed, the version of an extension has no influence on the decision if the extension from the user or the shared layer is used. At the time of developing the extension framework there was no support for versioned extensions, so one did not have to care about them. Later, we recognized that an extension version is useful for users. For example, if one has an extension installed and is installing the same extension again, then one is being informed about what extension has the later version (so one can decide which is the best for them). &lt;br /&gt;
&lt;br /&gt;
I think the general expectation is that the latest version is the best. Therefore it should be natural that OOo uses always that one. However, this is not the case and users may unintentionally prevent, that they use the latest extension. For example, OOo comes with a bundled English dictionary. Now a user installs, intentionally or not, the same extension and forgets about it. The administrator updates OOo regularly, which also updates the dictionary with the latest version. But the user would still use the old dictionary, because that is the one from the user layer which hides the one from the shared layer.&lt;br /&gt;
&lt;br /&gt;
One could think now of a notification for the user but there are some questions:&lt;br /&gt;
*when does OOo check for this situation?  &lt;br /&gt;
*how can this be explained to the user? &lt;br /&gt;
The first question, is easily answered: At every start-up.&lt;br /&gt;
&lt;br /&gt;
The second question is more difficult.Think about a message, such as: &amp;quot;Dear user. You cannot use the latest version of the french dictionary, which is installed in the shared/bundled layer. Instead the dictionary which you installed earlier is used. You need to uninstall it, if you want the new version ....&amp;quot; &lt;br /&gt;
Many users would probably not understand this. So the easiest and natural way is simply to use the latest version of the extension indepedent of what layer it is installed in. The term layer should then be replaced, by repository, indicating that the location does not include a preference – just think about the picture of one layer above the other compared to repositories which are arranged in one row. &lt;br /&gt;
&lt;br /&gt;
=== Layer location ===&lt;br /&gt;
&lt;br /&gt;
The shared layer is located within the OOo installation. The benefit is that normal users cannot modify it. The layer will be modified after installation of OOo when an extensions is added, deleted, enabled or disabled. Depending on the operation system, this may be against the system guidelines. For example, it would be not allowed on Windows Vista/ 7. However, to allow “legacy application” to work Microsoft invented the virtual store. &lt;br /&gt;
&lt;br /&gt;
=== Clean uninstallation ===&lt;br /&gt;
&lt;br /&gt;
Modification of  the shared layer will also prevent the clean uninstallation of OOo. This is because the native installer does not “own”  the files/folder which were added by the extension manager. For example, on Linux the path /opt/openoffice.org3/share/uno_packages will remain on the system. On OpenSolaris the shared extensions (with the same directory structure) will be copied to /var/lost+found on uninstallation.&lt;br /&gt;
&lt;br /&gt;
=== No Separation of shared and bundled extensions ===&lt;br /&gt;
The rule is, whatever a user installed should not be removed by OOo. This is also valid for shared extensions. Today a bundled extension is nothing else than a shared extension and therefore can be modified by users, provided they have sufficient file access rights. They can install the same extension as one, which was installed as bundled extension, in the shared layer. This means that the original bundled extension is replaced by the recently installed shared extension. This can happen in two scenarios. The first one is during an online update of the extension and the second is when the extension is “manually” installed.  In these cases users intentionally choose to replace the original extension. Therefore this extension may not be deleted when uninstalling OOo. This, however, requires to know that the bundled extension was replaced, but there is currently no way to recognize this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection of extensions in setup===&lt;br /&gt;
Like many other features, bundled extensions should be selectable in the dialog of the installer. The  installer can also be invoked later to add or remove particular features. The problem is, that the extensions which the installer “sees” are not the same as “seen” by the extension manager. The setup copies an oxt file to ../share/extension/install and then invokes a post-install script (Unix) or a custom action (Windows) which runs unopkg to install the extension properly. The extension is then unzipped to ../share/uno_packages/cache/uno_packages and some data are added to the extension manager database. The installer only knows the file that it copied to the ../share/extension/install folder. If it is there then it is regarded as installed – otherwise not.&lt;br /&gt;
&lt;br /&gt;
For an extension to show up in the dialog of the extension manager, there are two conditions which need to be met. First, it must be unpacked in the uno_packages folder. And second, there must be an appropriate entry in the extension manager database,  indicating that it is installed. Therefore it would be possible that the installer displayed an extension as being installed but the extension manager did not. This may of course happen the other way round as well.&lt;br /&gt;
&lt;br /&gt;
Even if the installer would copy the uncompressed extension  directly to ../share/uno_packages/cache/uno_packages, both dialogs could show a different status. One could assume that the installer and extension manager  regard an extension as installed if the the respective folder exists. But this does not work, because the extension manager does not remove immediately the extension when it is being uninstalled. The reason is, that files from the extension can still be in use   in the process. Only after restarting OOo and the extension manager, the extension&amp;#039;s folder will be finally removed.&lt;br /&gt;
&lt;br /&gt;
===Code execution during installation===&lt;br /&gt;
Copying extensions into the office installation during setup is not sufficient to make them usable. Only after the extension manager has processed them, OOo can make use of them. Therefore the installer invokes the extension manager after an extension has been copied. Unfortunately this requires different solutions for different platforms. RPM (Linux) and PKG (Solaris) use post-install/pre-install scripts which are executed after the copying step. But there are installation scenarios on Solaris, where code execution is not allowed during the setup. For example, the installer is running on Solaris Sparc and installs OOo on a Solaris Intel Machine machine. Therefore OOo uses a “postrun” service which invokes the extension manager when the system is rebooted. OpenSolaris prohibits code execution completely. The setup needs to install an SMF service which is triggered after the setup. Windows needs a &amp;#039;custom action&amp;#039; which is compiled native code. The Mac dmg file already contains the processed extensions. That is, the extension manager processes the extension while building the  dmg file.&lt;br /&gt;
&lt;br /&gt;
It is obvious that the current situation is complex and one understands why testing and bug finding  are rather difficult.&lt;br /&gt;
&lt;br /&gt;
===Extension Manager database===&lt;br /&gt;
The database is created when the extension manager is started for the first time. The database contains different files and folders which are completely unknown to the installer. Therefore the installer will not remove them. This is another reason why the OpenOffice.org folder remains on the  system after uninstalling OOo.&lt;br /&gt;
&lt;br /&gt;
=== License of shared extension cannot be displayed to users ===&lt;br /&gt;
Only the one who installs the extension can see the license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Layers&amp;diff=173789</id>
		<title>Documentation/DevGuide/Extensions/Extension Layers</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Layers&amp;diff=173789"/>
		<updated>2010-07-02T10:04:33Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Location of Installed Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Checklist for Writing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Manager Rework}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The Extension Manager uses two extension layers, the user and the shared layer. Extensions installed in the shared layer can be used by all users whereas those in the user layer can only be used by the user who installed them. An extension can be installed in either layer or both. &lt;br /&gt;
&lt;br /&gt;
This system was developed many years ago. Since then new features were added, such as extension versioning, online update, bundled extensions, etc. During that time it became obvious that there are some problems with the original design. This document tries to explain them. &lt;br /&gt;
==Current problems==&lt;br /&gt;
&lt;br /&gt;
=== Hiding ===&lt;br /&gt;
The idea of layers is that extensions in the top layer &amp;#039;&amp;#039;&amp;#039;hide&amp;#039;&amp;#039;&amp;#039; the same extensions in the layer below. In other words, the extension in the highest layer will be given preference, when resources from the extension are requested. Because the user layer is the top layer, a shared extension is only used when the same extension does not exist in the user layer. The version of the extension has no influence.&lt;br /&gt;
&lt;br /&gt;
This, however, is only a simplified model. An extension is never used as a whole. Instead clients access the particular contents, such as components, configuration data, etc. And it is also these contents which obscure the same content in a lower layer. For example, an extension contains a UNO service, which is installed in both layers. When the client instantiates it then the one from the top layer is used.&lt;br /&gt;
&lt;br /&gt;
There are situations where contents of the shared extensions are still used, although they should be hidden and therefore not usable. Assuming there are version 1 and version 2 of  an extension. Then the different versions may have different content. For example, version 1 may contain a service &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; which is not contained in version 2. If now version 1 is installed in the shared layer and version 2 in the user layer then &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; is still around and can be instantiated. Foo may access resources which are also delivered with this extension and are also available in version 2 which is in the user layer. Resources in version 2, which hide those from version 1 (same node in xcu or same service), can be incompatible, so that foo fails.&lt;br /&gt;
&lt;br /&gt;
A service may also need files which are part of the same extension and which are only directly accessible. That is there is no  API, such as the registry or service manager, which can provide the content. A &amp;quot;running&amp;quot; service does not know from which layer it comes from. To get the install location it can use the  [[Documentation/DevGuide/Extensions/Location of Installed Extensions|PackageInformationProvider]]. This service will first look into user layer and if the extension cannot be found, then it will look into the shared layer. If now the service from the shared layer needs some file from its extension, then it may accidentally use the one from a different version of the extension in the user layer. This file can be incompatible or not even exist and make the service fail.&lt;br /&gt;
&lt;br /&gt;
Another example can be constructed using registry values, which are contained in xcu files. Let&amp;#039;s assume that version 1 of an extension adds a menu &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; and version 2 adds menu &amp;#039;&amp;#039;bar&amp;#039;&amp;#039;. If one extension is installed in the share and the other in the user layer, then both menus appear. This is because the nodes of the configuration files are merged into the configuration and not the xcu files itself. That is, if the extensions contain an xcu file with the same name, then the xcu file of the last installed extension will NOT replace the one from the other extension. The second xcu file can, however, change the values for nodes which have been defined by the first xcu.&lt;br /&gt;
&lt;br /&gt;
These examples prove that the layering (in terms of hiding the items from the layer below) on extension level does not work, although it does for the respective [[Documentation/DevGuide/Extensions/Deployment Items|deployment items]]. And it may be safe to say, that this goes against the user&amp;#039;s expectation.&lt;br /&gt;
&lt;br /&gt;
===Unclear behavior===&lt;br /&gt;
It may be unclear to users how the behavior is when the same extension is installed as user and shared extension. If there is a shared extension and the same extension is installed as user extension, then the user should be informed that the currently installed extension will become &amp;#039;inactive&amp;#039;. Then, when the user extension is uninstalled, the user should be informed that the shared extension will become &amp;#039;active&amp;#039; again.&lt;br /&gt;
&lt;br /&gt;
=== Extension versions ===&lt;br /&gt;
&lt;br /&gt;
As already observed, the version of an extension has no influence on the decision if the extension from the user or the shared layer is used. At the time of developing the extension framework there was no support for versioned extensions, so one did not have to care about them. Later, we recognized that an extension version is useful for users. For example, if one has an extension installed and is installing the same extension again, then one is being informed about what extension has the later version (so one can decide which is the best for them). &lt;br /&gt;
&lt;br /&gt;
I think the general expectation is that the latest version is the best. Therefore it should be natural that OOo uses always that one. However, this is not the case and users may unintentionally prevent, that they use the latest extension. For example, OOo comes with a bundled English dictionary. Now a user installs, intentionally or not, the same extension and forgets about it. The administrator updates OOo regularly, which also updates the dictionary with the latest version. But the user would still use the old dictionary, because that is the one from the user layer which hides the one from the shared layer.&lt;br /&gt;
&lt;br /&gt;
One could think now of a notification for the user but there are some questions:&lt;br /&gt;
*when does OOo check for this situation?  &lt;br /&gt;
*how can this be explained to the user? &lt;br /&gt;
The first question, is easily answered: At every start-up.&lt;br /&gt;
&lt;br /&gt;
The second question is more difficult.Think about a message, such as: &amp;quot;Dear user. You cannot use the latest version of the french dictionary, which is installed in the shared/bundled layer. Instead the dictionary which you installed earlier is used. You need to uninstall it, if you want the new version ....&amp;quot; &lt;br /&gt;
Many users would probably not understand this. So the easiest and natural way is simply to use the latest version of the extension indepedent of what layer it is installed in. The term layer should then be replaced, by repository, indicating that the location does not include a preference – just think about the picture of one layer above the other compared to repositories which are arranged in one row. &lt;br /&gt;
&lt;br /&gt;
=== Layer location ===&lt;br /&gt;
&lt;br /&gt;
The shared layer is located within the OOo installation. The benefit is that normal users cannot modify it. The layer will be modified after installation of OOo when an extensions is added, deleted, enabled or disabled. Depending on the operation system, this may be against the system guidelines. For example, it would be not allowed on Windows Vista/ 7. However, to allow “legacy application” to work Microsoft invented the virtual store. &lt;br /&gt;
&lt;br /&gt;
=== Clean uninstallation ===&lt;br /&gt;
&lt;br /&gt;
Modification of  the shared layer will also prevent the clean uninstallation of OOo. This is because the native installer does not “own”  the files/folder which were added by the extension manager. For example, on Linux the path /opt/openoffice.org3/share/uno_packages will remain on the system. On OpenSolaris the shared extensions (with the same directory structure) will be copied to /var/lost+found on uninstallation.&lt;br /&gt;
&lt;br /&gt;
=== No Separation of shared and bundled extensions ===&lt;br /&gt;
The rule is, whatever a user installed should not be removed by OOo. This is also valid for shared extensions. Today a bundled extension is nothing else than a shared extension and therefore can be modified by users, provided they have sufficient file access rights. They can install the same extension as one, which was installed as bundled extension, in the shared layer. This means that the original bundled extension is replaced by the recently installed shared extension. This can happen in two scenarios. The first one is during an online update of the extension and the second is when the extension is “manually” installed.  In these cases users intentionally choose to replace the original extension. Therefore this extension may not be deleted when uninstalling OOo. This, however, requires to know that the bundled extension was replaced, but there is currently no way to recognize this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection of extensions in setup===&lt;br /&gt;
Like many other features, bundled extensions should be selectable in the dialog of the installer. The  installer can also be invoked later to add or remove particular features. The problem is, that the extensions which the installer “sees” are not the same as “seen” by the extension manager. The setup copies an oxt file to ../share/extension/install and then invokes a post-install script (Unix) or a custom action (Windows) which runs unopkg to install the extension properly. The extension is then unzipped to ../share/uno_packages/cache/uno_packages and some data are added to the extension manager database. The installer only knows the file that it copied to the ../share/extension/install folder. If it is there then it is regarded as installed – otherwise not.&lt;br /&gt;
&lt;br /&gt;
For an extension to show up in the dialog of the extension manager, there are two conditions which need to be met. First, it must be unpacked in the uno_packages folder. And second, there must be an appropriate entry in the extension manager database,  indicating that it is installed. Therefore it would be possible that the installer displayed an extension as being installed but the extension manager did not. This may of course happen the other way round as well.&lt;br /&gt;
&lt;br /&gt;
Even if the installer would copy the uncompressed extension  directly to ../share/uno_packages/cache/uno_packages, both dialogs could show a different status. One could assume that the installer and extension manager  regard an extension as installed if the the respective folder exists. But this does not work, because the extension manager does not remove immediately the extension when it is being uninstalled. The reason is, that files from the extension can still be in use   in the process. Only after restarting OOo and the extension manager, the extension&amp;#039;s folder will be finally removed.&lt;br /&gt;
&lt;br /&gt;
===Code execution during installation===&lt;br /&gt;
Copying extensions into the office installation during setup is not sufficient to make them usable. Only after the extension manager has processed them, OOo can make use of them. Therefore the installer invokes the extension manager after an extension has been copied. Unfortunately this requires different solutions for different platforms. RPM (Linux) and PKG (Solaris) use post-install/pre-install scripts which are executed after the copying step. But there are installation scenarios on Solaris, where code execution is not allowed during the setup. For example, the installer is running on Solaris Sparc and installs OOo on a Solaris Intel Machine machine. Therefore OOo uses a “postrun” service which invokes the extension manager when the system is rebooted. OpenSolaris prohibits code execution completely. The setup needs to install an SMF service which is triggered after the setup. Windows needs a &amp;#039;custom action&amp;#039; which is compiled native code. The Mac dmg file already contains the processed extensions. That is, the extension manager processes the extension while building the  dmg file.&lt;br /&gt;
&lt;br /&gt;
It is obvious that the current situation is complex and one understands why testing and bug finding  are rather difficult.&lt;br /&gt;
&lt;br /&gt;
===Extension Manager database===&lt;br /&gt;
The database is created when the extension manager is started for the first time. The database contains different files and folders which are completely unknown to the installer. Therefore the installer will not remove them. This is another reason why the OpenOffice.org folder remains on the  system after uninstalling OOo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=How_to_use_digital_Signatures&amp;diff=172948</id>
		<title>How to use digital Signatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=How_to_use_digital_Signatures&amp;diff=172948"/>
		<updated>2010-06-23T06:25:30Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;1. Where to get a Certificate&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
First of all you need a valid digital certificate. You can get one for free by various Security Providers, for Germany especially for people from Hamburg, you can get such a certificate from the Trustcenter ([http://www.trustcenter.de]), other people may have a look at Comodo([http://www.comodo.com/products/certificate_services/email_certificate.html]), StartSSL ([http://www.startssl.com]) or CAcert ([http://www.cacert.org]). These companies offer such a certificate for free with an expiration time of one year. After that you have to renew it if you like. If not you will not be able to sign documents any longer. &lt;br /&gt;
&lt;br /&gt;
If you do not trust these companies or want a higher Class Certificate you need to pay some money and the company will validate your personal data to make sure that you are the one you say you are. Such companies are Globalsign ([http://www.globalsign.com]), Verisign ([http://www.verisign.com]) and also Trustcenter and StartSSL. In combination with a Freemail Account you can get a digital certificate for Germany at Web.de ([http://www.web.de]). &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.1 How to make a certificate useable for [[StarOffice]]&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
If you follow the process to get a certificate this will be installed into the keystore of your Browser. Mozilla users will find it under Privacy &amp;amp;amp; Security in the Option dialog of their Browser. Firefox user will find it at a similar place. The few people using Microsoft&amp;#039;s Internet Explorer will find it under Start-Settings-Control Panel-Internet Options-Content-Certificates. &lt;br /&gt;
&lt;br /&gt;
This information is needed as [[StarOffice]] / OpenOffice.org relies on the Crypto engine used on the users system. On Windows the Microsoft Crypto API is used, therefore nothing has to be done if the Internet Explorer was used to get the Certificate. In case you&amp;#039;ve used Mozilla or Firefox, you have to export your certificate into a file from the Mozilla Certificate store and import it into the Microsoft keystore. To do so, just go to your settings dialog in Mozilla and choose&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 -Manage Certificates from it.&lt;br /&gt;
 -Select the Certificate to export and click on the button Backup&lt;br /&gt;
 -Find a place were you can save the file and name it&lt;br /&gt;
 -Follow the instructions given by Mozilla &lt;br /&gt;
 -To import the Certificate into the Microsoft Cryptoengine, do the following:&lt;br /&gt;
  -travel to the location of the now exported file by using your preferred file manager and &lt;br /&gt;
  -double click the file. &lt;br /&gt;
  -Follow the instructions and that&amp;#039;s it. &lt;br /&gt;
  -You have transferred your certificate into the Microsoft keystore of your Windows installation.&lt;br /&gt;
&lt;br /&gt;
For Linux and Solaris this procedure may be used the other way to get a certificate from Windows into the keystores of Mozilla, Thunderbird or Firefox. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.1.1 Prerequisites on Linux / Solaris&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To use your Certificate for digital signing of documents on Linux or Solaris we need some prerequisites&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 - A certificate (obtained from a Certificate Authority)&lt;br /&gt;
 - A Thunderbird, Mozilla or Firefox profile to store the certificate&lt;br /&gt;
&lt;br /&gt;
[[StarOffice]] / OpenOffice.org is looking for a certificate in the mentioned profiles according to the following search order&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 a.) The environment variable MOZILLA_CERTIFICATE_FOLDER&lt;br /&gt;
 b.) The Thunderbird profile&lt;br /&gt;
 c.) The Mozilla suite profile&lt;br /&gt;
 d.) The Firefox profile.&lt;br /&gt;
&lt;br /&gt;
This is especially useful to know as Debian and maybe Fedora Linux Installations seem to set the profile names in an other way as suggested by the Mozilla developers. In this case the Certificates are not shown in the digital signature dialog of the Office suite. In this case, locate the appropriate profile folder and set the Environment Variable MOZILLA_CERTIFICATE_FOLDER accordingly. See [[Certificate Detection|Certificate Detection]] &lt;br /&gt;
&lt;br /&gt;
It is also necessary that the trust settings for the root certificates are set to trust the certificate to identify web sites and e-mail users. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.1.2 Prerequisites on Windows&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
As you need only a valid certificate located in the keystore of the Windows Crypto API and we have installed it under Chapter 1.1, there are no more Prerequisites for Windows. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.2 Using card readers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
There are loads of different types of readers and smart cards. Please read first the documentation of your reader and card and install all necessary software which comes with it.&lt;br /&gt;
&lt;br /&gt;
If you use Linux, then follow the documentation about how to add smart card support to Firefox/Thunderbird. In general, this will require to add a particular library (a pkcs11 module) in the device manager (security devices) in Firefox/Thunderbird. The device manager can be found in the options dialog under the Advanced tab page.&lt;br /&gt;
&lt;br /&gt;
With some readers/cards it is sufficient to install opensc and pcscd. pcscd is a deamon, which is located in /etc/init.d. Then one has to add opensc-pkcs11.so, which may be found under /usr/lib, in the device manager.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. How to sign a document&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Edit the document you want to sign and save it. Now select Digital Signatures from the File Menu. If you get a warning about a missing Mozilla profile, have a look at chapter 1.1.1 please. You probably use a Debian or Fedora Linux and haven&amp;#039;t set the environment variable in the correct way. &lt;br /&gt;
&lt;br /&gt;
If all is properly set, you get the digital signatures dialog and can click on the Add button. On Linux and Solaris you&amp;#039;re asked for the password for accessing the used keystore, on Windows it depends on the settings made on importing the certificate. Now your stored certificates are shown. Please select the one you want to use and than click on Ok. After that you will be back in [[StarOffice]] / OpenOffice.org Digital Signatures dialog. This dialog will show a small icon in front of the textual representation of the certificate used to sign the Document. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;2.1 How to sign a Macro&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To sign a Macro you have two possible ways. &lt;br /&gt;
&lt;br /&gt;
 1.)Use Tools – Macro – Digital Signature&lt;br /&gt;
 2.)Use File – Digital Signature within the BASIC Editor of [[StarOffice]] / OpenOffice.org&lt;br /&gt;
&lt;br /&gt;
The procedure of adding a certificate to the Macro is the same as used for documents. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Error messages and visual aids&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.1 Error messages on loading of documents&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
You only get a message on loading the document if the signature of the document and / or the signature of the containing macros is broken. In this case the execution of macros is stopped and you can only activate macros by setting the security level to low and re-loading the document. But this is not recommended. Or remove the broken signature from the document and reload it. In this case make sure the macros contained in the document are not malicious. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.2 Visual Aids&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
We have four visual aids for the possible states of a document signature. &lt;br /&gt;
&lt;br /&gt;
A sheet with a stylised red seal stating that the document signature(s) are OK and no alteration of the document occurred since the last signing. &lt;br /&gt;
&lt;br /&gt;
The addition (signed) to the title bar of an opened signed document. &lt;br /&gt;
&lt;br /&gt;
A sheet with a stylised red seal and a small yellow triangle with exclamation mark stating that the document signature(s) are OK and no alteration of the document occurred since the last signing but at least one of the used certificates could not be validated. This can be caused by a not available root certificate from the Issuer of one of the certificates used or a not possible connection to the server containing the Revocation List for the Certificate Issuer. This is just an informal message, the document itself isn&amp;#039;t changed after signing. But the decision on how far you can trust this document is up to you. The used certificate is maybe outdated or revoked. &lt;br /&gt;
&lt;br /&gt;
A yellow triangle with black exclamation mark showing that the document signature is broken. So this document has been altered in some way and therefore you should not trust it&amp;#039;s content. &lt;br /&gt;
&lt;br /&gt;
These visual aids will be displayed in the digital signature dialog and the status bar. For the &amp;#039;(signed)&amp;#039; text, this one is shown in the title bar of the document window next to the file name. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4. Trusted Macro Source&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To add a certificate as a trusted macro source, open a document signed with the certificate you want to trust. Then use the dialog that pops up to always trust macros from that source. &lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
*[[Certificate Detection|Certificate Detection]] &lt;br /&gt;
*[http://blogs.sun.com/roller/page/dancer/20050308 Just switch! - Secure document exchange with StarOffice 8 ] &lt;br /&gt;
*[http://marketing.openoffice.org/ooocon2004/presentations/friday/timmermann_digital_signatures.pdf Digital signatures (SUN-pdf file)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Digital_Signature]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=How_to_use_digital_Signatures&amp;diff=172947</id>
		<title>How to use digital Signatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=How_to_use_digital_Signatures&amp;diff=172947"/>
		<updated>2010-06-23T06:06:41Z</updated>

		<summary type="html">&lt;p&gt;Jl: Adding a not about card readers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;1. Where to get a Certificate&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
First of all you need a valid digital certificate. You can get one for free by various Security Providers, for Germany especially for people from Hamburg, you can get such a certificate from the Trustcenter ([http://www.trustcenter.de]), other people may have a look at Comodo([http://www.comodo.com/products/certificate_services/email_certificate.html]), StartSSL ([http://www.startssl.com]) or CAcert ([http://www.cacert.org]). These companies offer such a certificate for free with an expiration time of one year. After that you have to renew it if you like. If not you will not be able to sign documents any longer. &lt;br /&gt;
&lt;br /&gt;
If you do not trust these companies or want a higher Class Certificate you need to pay some money and the company will validate your personal data to make sure that you are the one you say you are. Such companies are Globalsign ([http://www.globalsign.com]), Verisign ([http://www.verisign.com]) and also Trustcenter and StartSSL. In combination with a Freemail Account you can get a digital certificate for Germany at Web.de ([http://www.web.de]). &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.1 How to make a certificate useable for [[StarOffice]]&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
If you follow the process to get a certificate this will be installed into the keystore of your Browser. Mozilla users will find it under Privacy &amp;amp;amp; Security in the Option dialog of their Browser. Firefox user will find it at a similar place. The few people using Microsoft&amp;#039;s Internet Explorer will find it under Start-Settings-Control Panel-Internet Options-Content-Certificates. &lt;br /&gt;
&lt;br /&gt;
This information is needed as [[StarOffice]] / OpenOffice.org relies on the Crypto engine used on the users system. On Windows the Microsoft Crypto API is used, therefore nothing has to be done if the Internet Explorer was used to get the Certificate. In case you&amp;#039;ve used Mozilla or Firefox, you have to export your certificate into a file from the Mozilla Certificate store and import it into the Microsoft keystore. To do so, just go to your settings dialog in Mozilla and choose&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 -Manage Certificates from it.&lt;br /&gt;
 -Select the Certificate to export and click on the button Backup&lt;br /&gt;
 -Find a place were you can save the file and name it&lt;br /&gt;
 -Follow the instructions given by Mozilla &lt;br /&gt;
 -To import the Certificate into the Microsoft Cryptoengine, do the following:&lt;br /&gt;
  -travel to the location of the now exported file by using your preferred file manager and &lt;br /&gt;
  -double click the file. &lt;br /&gt;
  -Follow the instructions and that&amp;#039;s it. &lt;br /&gt;
  -You have transferred your certificate into the Microsoft keystore of your Windows installation.&lt;br /&gt;
&lt;br /&gt;
For Linux and Solaris this procedure may be used the other way to get a certificate from Windows into the keystores of Mozilla, Thunderbird or Firefox. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.1.1 Prerequisites on Linux / Solaris&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To use your Certificate for digital signing of documents on Linux or Solaris we need some prerequisites&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 - A certificate (obtained from a Certificate Authority)&lt;br /&gt;
 - A Thunderbird, Mozilla or Firefox profile to store the certificate&lt;br /&gt;
&lt;br /&gt;
[[StarOffice]] / OpenOffice.org is looking for a certificate in the mentioned profiles according to the following search order&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 a.) The environment variable MOZILLA_CERTIFICATE_FOLDER&lt;br /&gt;
 b.) The Thunderbird profile&lt;br /&gt;
 c.) The Mozilla suite profile&lt;br /&gt;
 d.) The Firefox profile.&lt;br /&gt;
&lt;br /&gt;
This is especially useful to know as Debian and maybe Fedora Linux Installations seem to set the profile names in an other way as suggested by the Mozilla developers. In this case the Certificates are not shown in the digital signature dialog of the Office suite. In this case, locate the appropriate profile folder and set the Environment Variable MOZILLA_CERTIFICATE_FOLDER accordingly. See [[Certificate Detection|Certificate Detection]] &lt;br /&gt;
&lt;br /&gt;
It is also necessary that the trust settings for the root certificates are set to trust the certificate to identify web sites and e-mail users. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.1.2 Prerequisites on Windows&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
As you need only a valid certificate located in the keystore of the Windows Crypto API and we have installed it under Chapter 1.1, there are no more Prerequisites for Windows. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.2 Using card readers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
There are loads of different types of readers and smart cards. Please read first the documentation of your reader and card and install all necessary software which comes with it.&lt;br /&gt;
&lt;br /&gt;
If you use Linux, then follow the documentation about how to add smart card support to Firefox/Thunderbird. In general, this will require to add a particular library (a pkcs11 module) in the device manager (security devices) in Firefox/Thunderbird. The device manager can be found in the options dialog under the Advanced tab page.&lt;br /&gt;
&lt;br /&gt;
With some readers/cards it is sufficient to install opensc. Then one has to add opensc-pkcs11.so, which may be found under /usr/lib, in the device manager.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. How to sign a document&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Edit the document you want to sign and save it. Now select Digital Signatures from the File Menu. If you get a warning about a missing Mozilla profile, have a look at chapter 1.1.1 please. You probably use a Debian or Fedora Linux and haven&amp;#039;t set the environment variable in the correct way. &lt;br /&gt;
&lt;br /&gt;
If all is properly set, you get the digital signatures dialog and can click on the Add button. On Linux and Solaris you&amp;#039;re asked for the password for accessing the used keystore, on Windows it depends on the settings made on importing the certificate. Now your stored certificates are shown. Please select the one you want to use and than click on Ok. After that you will be back in [[StarOffice]] / OpenOffice.org Digital Signatures dialog. This dialog will show a small icon in front of the textual representation of the certificate used to sign the Document. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;2.1 How to sign a Macro&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To sign a Macro you have two possible ways. &lt;br /&gt;
&lt;br /&gt;
 1.)Use Tools – Macro – Digital Signature&lt;br /&gt;
 2.)Use File – Digital Signature within the BASIC Editor of [[StarOffice]] / OpenOffice.org&lt;br /&gt;
&lt;br /&gt;
The procedure of adding a certificate to the Macro is the same as used for documents. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Error messages and visual aids&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.1 Error messages on loading of documents&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
You only get a message on loading the document if the signature of the document and / or the signature of the containing macros is broken. In this case the execution of macros is stopped and you can only activate macros by setting the security level to low and re-loading the document. But this is not recommended. Or remove the broken signature from the document and reload it. In this case make sure the macros contained in the document are not malicious. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.2 Visual Aids&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
We have four visual aids for the possible states of a document signature. &lt;br /&gt;
&lt;br /&gt;
A sheet with a stylised red seal stating that the document signature(s) are OK and no alteration of the document occurred since the last signing. &lt;br /&gt;
&lt;br /&gt;
The addition (signed) to the title bar of an opened signed document. &lt;br /&gt;
&lt;br /&gt;
A sheet with a stylised red seal and a small yellow triangle with exclamation mark stating that the document signature(s) are OK and no alteration of the document occurred since the last signing but at least one of the used certificates could not be validated. This can be caused by a not available root certificate from the Issuer of one of the certificates used or a not possible connection to the server containing the Revocation List for the Certificate Issuer. This is just an informal message, the document itself isn&amp;#039;t changed after signing. But the decision on how far you can trust this document is up to you. The used certificate is maybe outdated or revoked. &lt;br /&gt;
&lt;br /&gt;
A yellow triangle with black exclamation mark showing that the document signature is broken. So this document has been altered in some way and therefore you should not trust it&amp;#039;s content. &lt;br /&gt;
&lt;br /&gt;
These visual aids will be displayed in the digital signature dialog and the status bar. For the &amp;#039;(signed)&amp;#039; text, this one is shown in the title bar of the document window next to the file name. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4. Trusted Macro Source&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To add a certificate as a trusted macro source, open a document signed with the certificate you want to trust. Then use the dialog that pops up to always trust macros from that source. &lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
*[[Certificate Detection|Certificate Detection]] &lt;br /&gt;
*[http://blogs.sun.com/roller/page/dancer/20050308 Just switch! - Secure document exchange with StarOffice 8 ] &lt;br /&gt;
*[http://marketing.openoffice.org/ooocon2004/presentations/friday/timmermann_digital_signatures.pdf Digital signatures (SUN-pdf file)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Digital_Signature]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=172219</id>
		<title>Setup - Bundled Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=172219"/>
		<updated>2010-06-15T11:00:53Z</updated>

		<summary type="html">&lt;p&gt;Jl: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Setup - Bundled Extensions=&lt;br /&gt;
&lt;br /&gt;
{{Specification_Header|Lutz Hoeger|Jun 15, 2010|Standard}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
Pre-bundled extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). This allows users to gain more control over what will be installed on their system. At the same time, managing such pre-bundled extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Reference Document&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Check&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Location (URL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Product Requirement, RFE, Issue ID&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available]&lt;br /&gt;
| http://www.openoffice.org/issues/show_bug.cgi?id=112404&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[[Test case specification]]&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available/not available]&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Role&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;E-Mail Address&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Developer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Joachim Lingner&lt;br /&gt;
| jl@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Quality Assurance&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Olaf Felka&lt;br /&gt;
| of@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Uwe Fischer&lt;br /&gt;
| ufi@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Detailed Specification ==&lt;br /&gt;
* Pre-bundled extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). &lt;br /&gt;
* At the same time, managing such pre-bundled extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
* On Windows and Unix, user can de-select items; on Mac, all items will be installed&lt;br /&gt;
* Display of Dictionaries:&lt;br /&gt;
** Location in setup: Optional Components, #3 after Java&lt;br /&gt;
** Module name: Dictionaries&lt;br /&gt;
** Module description: Spelling and hyphenation dictionaries and thesauri&lt;br /&gt;
** Default: ON (incl. all sub-modules, according to spellchecker selection per language specific installation set)&lt;br /&gt;
** Sub-modules: See list below.&lt;br /&gt;
&lt;br /&gt;
=== Dictionaries ===&lt;br /&gt;
Note: The set of dictionaries actually included in a language specific installation set – or in a multi language set – does not change. The following list just enlists all dictionary languages possibly shipped in OOo.&lt;br /&gt;
&lt;br /&gt;
The set of languages display in setup should be sorted alphabetically by Module name.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Language&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module descrition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| af&lt;br /&gt;
| Afrikaans&lt;br /&gt;
| Afrikaans spell checker&lt;br /&gt;
|-&lt;br /&gt;
| pt&lt;br /&gt;
| Brazilian Portuguese&lt;br /&gt;
| Brazilian Portuguese Spelling Dictionary - 1990 Spelling Agreement&lt;br /&gt;
|-&lt;br /&gt;
| ca&lt;br /&gt;
| Catalan&lt;br /&gt;
| Spelling and hyphenation dictionaries and thesaurus for Catalan language (general)&lt;br /&gt;
|-&lt;br /&gt;
| cs&lt;br /&gt;
| Czech&lt;br /&gt;
| Czech thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| da&lt;br /&gt;
| Danish&lt;br /&gt;
| Spelling and hyphenation dictionary for Danish&lt;br /&gt;
|-&lt;br /&gt;
| nl&lt;br /&gt;
| Dutch&lt;br /&gt;
| Dutch spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| en-US&lt;br /&gt;
| English&lt;br /&gt;
| English spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| et&lt;br /&gt;
| Estonian&lt;br /&gt;
| Estonian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| fr&lt;br /&gt;
| French&lt;br /&gt;
| French &amp;quot;Classic and Reform 1990&amp;quot; spelling, thesaurus and hyphenation&lt;br /&gt;
|-&lt;br /&gt;
| gl&lt;br /&gt;
| Galician&lt;br /&gt;
| Galician spellchecker dictionary for OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| de-AT&lt;br /&gt;
| German (Austria)&lt;br /&gt;
| German (AT-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-DE&lt;br /&gt;
| German (Germany)&lt;br /&gt;
| German (DE-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-CH&lt;br /&gt;
| German (Switzerland)&lt;br /&gt;
| German (CH-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| he&lt;br /&gt;
| Hebrew&lt;br /&gt;
| Hebrew spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| hu&lt;br /&gt;
| Hungarian&lt;br /&gt;
| Hungarian spelling dictionary, hyphenation patterns, and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| it&lt;br /&gt;
| Italian&lt;br /&gt;
| Italian spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ku-TR&lt;br /&gt;
| Kurdish (Turkey)&lt;br /&gt;
| Kurdish (Turkey) spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| lt&lt;br /&gt;
| Lithuanian&lt;br /&gt;
| Lithuanian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ne&lt;br /&gt;
| Nepali&lt;br /&gt;
| Nepali spelling dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| no&lt;br /&gt;
| Norwegian&lt;br /&gt;
| Norwegian dictionaries (Nynorsk and Bokmål)&lt;br /&gt;
|-&lt;br /&gt;
| pl&lt;br /&gt;
| Polish&lt;br /&gt;
| Polish spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ro&lt;br /&gt;
| Romanian&lt;br /&gt;
| Romanian Dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ru&lt;br /&gt;
| Russian&lt;br /&gt;
| Russian hyphenation dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sr&lt;br /&gt;
| Serbian&lt;br /&gt;
| Serbian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| sk&lt;br /&gt;
| Slovak&lt;br /&gt;
| Slovak spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sl&lt;br /&gt;
| Slovenian&lt;br /&gt;
| Slovenian dictionary pack&lt;br /&gt;
|-&lt;br /&gt;
| es&lt;br /&gt;
| Spanish&lt;br /&gt;
| Spanish spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sw&lt;br /&gt;
| Swahili&lt;br /&gt;
| Swahili spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sv&lt;br /&gt;
| Swedish&lt;br /&gt;
| Swedish Dictionary&lt;br /&gt;
|-&lt;br /&gt;
| th&lt;br /&gt;
| Thai&lt;br /&gt;
| Thai spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| vi&lt;br /&gt;
| Vietnamese&lt;br /&gt;
| Vietnamese spellchecker dictionary&lt;br /&gt;
|-&lt;br /&gt;
| zu&lt;br /&gt;
| Zulu&lt;br /&gt;
| Zulu hyphenation dictionary&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Detailed_Specification|Help]] | [[UI-Elements|User Interface Element Templates]] | [[Specification_Example|Example Spec]]&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
Accessibility not impacted.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
Bundled dictionaries in OOo versions previous to 3.3 were installed as shared extensions. Shared extensions are not migrated.&lt;br /&gt;
&lt;br /&gt;
As of 3.3 bundled extensions will always be removed when uninstalling OOo. They are therefore not eligible for being migrated.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Bundled extensions, such as the dictionaries, can be configured if they provide their own options pages in OOo&amp;#039;s options dialog.&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Configuration|Help]] | [[Configuration-Table|Configuration Table Template]]&lt;br /&gt;
&lt;br /&gt;
== Open Issues ==&lt;br /&gt;
* Pre-bundled extensions still show up in the Extension Manager. This is considered a minor impact, as the user cannot change such extension in this place. Issue will be resolved in the future.&lt;br /&gt;
&lt;br /&gt;
[[Category:Specification]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=172218</id>
		<title>Setup - Bundled Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=172218"/>
		<updated>2010-06-15T10:58:14Z</updated>

		<summary type="html">&lt;p&gt;Jl: /* Migration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Setup - Bundled Extensions=&lt;br /&gt;
&lt;br /&gt;
{{Specification_Header|Lutz Hoeger|Jun 15, 2010|Standard}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
Pre-bundled extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). This allows users to gain more control over what will be installed on their system. At the same time, managing such pre-bundled extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Reference Document&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Check&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Location (URL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Product Requirement, RFE, Issue ID&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available]&lt;br /&gt;
| http://www.openoffice.org/issues/show_bug.cgi?id=112404&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[[Test case specification]]&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available/not available]&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Role&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;E-Mail Address&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Developer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Joachim Lingner&lt;br /&gt;
| jl@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Quality Assurance&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Olaf Felka&lt;br /&gt;
| of@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Uwe Fischer&lt;br /&gt;
| ufi@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Detailed Specification ==&lt;br /&gt;
* Pre-bundled extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). &lt;br /&gt;
* At the same time, managing such pre-bundled extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
* On Windows and Unix, user can de-select items; on Mac, all items will be installed&lt;br /&gt;
* Display of Dictionaries:&lt;br /&gt;
** Location in setup: Optional Components, #3 after Java&lt;br /&gt;
** Module name: Dictionaries&lt;br /&gt;
** Module description: Spelling and hyphenation dictionaries and thesauri&lt;br /&gt;
** Default: ON (incl. all sub-modules, according to spellchecker selection per language specific installation set)&lt;br /&gt;
** Sub-modules: See list below.&lt;br /&gt;
&lt;br /&gt;
=== Dictionaries ===&lt;br /&gt;
Note: The set of dictionaries actually included in a language specific installation set – or in a multi language set – does not change. The following list just enlists all dictionary languages possibly shipped in OOo.&lt;br /&gt;
&lt;br /&gt;
The set of languages display in setup should be sorted alphabetically by Module name.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Language&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module descrition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| af&lt;br /&gt;
| Afrikaans&lt;br /&gt;
| Afrikaans spell checker&lt;br /&gt;
|-&lt;br /&gt;
| pt&lt;br /&gt;
| Brazilian Portuguese&lt;br /&gt;
| Brazilian Portuguese Spelling Dictionary - 1990 Spelling Agreement&lt;br /&gt;
|-&lt;br /&gt;
| ca&lt;br /&gt;
| Catalan&lt;br /&gt;
| Spelling and hyphenation dictionaries and thesaurus for Catalan language (general)&lt;br /&gt;
|-&lt;br /&gt;
| cs&lt;br /&gt;
| Czech&lt;br /&gt;
| Czech thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| da&lt;br /&gt;
| Danish&lt;br /&gt;
| Spelling and hyphenation dictionary for Danish&lt;br /&gt;
|-&lt;br /&gt;
| nl&lt;br /&gt;
| Dutch&lt;br /&gt;
| Dutch spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| en-US&lt;br /&gt;
| English&lt;br /&gt;
| English spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| et&lt;br /&gt;
| Estonian&lt;br /&gt;
| Estonian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| fr&lt;br /&gt;
| French&lt;br /&gt;
| French &amp;quot;Classic and Reform 1990&amp;quot; spelling, thesaurus and hyphenation&lt;br /&gt;
|-&lt;br /&gt;
| gl&lt;br /&gt;
| Galician&lt;br /&gt;
| Galician spellchecker dictionary for OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| de-AT&lt;br /&gt;
| German (Austria)&lt;br /&gt;
| German (AT-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-DE&lt;br /&gt;
| German (Germany)&lt;br /&gt;
| German (DE-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-CH&lt;br /&gt;
| German (Switzerland)&lt;br /&gt;
| German (CH-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| he&lt;br /&gt;
| Hebrew&lt;br /&gt;
| Hebrew spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| hu&lt;br /&gt;
| Hungarian&lt;br /&gt;
| Hungarian spelling dictionary, hyphenation patterns, and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| it&lt;br /&gt;
| Italian&lt;br /&gt;
| Italian spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ku-TR&lt;br /&gt;
| Kurdish (Turkey)&lt;br /&gt;
| Kurdish (Turkey) spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| lt&lt;br /&gt;
| Lithuanian&lt;br /&gt;
| Lithuanian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ne&lt;br /&gt;
| Nepali&lt;br /&gt;
| Nepali spelling dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| no&lt;br /&gt;
| Norwegian&lt;br /&gt;
| Norwegian dictionaries (Nynorsk and Bokmål)&lt;br /&gt;
|-&lt;br /&gt;
| pl&lt;br /&gt;
| Polish&lt;br /&gt;
| Polish spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ro&lt;br /&gt;
| Romanian&lt;br /&gt;
| Romanian Dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ru&lt;br /&gt;
| Russian&lt;br /&gt;
| Russian hyphenation dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sr&lt;br /&gt;
| Serbian&lt;br /&gt;
| Serbian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| sk&lt;br /&gt;
| Slovak&lt;br /&gt;
| Slovak spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sl&lt;br /&gt;
| Slovenian&lt;br /&gt;
| Slovenian dictionary pack&lt;br /&gt;
|-&lt;br /&gt;
| es&lt;br /&gt;
| Spanish&lt;br /&gt;
| Spanish spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sw&lt;br /&gt;
| Swahili&lt;br /&gt;
| Swahili spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sv&lt;br /&gt;
| Swedish&lt;br /&gt;
| Swedish Dictionary&lt;br /&gt;
|-&lt;br /&gt;
| th&lt;br /&gt;
| Thai&lt;br /&gt;
| Thai spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| vi&lt;br /&gt;
| Vietnamese&lt;br /&gt;
| Vietnamese spellchecker dictionary&lt;br /&gt;
|-&lt;br /&gt;
| zu&lt;br /&gt;
| Zulu&lt;br /&gt;
| Zulu hyphenation dictionary&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Detailed_Specification|Help]] | [[UI-Elements|User Interface Element Templates]] | [[Specification_Example|Example Spec]]&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
Accessibility not impacted.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
Bundled dictionaries in OOo versions previous to 3.3 were installed as shared extensions. Shared extensions are not migrated.&lt;br /&gt;
&lt;br /&gt;
As of 3.3 bundled extensions will always be removed when uninstalling OOo. They are therefore not eligible for being migrated.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&amp;lt;START TYPING HERE --- If this part is irrelevant state a reason for its absence.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Configuration|Help]] | [[Configuration-Table|Configuration Table Template]]&lt;br /&gt;
&lt;br /&gt;
== Open Issues ==&lt;br /&gt;
* Pre-bundled extensions still show up in the Extension Manager. This is considered a minor impact, as the user cannot change such extension in this place. Issue will be resolved in the future.&lt;br /&gt;
&lt;br /&gt;
[[Category:Specification]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=172217</id>
		<title>Setup - Bundled Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Setup_-_Bundled_Extensions&amp;diff=172217"/>
		<updated>2010-06-15T10:52:59Z</updated>

		<summary type="html">&lt;p&gt;Jl: /* Contacts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Setup - Bundled Extensions=&lt;br /&gt;
&lt;br /&gt;
{{Specification_Header|Lutz Hoeger|Jun 15, 2010|Standard}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
Pre-bundled extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). This allows users to gain more control over what will be installed on their system. At the same time, managing such pre-bundled extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Reference Document&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Check&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Location (URL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Product Requirement, RFE, Issue ID&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available]&lt;br /&gt;
| http://www.openoffice.org/issues/show_bug.cgi?id=112404&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[[Test case specification]]&amp;#039;&amp;#039;&amp;#039; (required)&lt;br /&gt;
| [available/not available]&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Role&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;E-Mail Address&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Developer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Joachim Lingner&lt;br /&gt;
| jl@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Quality Assurance&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Olaf Felka&lt;br /&gt;
| of@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Uwe Fischer&lt;br /&gt;
| ufi@openoffice.org&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Detailed Specification ==&lt;br /&gt;
* Pre-bundled extensions - such as dictionaries for spell checking - will be displayed in the OOo installer module selection (during custom installation). &lt;br /&gt;
* At the same time, managing such pre-bundled extensions (remove, update) will be moved from the extension manager into the application installer.&lt;br /&gt;
* On Windows and Unix, user can de-select items; on Mac, all items will be installed&lt;br /&gt;
* Display of Dictionaries:&lt;br /&gt;
** Location in setup: Optional Components, #3 after Java&lt;br /&gt;
** Module name: Dictionaries&lt;br /&gt;
** Module description: Spelling and hyphenation dictionaries and thesauri&lt;br /&gt;
** Default: ON (incl. all sub-modules, according to spellchecker selection per language specific installation set)&lt;br /&gt;
** Sub-modules: See list below.&lt;br /&gt;
&lt;br /&gt;
=== Dictionaries ===&lt;br /&gt;
Note: The set of dictionaries actually included in a language specific installation set – or in a multi language set – does not change. The following list just enlists all dictionary languages possibly shipped in OOo.&lt;br /&gt;
&lt;br /&gt;
The set of languages display in setup should be sorted alphabetically by Module name.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Language&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module Name&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Module descrition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| af&lt;br /&gt;
| Afrikaans&lt;br /&gt;
| Afrikaans spell checker&lt;br /&gt;
|-&lt;br /&gt;
| pt&lt;br /&gt;
| Brazilian Portuguese&lt;br /&gt;
| Brazilian Portuguese Spelling Dictionary - 1990 Spelling Agreement&lt;br /&gt;
|-&lt;br /&gt;
| ca&lt;br /&gt;
| Catalan&lt;br /&gt;
| Spelling and hyphenation dictionaries and thesaurus for Catalan language (general)&lt;br /&gt;
|-&lt;br /&gt;
| cs&lt;br /&gt;
| Czech&lt;br /&gt;
| Czech thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| da&lt;br /&gt;
| Danish&lt;br /&gt;
| Spelling and hyphenation dictionary for Danish&lt;br /&gt;
|-&lt;br /&gt;
| nl&lt;br /&gt;
| Dutch&lt;br /&gt;
| Dutch spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| en-US&lt;br /&gt;
| English&lt;br /&gt;
| English spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| et&lt;br /&gt;
| Estonian&lt;br /&gt;
| Estonian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| fr&lt;br /&gt;
| French&lt;br /&gt;
| French &amp;quot;Classic and Reform 1990&amp;quot; spelling, thesaurus and hyphenation&lt;br /&gt;
|-&lt;br /&gt;
| gl&lt;br /&gt;
| Galician&lt;br /&gt;
| Galician spellchecker dictionary for OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| de-AT&lt;br /&gt;
| German (Austria)&lt;br /&gt;
| German (AT-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-DE&lt;br /&gt;
| German (Germany)&lt;br /&gt;
| German (DE-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| de-CH&lt;br /&gt;
| German (Switzerland)&lt;br /&gt;
| German (CH-frami) spelling, hyphenation, thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| he&lt;br /&gt;
| Hebrew&lt;br /&gt;
| Hebrew spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| hu&lt;br /&gt;
| Hungarian&lt;br /&gt;
| Hungarian spelling dictionary, hyphenation patterns, and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| it&lt;br /&gt;
| Italian&lt;br /&gt;
| Italian spelling and hyphenation dictionaries and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ku-TR&lt;br /&gt;
| Kurdish (Turkey)&lt;br /&gt;
| Kurdish (Turkey) spell check dictionary&lt;br /&gt;
|-&lt;br /&gt;
| lt&lt;br /&gt;
| Lithuanian&lt;br /&gt;
| Lithuanian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ne&lt;br /&gt;
| Nepali&lt;br /&gt;
| Nepali spelling dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| no&lt;br /&gt;
| Norwegian&lt;br /&gt;
| Norwegian dictionaries (Nynorsk and Bokmål)&lt;br /&gt;
|-&lt;br /&gt;
| pl&lt;br /&gt;
| Polish&lt;br /&gt;
| Polish spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| ro&lt;br /&gt;
| Romanian&lt;br /&gt;
| Romanian Dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| ru&lt;br /&gt;
| Russian&lt;br /&gt;
| Russian hyphenation dictionary and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sr&lt;br /&gt;
| Serbian&lt;br /&gt;
| Serbian spelling and hyphenation dictionaries&lt;br /&gt;
|-&lt;br /&gt;
| sk&lt;br /&gt;
| Slovak&lt;br /&gt;
| Slovak spell check dictionary, hyphenation rules and thesaurus&lt;br /&gt;
|-&lt;br /&gt;
| sl&lt;br /&gt;
| Slovenian&lt;br /&gt;
| Slovenian dictionary pack&lt;br /&gt;
|-&lt;br /&gt;
| es&lt;br /&gt;
| Spanish&lt;br /&gt;
| Spanish spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sw&lt;br /&gt;
| Swahili&lt;br /&gt;
| Swahili spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| sv&lt;br /&gt;
| Swedish&lt;br /&gt;
| Swedish Dictionary&lt;br /&gt;
|-&lt;br /&gt;
| th&lt;br /&gt;
| Thai&lt;br /&gt;
| Thai spelling dictionary&lt;br /&gt;
|-&lt;br /&gt;
| vi&lt;br /&gt;
| Vietnamese&lt;br /&gt;
| Vietnamese spellchecker dictionary&lt;br /&gt;
|-&lt;br /&gt;
| zu&lt;br /&gt;
| Zulu&lt;br /&gt;
| Zulu hyphenation dictionary&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Detailed_Specification|Help]] | [[UI-Elements|User Interface Element Templates]] | [[Specification_Example|Example Spec]]&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
Accessibility not impacted.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&amp;lt;START TYPING HERE --- If this part is irrelevant state a reason for its absence.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&amp;lt;START TYPING HERE --- If this part is irrelevant state a reason for its absence.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Specification_Template_Help#Configuration|Help]] | [[Configuration-Table|Configuration Table Template]]&lt;br /&gt;
&lt;br /&gt;
== Open Issues ==&lt;br /&gt;
* Pre-bundled extensions still show up in the Extension Manager. This is considered a minor impact, as the user cannot change such extension in this place. Issue will be resolved in the future.&lt;br /&gt;
&lt;br /&gt;
[[Category:Specification]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171779</id>
		<title>Documentation/DevGuide/Extensions/Packaging Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171779"/>
		<updated>2010-06-11T12:54:01Z</updated>

		<summary type="html">&lt;p&gt;Jl: add link to scp description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Packaging Notes For Bundled Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bundled extensions are installed during OOo&amp;#039;s setup and only the setup can install or remove them. That is, they cannot be modified by the extension manager, which would change the installation. The installer copies the extensions into the extensions directory of the &amp;quot;share&amp;quot; folder. For example, &amp;lt;code&amp;gt;C:\Program Files\OpenOffice.org 3\share\extensions&amp;lt;/code&amp;gt; on Windows XP. Contrary to versions previous to OOo 3.3, unopkg need &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; be run as a post install step. To uninstall the extensions, the installer can simply delete the directories of the respective extensions.&lt;br /&gt;
&lt;br /&gt;
Extensions are packaged as directories instead of &amp;quot;.oxt&amp;quot; files. For example, there is an extension Foo.oxt containing the files f1 and f2. The installer package must then contain the &amp;quot;unzipped&amp;quot; extension, that is a directory Foo (oxt can be ommitted). After installation, the file structure must be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ Office/share/extensions&lt;br /&gt;
  + Foo&lt;br /&gt;
  |- f1&lt;br /&gt;
  |- f2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
During the packaging process one must make sure that all bundled extensions have different directory names, so as to prevent overwriting other extensions. In case of a name clash, one needs to modify the directory name of the extension appropriately. &lt;br /&gt;
&lt;br /&gt;
The name of the folder should still reflect the name of the original extension file. This makes it easier to locate the extension in the file system. This name will also be used by the extension manager dialog if the extension does not provide a display name. Further details can be found here: [[Extensions_Integration_into_Installation_Set | Extensions_Integration_into_Installation_Set]].&lt;br /&gt;
&lt;br /&gt;
Bundled extension MUST have an identifier and version, otherwise OOo cannot determine reliably if a bundled extension was removed.&lt;br /&gt;
&lt;br /&gt;
Executables contained in the extension must have the executable flag set. This is usually done by the extension manager, but not in case of bundled extensions.&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171736</id>
		<title>Documentation/DevGuide/Extensions/Packaging Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171736"/>
		<updated>2010-06-11T08:54:07Z</updated>

		<summary type="html">&lt;p&gt;Jl: type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Packaging Notes For Bundled Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bundled extensions are installed during OOo&amp;#039;s setup and only the setup can install or remove them. That is, they cannot be modified by the extension manager, which would change the installation. The installer copies the extensions into the extensions directory of the &amp;quot;share&amp;quot; folder. For example, &amp;lt;code&amp;gt;C:\Program Files\OpenOffice.org 3\share\extensions&amp;lt;/code&amp;gt; on Windows XP. Contrary to versions previous to OOo 3.3, unopkg need &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; be run as a post install step. To uninstall the extensions, the installer can simply delete the directories of the respective extensions.&lt;br /&gt;
&lt;br /&gt;
Extensions are packaged as directories instead of &amp;quot;.oxt&amp;quot; files. For example, there is an extension Foo.oxt containing the files f1 and f2. The installer package must then contain the &amp;quot;unzipped&amp;quot; extension, that is a directory Foo (oxt can be ommitted). After installation, the file structure must be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ Office/share/extensions&lt;br /&gt;
  + Foo&lt;br /&gt;
  |- f1&lt;br /&gt;
  |- f2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
During the packaging process one must make sure that all bundled extensions have different directory names, so as to prevent overwriting other extensions. In case of a name clash, one needs to modify the directory name of the extension appropriately. &lt;br /&gt;
&lt;br /&gt;
The name of the folder should still reflect the name of the original extension file. This makes it easier to locate the extension in the file system. This name will also be used by the extension manager dialog if the extension does not provide a display name.&lt;br /&gt;
&lt;br /&gt;
Bundled extension MUST have an identifier and version, otherwise OOo cannot determine reliably if a bundled extension was removed.&lt;br /&gt;
&lt;br /&gt;
Executables contained in the extension must have the executable flag set. This is usually done by the extension manager, but not in case of bundled extensions.&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171733</id>
		<title>Documentation/DevGuide/Extensions/Packaging Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171733"/>
		<updated>2010-06-11T08:52:28Z</updated>

		<summary type="html">&lt;p&gt;Jl: rewritten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Packaging Notes For Bundled Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bundled extensions are installed during OOo&amp;#039;s setup and only the setup can install or remove them. That is, they cannot be modified by the extension manager, which would change the installation. The installer copies the extension into the extensions directory of the &amp;quot;share&amp;quot; folder. For example, &amp;lt;code&amp;gt;C:\Program Files\OpenOffice.org 3\share\extensions&amp;lt;/code&amp;gt; on Windows XP. Contrary to versions previous to OOo 3.3, unopkg need &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; be run as a post install step. To uninstall the extensions, the installer can simply delete the directories of the respective extensions.&lt;br /&gt;
&lt;br /&gt;
Extensions are packaged as directories instead of &amp;quot;.oxt&amp;quot; files. For example, there is an extension Foo.oxt containing the files f1 and f2. The installer package must then contain the &amp;quot;unzipped&amp;quot; extension, that is a directory Foo (oxt can be ommitted). After installation, the file structure must be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ Office/share/extensions&lt;br /&gt;
  + Foo&lt;br /&gt;
  |- f1&lt;br /&gt;
  |- f2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
During the packaging process one must make sure that all bundled extensions have different directory names, so as to prevent overwriting other extensions. In case of a name clash, one needs to modify the directory name of the extension appropriately. &lt;br /&gt;
&lt;br /&gt;
The name of the folder should still reflect the name of the original extension file. This makes it easier to locate the extension in the file system. This name will also be used by the extension manager dialog if the extension does not provide a display name.&lt;br /&gt;
&lt;br /&gt;
Bundled extension MUST have an identifier and version, otherwise OOo cannot determine reliably if a bundled extension was removed.&lt;br /&gt;
&lt;br /&gt;
Executables contained in the extension must have the executable flag set. This is usually done by the extension manager, but not in case of bundled extensions.&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Layers&amp;diff=171495</id>
		<title>Documentation/DevGuide/Extensions/Extension Layers</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Layers&amp;diff=171495"/>
		<updated>2010-06-09T11:47:44Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Location of Installed Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Checklist for Writing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Manager Rework}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The Extension Manager uses two extension layers, the user and the shared layer. Extensions installed in the shared layer can be used by all users whereas those in the user layer can only be used by the user who installed them. An extension can be installed in either layer or both. &lt;br /&gt;
&lt;br /&gt;
This system was developed many years ago. Since then new features were added, such as extension versioning, online update, bundled extensions, etc. During that time it became obvious that there are some problems with the original design. This document tries to explain them. &lt;br /&gt;
==Current problems==&lt;br /&gt;
&lt;br /&gt;
=== Hiding ===&lt;br /&gt;
The idea of layers is that extensions in the top layer &amp;#039;&amp;#039;&amp;#039;hide&amp;#039;&amp;#039;&amp;#039; the same extensions in the layer below. In other words, the extension in the highest layer will be given preference, when resources from the extension are requested. Because the user layer is the top layer, a shared extension is only used when the same extension does not exist in the user layer. The version of the extension has no influence.&lt;br /&gt;
&lt;br /&gt;
This, however, is only a simplified model. An extension is never used as a whole. Instead clients access the particular contents, such as components, configuration data, etc. And it is also these contents which obscure the same content in a lower layer. For example, an extension contains a UNO service, which is installed in both layers. When the client instantiates it then the one from the top layer is used.&lt;br /&gt;
&lt;br /&gt;
There are situations where contents of the shared extensions are still used, although they should be hidden and therefore not usable. Assuming there are version 1 and version 2 of  an extension. Then the different versions may have different content. For example, version 1 may contain a service &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; which is not contained in version 2. If now version 1 is installed in the shared layer and version 2 in the user layer then &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; is still around and can be instantiated. Foo may access resources which are also delivered with this extension and are also available in version 2 which is in the user layer. Resources in version 2, which hide those from version 1 (same node in xcu or same service), can be incompatible, so that foo fails.&lt;br /&gt;
&lt;br /&gt;
A service may also need files which are part of the same extension and which are only directly accessible. That is there is no  API, such as the registry or service manager, which can provide the content. A &amp;quot;running&amp;quot; service does not know from which layer it comes from. To get the install location it can use the  [[Documentation/DevGuide/Extensions/Location of Installed Extensions|PackageInformationProvider]]. This service will first look into user layer and if the extension cannot be found, then it will look into the shared layer. If now the service from the shared layer needs some file from its extension, then it may accidentally use the one from a different version of the extension in the user layer. This file can be incompatible or not even exist and make the service fail.&lt;br /&gt;
&lt;br /&gt;
Another example can be constructed using registry values, which are contained in xcu files. Let&amp;#039;s assume that version 1 of an extension adds a menu &amp;#039;&amp;#039;foo&amp;#039;&amp;#039; and version 2 adds menu &amp;#039;&amp;#039;bar&amp;#039;&amp;#039;. If one extension is installed in the share and the other in the user layer, then both menus appear. This is because the nodes of the configuration files are merged into the configuration and not the xcu files itself. That is, if the extensions contain an xcu file with the same name, then the xcu file of the last installed extension will NOT replace the one from the other extension. The second xcu file can, however, change the values for nodes which have been defined by the first xcu.&lt;br /&gt;
&lt;br /&gt;
These examples prove that the layering (in terms of hiding the items from the layer below) on extension level does not work, although it does for the respective [[Documentation/DevGuide/Extensions/Deployment Items|deployment items]]. And it may be safe to say, that this goes against the user&amp;#039;s expectation.&lt;br /&gt;
&lt;br /&gt;
===Unclear behavior===&lt;br /&gt;
It may be unclear to users how the behavior is when the same extension is installed as user and shared extension. If there is a shared extension and the same extension is installed as user extension, then the user should be informed that the currently installed extension will become &amp;#039;inactive&amp;#039;. Then, when the user extension is uninstalled, the user should be informed that the shared extension will become &amp;#039;active&amp;#039; again.&lt;br /&gt;
&lt;br /&gt;
=== Extension versions ===&lt;br /&gt;
&lt;br /&gt;
As already observed, the version of an extension has no influence on the decision if the extension from the user or the shared layer is used. At the time of developing the extension framework there was no support for versioned extensions, so one did not have to care about them. Later, we recognized that an extension version is useful for users. For example, if one has an extension installed and is installing the same extension again, then one is being informed about what extension has the later version (so one can decide which is the best for them). &lt;br /&gt;
&lt;br /&gt;
I think the general expectation is that the latest version is the best. Therefore it should be natural that OOo uses always that one. However, this is not the case and users may unintentionally prevent, that they use the latest extension. For example, OOo comes with a bundled English dictionary. Now a user installs, intentionally or not, the same extension and forgets about it. The administrator updates OOo regularly, which also updates the dictionary with the latest version. But the user would still use the old dictionary, because that is the one from the user layer which hides the one from the shared layer.&lt;br /&gt;
&lt;br /&gt;
One could think now of a notification for the user but there are some questions:&lt;br /&gt;
*when does OOo check for this situation?  &lt;br /&gt;
*how can this be explained to the user? &lt;br /&gt;
The first question, is easily answered: At every start-up.&lt;br /&gt;
&lt;br /&gt;
The second question is more difficult.Think about a message, such as: &amp;quot;Dear user. You cannot use the latest version of the french dictionary, which is installed in the shared/bundled layer. Instead the dictionary which you installed earlier is used. You need to uninstall it, if you want the new version ....&amp;quot; &lt;br /&gt;
Many users would probably not understand this. So the easiest and natural way is simply to use the latest version of the extension indepedent of what layer it is installed in. The term layer should then be replaced, by repository, indicating that the location does not include a preference – just think about the picture of one layer above the other compared to repositories which are arranged in one row. &lt;br /&gt;
&lt;br /&gt;
=== Layer location ===&lt;br /&gt;
&lt;br /&gt;
The shared layer is located within the OOo installation. The benefit is that normal users cannot modify it. The layer will be modified after installation of OOo when an extensions is added, deleted, enabled or disabled. Depending on the operation system, this may be against the system guidelines. For example, it would be not allowed on Windows Vista/ 7. However, to allow “legacy application” to work Microsoft invented the virtual store. &lt;br /&gt;
&lt;br /&gt;
=== Clean uninstallation ===&lt;br /&gt;
&lt;br /&gt;
Modification of  the shared layer will also prevent the clean uninstallation of OOo. This is because the native installer does not “own”  the files/folder which were added by the extension manager. For example, on Linux the path /opt/openoffice.org3/share/uno_packages will remain on the system. On OpenSolaris the shared extensions (with the same directory structure) will be copied to /var/lost+found on uninstallation.&lt;br /&gt;
&lt;br /&gt;
=== Keeping the user&amp;#039;s extensions ===&lt;br /&gt;
The rule is, whatever a user installed should not be removed by OOo. This is also valid for shared extensions. Today a bundled extension is nothing else than a shared extension and therefore can be modified by users, provided they have sufficient file access rights. They can install the same extension as one, which was installed as bundled extension, in the shared layer. This means that the original bundled extension is replaced by the recently installed shared extension. This can happen in two scenarios. The first one is during an online update of the extension and the second is when the extension is “manually” installed.  In these cases users intentionally choose to replace the original extension. Therefore this extension may not be deleted when uninstalling OOo. This, however, requires to know that the bundled extension was replaced, but there is currently no way to recognize this.&lt;br /&gt;
&lt;br /&gt;
===Selection of extensions in setup===&lt;br /&gt;
Like many other features, bundled extensions should be selectable in the dialog of the installer. The  installer can also be invoked later to add or remove particular features. The problem is, that the extensions which the installer “sees” are not the same as “seen” by the extension manager. The setup copies an oxt file to ../share/extension/install and then invokes a post-install script (Unix) or a custom action (Windows) which runs unopkg to install the extension properly. The extension is then unzipped to ../share/uno_packages/cache/uno_packages and some data are added to the extension manager database. The installer only knows the file that it copied to the ../share/extension/install folder. If it is there then it is regarded as installed – otherwise not.&lt;br /&gt;
&lt;br /&gt;
For an extension to show up in the dialog of the extension manager, there are two conditions which need to be met. First, it must be unpacked in the uno_packages folder. And second, there must be an appropriate entry in the extension manager database,  indicating that it is installed. Therefore it would be possible that the installer displayed an extension as being installed but the extension manager did not. This may of course happen the other way round as well.&lt;br /&gt;
&lt;br /&gt;
Even if the installer would copy the uncompressed extension  directly to ../share/uno_packages/cache/uno_packages, both dialogs could show a different status. One could assume that the installer and extension manager  regard an extension as installed if the the respective folder exists. But this does not work, because the extension manager does not remove immediately the extension when it is being uninstalled. The reason is, that files from the extension can still be in use   in the process. Only after restarting OOo and the extension manager, the extension&amp;#039;s folder will be finally removed.&lt;br /&gt;
&lt;br /&gt;
===Code execution during installation===&lt;br /&gt;
Copying extensions into the office installation during setup is not sufficient to make them usable. Only after the extension manager has processed them, OOo can make use of them. Therefore the installer invokes the extension manager after an extension has been copied. Unfortunately this requires different solutions for different platforms. RPM (Linux) and PKG (Solaris) use post-install/pre-install scripts which are executed after the copying step. But there are installation scenarios on Solaris, where code execution is not allowed during the setup. For example, the installer is running on Solaris Sparc and installs OOo on a Solaris Intel Machine machine. Therefore OOo uses a “postrun” service which invokes the extension manager when the system is rebooted. OpenSolaris prohibits code execution completely. The setup needs to install an SMF service which is triggered after the setup. Windows needs a &amp;#039;custom action&amp;#039; which is compiled native code. The Mac dmg file already contains the processed extensions. That is, the extension manager processes the extension while building the  dmg file.&lt;br /&gt;
&lt;br /&gt;
It is obvious that the current situation is complex and one understands why testing and bug finding  are rather difficult.&lt;br /&gt;
&lt;br /&gt;
===Extension Manager database===&lt;br /&gt;
The database is created when the extension manager is started for the first time. The database contains different files and folders which are completely unknown to the installer. Therefore the installer will not remove them. This is another reason why the OpenOffice.org folder remains on the  system after uninstalling OOo.&lt;br /&gt;
&lt;br /&gt;
===Keeping shared extensions===&lt;br /&gt;
Shared extensions installed by the user should should survive the uninstallation of OOo. So that future versions of OOo can use them. Depending on the platform, they are currently moved, deleted or left alone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Scripting/Integration_with_Extension_Manager&amp;diff=171458</id>
		<title>Documentation/DevGuide/Scripting/Integration with Extension Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Scripting/Integration_with_Extension_Manager&amp;diff=171458"/>
		<updated>2010-06-09T06:15:37Z</updated>

		<summary type="html">&lt;p&gt;Jl: /* Implementation of LanguageScriptProvider with support for Package Manager */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ScriptingTOC&lt;br /&gt;
|Scripting2d=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Scripting/Implementation&lt;br /&gt;
|NextPage=Documentation/DevGuide/GUI/Graphical User Interfaces&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Scripting/{{SUBPAGENAME}}}} &lt;br /&gt;
 {{DISPLAYTITLE:Integration with Extension Manager}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The Extension Manager is a tool for deploying components, configuration data and macro libraries (see chapter [[Documentation/DevGuide/Extensions/Extensions|Extensions]]). It provides a convenient mechanism for macro developers to distribute their macros. &lt;br /&gt;
&lt;br /&gt;
The scripting framework supports deployment of macros in extensions. Currently only extensions for the media type &amp;quot;&amp;lt;code&amp;gt;application/vnd.sun.star.framework-script&amp;lt;/code&amp;gt;&amp;quot; are supported. Macros deployed in extensions of this media type must use the &amp;lt;code&amp;gt;ScriptingFramework&amp;lt;/code&amp;gt; storage scheme and &amp;#039;&amp;#039;parcel-descriptor.xml&amp;#039;&amp;#039; to function correctly. An implementation of the &amp;lt;idl&amp;gt;com.sun.star.deployment.PackageRegistryBackend&amp;lt;/idl&amp;gt; service is provided which supports deployment of macro libraries of media type &amp;quot;&amp;lt;code&amp;gt;application/vnd.sun.star.framework-script&amp;lt;/code&amp;gt;&amp;quot; with the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
{{Documentation/Note|{{PRODUCTNAME}} Basic macros are handled via a separate media type &amp;quot;&amp;lt;tt&amp;gt;application/vnd.sun.star.basic-script&amp;lt;/tt&amp;gt;&amp;quot; and hence handled by a different mechanism.}}&lt;br /&gt;
&lt;br /&gt;
=== Overview of how ScriptingFramework integrates with the Extension Manager API  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:PkgMgrInteraction.png|none|thumb|400px|Registration of macro library using Package Manager]]&lt;br /&gt;
&lt;br /&gt;
==== Registration ====&lt;br /&gt;
&lt;br /&gt;
Macro libraries contained in extensions are registered by the Extensions Manager. It informs the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; by calling its &amp;lt;code&amp;gt;insertByName()&amp;lt;/code&amp;gt; method. The &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; persists the registration of the macro library in order to be aware of registered libraries when {{PRODUCTNAME}} is restarted at a future time. &lt;br /&gt;
&lt;br /&gt;
==== Deregistration ====&lt;br /&gt;
&lt;br /&gt;
Deregistration of a macro library contained in an extension is similar to the registration process described above, the Extension Manager informs the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; that a macro library has been removed by calling its &amp;lt;code&amp;gt;removeByName()&amp;lt;/code&amp;gt; method. The &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; removes the macro library from its persisted store of registered macro libraries. &lt;br /&gt;
&lt;br /&gt;
==== Implementation of LanguageScriptProvider with support for Package Manager ====&lt;br /&gt;
&lt;br /&gt;
[[Image:LanguageProviderServicePkgNameCont.png|none|thumb|400px|LanguageScriptProvider]]&lt;br /&gt;
&lt;br /&gt;
In order for the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; to handle macro libraries contained in UNO packages with media type &amp;quot;&amp;lt;code&amp;gt;application/vnd.sun.star.framework-script&amp;lt;/code&amp;gt;&amp;quot; it&amp;#039;s &amp;lt;code&amp;gt;initialize()&amp;lt;/code&amp;gt; method must be able to accept a special location context that indicates to the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; that it is dealing with extensions.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Location context  &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;&amp;lt;code&amp;gt;user:uno_packages&amp;lt;/code&amp;gt;&amp;quot; &lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;. Denotes the user installation deployment context.  &lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;&amp;lt;code&amp;gt;share:uno_packages&amp;lt;/code&amp;gt;&amp;quot; &lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;. Denotes the share installation deployment context. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On initialization the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; needs to determine what macro libraries are already deployed by examining its persistent store. &lt;br /&gt;
&lt;br /&gt;
{{Documentation/Note|&amp;lt;tt&amp;gt;LanguageScriptProviders&amp;lt;/tt&amp;gt; created by implementing the abstract Java helper &amp;lt;tt&amp;gt;class com.sun.star.script.framework.provider.ScriptProvider&amp;lt;/tt&amp;gt; do not need to concern themselves with storing details of registered macro libraries in extensions. This support is provided automatically. An XML file called &amp;#039;&amp;#039;unopkg-desc.xml&amp;#039;&amp;#039; contains the details of deployed UNO script packages . This file located in either &amp;#039;&amp;#039;&amp;lt;OfficePath&amp;gt;/user/Scripts&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;lt;OfficePath&amp;gt;/share/Scripts&amp;#039;&amp;#039; depending on the installation deployment context. &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;As of OOo 3.3&amp;#039;&amp;#039;&amp;#039; the file is called shared-extension-desc.xml, for shared extetensions, and user-extension-desc.xml for user extensions. Both are in &amp;lt;UserInstallation&amp;gt;/user/Scripts.&lt;br /&gt;
&lt;br /&gt;
The DTD for &amp;#039;&amp;#039;unopkg-desc.xml&amp;#039;&amp;#039; follows&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- DTD for unopkg-desc for OpenOffice.org Scripting Framework Project --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!ELEMENT package EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT language (package+)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT unopackages (language+)&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST language&lt;br /&gt;
    value CDATA #REQUIRED&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST package&lt;br /&gt;
    value CDATA #REQUIRED&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a sample an &amp;#039;&amp;#039;uno-desc.xml&amp;#039;&amp;#039; file is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;unopackages xmlns:unopackages=&amp;quot;unopackages.dtd&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;language value=&amp;quot;BeanShell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;package value=&amp;quot;vnd.sun.star.pkg://vnd.sun.star.expand:&lt;br /&gt;
      $UNO_USER_PACKAGES_CACHE%2Funo_packages%2Flatest.uno.pkg/WordCount&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/language&amp;gt;&lt;br /&gt;
  &amp;lt;language value=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;package value=&amp;quot;vnd.sun.star.pkg://vnd.sun.star.expand:&lt;br /&gt;
      $UNO_USER_PACKAGES_CACHE%2Funo_packages%2Flatest.uno.pkg/ExportSheetsToHTML&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;package value=&amp;quot;vnd.sun.star.pkg://vnd.sun.star.expand:&lt;br /&gt;
      $UNO_USER_PACKAGES_CACHE%2Funo_packages%2Flatest.uno.pkg/JSUtils&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/unopackages&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; that does not use the Java abstract helper class &amp;lt;code&amp;gt;com.sun.star.script.framework.provider.ScriptProvider&amp;lt;/code&amp;gt; will need to persist the extensions deployed for the supported language themselves.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; additionally needs to support the &amp;lt;idl&amp;gt;com.sun.star.container.XNameContainer&amp;lt;/idl&amp;gt; interface which supports the following methods.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  void insertByName( [in] string aName, &lt;br /&gt;
                     [in] any aElement ) &lt;br /&gt;
  void removeByName( [in] string Name ) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
On registration of an extension containing scripts the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt;&amp;#039;s &amp;lt;code&amp;gt;insertByName()&amp;lt;/code&amp;gt; method is called with &amp;lt;code&amp;gt;aName&amp;lt;/code&amp;gt; containing the URI to a macro library contained in the extension and &amp;lt;code&amp;gt;aElement&amp;lt;/code&amp;gt; contains an object implementing &amp;lt;idl&amp;gt;com.sun.star.deployment.XPackage&amp;lt;/idl&amp;gt; Note that the URI contains the full path to the macro library contained in the extension. For example, if the library is named my macros then the path includes the &amp;#039;&amp;#039;mymacros&amp;#039;&amp;#039; directory.&lt;br /&gt;
&lt;br /&gt;
On deregistration of an extension containing scripts the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt;&amp;#039;s &amp;lt;code&amp;gt;removeByName()&amp;lt;/code&amp;gt; method is called with &amp;lt;code&amp;gt;aName&amp;lt;/code&amp;gt; containing the URL to a macro library to be de-registered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;idl&amp;gt;com.sun.star.container.XNameContainer&amp;lt;/idl&amp;gt; interface itself inherits from &amp;lt;idl&amp;gt;com.sun.star.container.XNameAccess&amp;lt;/idl&amp;gt; which supports the following method&lt;br /&gt;
&amp;lt;source lang=&amp;quot;idl&amp;quot;&amp;gt;&lt;br /&gt;
  boolean hasByName( [in] string aName )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
To determine whether the macro library in an extension is already registered the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt;&amp;#039;s &amp;lt;code&amp;gt;hasByName()&amp;lt;/code&amp;gt; is called with &amp;lt;code&amp;gt;aName&amp;lt;/code&amp;gt; containing the URL to the script library. The other methods of the interfaces inherited by &amp;lt;idl&amp;gt;com.sun.star.container.XNameContainer&amp;lt;/idl&amp;gt; are omitted for brevity and because they are not used in the interaction between the Extension Manager and the &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt;. A Developer however still must implement these methods.&lt;br /&gt;
&lt;br /&gt;
==== Implementation of the BrowseNode service ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;LanguageScriptProvider&amp;lt;/code&amp;gt; created for an installation deployment context needs to expose the macro and macro libraries that it is managing. How this is achieved is up to the developer. A &amp;lt;code&amp;gt;LanguageScriptProviders&amp;lt;/code&amp;gt; created by extending the Java abstract helper class &amp;lt;code&amp;gt;com.sun.star.script.framework.provider.ScriptProvider&amp;lt;/code&amp;gt; creates nodes for each extension that contain macro libraries for the supported language . Each extension node contains the macro library nodes for the supported language and those nodes in turn contain macro nodes. &lt;br /&gt;
&lt;br /&gt;
An alternative implementation could merge the macro libraries into the existing tree for macro libraries and not distinguish whether the macros are located in an extension or not. This is loosely the approach taken for {{PRODUCTNAME}} Basic. &lt;br /&gt;
&lt;br /&gt;
Example of creating a extension containing a macro library suitable for deploying with Extension Manager.The following example shows how to create an UNO package from the Beanshell macro library Capitalize. This macro library is located in the &amp;#039;&amp;#039;&amp;lt;OfficeDir&amp;gt;/share/beanshell/Capitalize&amp;#039;&amp;#039; directory of a {{PRODUCTNAME}} installation . The extension created will be deployable using the Extension Manager . &lt;br /&gt;
&lt;br /&gt;
First create a scratch directory for example called &amp;#039;&amp;#039;temp&amp;#039;&amp;#039;. Copy the macro library directory and its contents into &amp;#039;&amp;#039;temp&amp;#039;&amp;#039;. In &amp;#039;&amp;#039;temp&amp;#039;&amp;#039; create a sub-directory called &amp;#039;&amp;#039;META-INF&amp;#039;&amp;#039; and within this directory create a file called &amp;#039;&amp;#039;manifest.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dir&amp;gt; Temp&lt;br /&gt;
  |&lt;br /&gt;
  |-&amp;lt;Dir&amp;gt; Capitalise&lt;br /&gt;
  | |&lt;br /&gt;
  | |--parcel-desc.xml&lt;br /&gt;
  | |--capitalise.bsh &lt;br /&gt;
  |&lt;br /&gt;
  |-&amp;lt;Dir&amp;gt; META-INF&lt;br /&gt;
  |&lt;br /&gt;
  |--manifest.xml &lt;br /&gt;
&lt;br /&gt;
The contents of the &amp;#039;&amp;#039;manifest.xml&amp;#039;&amp;#039; file for the Capitalize macro library are as follows&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;!DOCTYPE manifest:manifest PUBLIC &amp;quot;-//OpenOffice.org//DTD Manifest 1.0//EN&amp;quot; &amp;quot;Manifest.dtd&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;manifest:manifest xmlns:manifest=&amp;quot;http://openoffice.org/2001/manifest&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;manifest:file-entry manifest:media-type=&amp;quot;application/vnd.sun.star.framework-script&amp;quot; manifest:full-path=&amp;quot;Capitalise/&amp;quot;/&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/manifest:manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Next create a zip file containing the contents (but not including ) the &amp;#039;&amp;#039;temp&amp;#039;&amp;#039; directory. The name of the file should have the extension &amp;quot;&amp;#039;&amp;#039;.oxt&amp;#039;&amp;#039;&amp;quot; e.g. &amp;#039;&amp;#039;Capitalise.oxt&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Deploying a macro library contained in an extension.To deploy the extension you need to use the Extension Manager (see chapter [[Documentation/DevGuide/Extensions/Extensions|Extensions]]). Once the extension has been deployed successfully the macro will be available for assignment or execution. &lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Scripting]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Versions&amp;diff=171457</id>
		<title>Documentation/DevGuide/Extensions/Extension Versions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Versions&amp;diff=171457"/>
		<updated>2010-06-09T05:37:33Z</updated>

		<summary type="html">&lt;p&gt;Jl: changes for OOo 3.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Identifiers&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Target Platform&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Versions}}&lt;br /&gt;
Extensions are often improved over time. That is, publishers want to ship new versions of the same extension with added functionality and/or bug fixes. Adding extension versions allows publishers to ship new versions, and allows {{PRODUCTNAME}} to detect and handle the case that an extension installed by the user is an update of an existing extension.&lt;br /&gt;
&lt;br /&gt;
Technically, an extension version v is defined as an infinite sequence of non-negative integers v = ‹v&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, v&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ...› where all but a finite number of elements have the value zero. A total order is defined on versions via lexicographical comparison. A textual representation of a version v = ‹v&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, v&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ...› is a finite string built from the BNF&lt;br /&gt;
&lt;br /&gt;
  version ::= [element (“.” element)*]&lt;br /&gt;
  element ::= (“0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”)+&lt;br /&gt;
&lt;br /&gt;
of n ≥ 0 elements where each element is a decimal representation of v&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; for 0 ≤ i &amp;lt; n, and each v&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; = 0 for i ≥ n.&lt;br /&gt;
&lt;br /&gt;
The extension version is obtained from the description.xml contained in the extension. If the extension does not specify such an explicit version, then an implict textual version representation of the empty string (representing a version of all zeroes) is assumed.&lt;br /&gt;
&lt;br /&gt;
No general semantics are prescribed to versions, other than the total order which determines whether one version is less than, equal to, or greater than another version, respectively. However, extension publishers are encouraged to use the widely accepted three-level scheme of major (incompatible changes), minor (compatible changes), micro (bug fixes) where applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;As of OOo 3.3&amp;#039;&amp;#039;&amp;#039; providing a version is necessary for bundled and shared extensions (see [[Documentation/DevGuide/Extensions/Processing_Extensions#Removing_a_shared_extension|Processing Extensions]]).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|XML description for description.xml]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Identifiers&amp;diff=171456</id>
		<title>Documentation/DevGuide/Extensions/Extension Identifiers</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Identifiers&amp;diff=171456"/>
		<updated>2010-06-09T05:33:29Z</updated>

		<summary type="html">&lt;p&gt;Jl: need of identifier for OOo 3.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Description&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Extension Versions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Identifiers}}&lt;br /&gt;
Extensions now have unique identifiers. This removes the previous restriction that no two extensions with identical file names can be deployed. That is, two extensions with same file name but different identifiers can be installed but two extensions with the same identifiers cannot be installed at the same time.&lt;br /&gt;
&lt;br /&gt;
The identifier plays also an important role for the [[Documentation/DevGuide/Extensions/Online_Update_of_Extensions|on-line update]]. When running the on-line update, then the Extension Manager downloads a list of available extensions from the extension repository or from the location determined by the installed extension. The Extension Manager then tries to find an extension with a newer version in this list by comparing the identifier of the installed extensions with the identifier contained in the [[Documentation/DevGuide/Extensions/Description_of_the_Update_Information|update information]]. Therefore the identifier &amp;#039;&amp;#039;&amp;#039;MUST&amp;#039;&amp;#039;&amp;#039; be unique. This is also the case when two extensions are logically the same but support different platforms. In this case one can achieve this uniqueness by adding a platform string to identifier. The  [[Documentation/DevGuide/Extensions/Target Platform#Generating the Platform String in the Build Environment|&amp;#039;Target Platform&amp;#039;]] section describes how this string can be generated in the build environment.&lt;br /&gt;
&lt;br /&gt;
Technically, an extension identifier is a finite sequence of Unicode scalar values. Identifier identity is element-by-element identity of the sequences (no case folding, no normalization, etc.). It is assumed that extension writers cooperate to keep extension identifiers unique. By convention, use lowercase reversed-domain-name syntax (e.g., &amp;#039;&amp;#039;org.openoffice.&amp;#039;&amp;#039;) prefixes to generate unique (but still humanly comprehensible) identifiers. When you write an extension, use the reversed domain name of a site you control (and not &amp;#039;&amp;#039;org.openoffice.&amp;#039;&amp;#039;) as prefix. Identifiers starting with the prefix &amp;#039;&amp;#039;org.openoffice.legacy.&amp;#039;&amp;#039; are reserved for legacy extensions (see next). The same procedure used to avoid name clashes for extension identifier applies to all unique names in configuration files of extensions (configuration nodes in extendable lists etc.).&lt;br /&gt;
&lt;br /&gt;
The extension identifier is obtained from the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; contained in the extension. If the extension does not specify such an explicit identifier, then an implicit identifier is generated by prepending &amp;#039;&amp;#039;org.openoffice.legacy.&amp;#039;&amp;#039; to the (obvious sequence of Unicode scalar values representing the) file name of the extension. (Uniqueness of identifiers is then guaranteed by the assumption underlying legacy extension management that no two legacy extensions have the same file name.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;As of OOo 3.3&amp;#039;&amp;#039;&amp;#039; providing an identifier is necessary for bundled and shared extensions (see [[Documentation/DevGuide/Extensions/Processing_Extensions#Removing_a_shared_extension|Processing Extensions]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|XML description for description.xml]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Simple_License&amp;diff=171400</id>
		<title>Documentation/DevGuide/Extensions/Simple License</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Simple_License&amp;diff=171400"/>
		<updated>2010-06-08T10:41:00Z</updated>

		<summary type="html">&lt;p&gt;Jl: notes for OOo 3.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2c=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Target Platform&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Dependencies&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Simple License}}&lt;br /&gt;
This feature is about displaying a license text to the user during installation. This is not supported for &amp;#039;&amp;#039;&amp;#039;bundled extensions&amp;#039;&amp;#039;&amp;#039;. Distributors of OOo need to clarify license details with the publishers of extensions, which they want to bundle with OOo.&lt;br /&gt;
&lt;br /&gt;
The user can agree or decline the license, where in the latter case the installation will be aborted. It is called “Simple License” because there is no tamper resistant mechanism that prevents the installation in case the user does not agree to the license. It also does not do anything more than just displaying a license text. The text can be localized (see [[Documentation/DevGuide/Extensions/Localized XML Elements]]). &lt;br /&gt;
 &lt;br /&gt;
The license text is displayed either in a dialog or in the console dependent on the way the Extension Manager was started. When it was started by the &amp;#039;&amp;#039;&amp;#039;Tools - Extension Manager&amp;#039;&amp;#039;&amp;#039; menu item or by invoking &amp;lt;code&amp;gt;unopkg gui&amp;lt;/code&amp;gt; in the console then a dialog is used. By using &amp;#039;&amp;#039;unopkg&amp;#039;&amp;#039; add the license text will be displayed in the console and user input has to be done through the same.&lt;br /&gt;
&lt;br /&gt;
The license dialog or the license text in the console is displayed when the extension is being installed. Currently there are two modes to install extensions, user mode and shared mode. An extension that was installed in user mode (let&amp;#039;s call it a &amp;#039;&amp;#039;user extension&amp;#039;&amp;#039;) can only be used by just that person who installed it. If the extension was installed in shared mode (let&amp;#039;s call it a &amp;#039;&amp;#039;shared extension&amp;#039;&amp;#039;), then it can be used by all users. Since the license text is only displayed during installation, all users who are using a &amp;#039;&amp;#039;shared extension&amp;#039;&amp;#039; will not see any license text (except the user who installed this &amp;#039;&amp;#039;shared extension&amp;#039;&amp;#039;). However, the publisher of the extension may think it necessary that everyone who wants to use it has to agree to the license first. For this purpose, he can mark the extension accordingly. This extension can then only be installed in user mode and not in shared mode. Likewise the extension can be marked indicating that only the person who installs it needs to agree to the license. Such an extension can be installed in both modes. But when installing in user mode then every user has to agree to the license nonetheless.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;As of OOo 3.3&amp;#039;&amp;#039;&amp;#039; shared extension can also require that every user accepts the license. This happens the first time a user starts OOo after the shared extension was installed. If the user declines the license, then the extension is not usable for this user. It will, however, be displayed in the dialog, where the user can accept the license later. Similarly a user can accept the license by running &amp;lt;code&amp;gt;unopkg validate&amp;lt;/code&amp;gt;. For example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;unopkg validate --shared  org.openoffice.legacy.ShortLicense.oxt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the description.xml:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;description xmlns=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot;&lt;br /&gt;
    xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;registration&amp;gt;&lt;br /&gt;
      &amp;lt;simple-license accept-by=&amp;quot;user&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;license-text xlink:href=&amp;quot;registration/license_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;license-text xlink:href=&amp;quot;registration/license_en_US.txt&amp;quot; lang=&amp;quot;en-US&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/simple-license&amp;gt;&lt;br /&gt;
    &amp;lt;/registration&amp;gt;&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, the license would have to be agreed to by all users (that means no shared mode installation). This is indicated by the value &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; of the attribute accept-by in the &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt; element. The attribute could also have the value &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt;, which would indicate that the license needs only be agreed to by the person who installs it.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; elements contain information about the files which contain the text that is displayed. The content of these files must be UTF-8 encoded. It is displayed exactly as it is in the file. That is, no formatting occurs. There can be one to many &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; elements, where each element provides information about a different language of the license text. The attribute &amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; contains a relative URL (relative to the root directory of the extension) which points to a file which contains the license text in exactly one language. Which language is indicated by &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
If the package manager does not find a &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; element which matches the locale of {{PRODUCTNAME}} then it will pick the first &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; element as the default. Prior to OOo 2.4. the default entry needed to marked explicitely by &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|license-id]]&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
==Important Issues==&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;(Obsolete as of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;Using the simple license in extensions always requires user interaction. Using &amp;lt;code&amp;gt;accept-by=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; prevents this extension from being installed centrally, that is as shared extensions. Both issues can prevent the extension from being used by companies, which centrally maintain software.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;(Obsolete as of OOo 3.3, feature is not supported but installation will not hang when using extensions with a license)&amp;#039;&amp;#039;&amp;#039; The &amp;#039;simple license&amp;#039; does not work for bundled extensions (installation will probably hang as user input is required). If one wants to build an OOo installation set with bundled extensions, then they must not use this feature. &lt;br /&gt;
&lt;br /&gt;
To get around these limitations, extensions need to provide the attribute [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|suppress-if-required=&amp;quot;true&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|XML description for description.xml]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171339</id>
		<title>Documentation/DevGuide/Extensions/Packaging Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171339"/>
		<updated>2010-06-08T09:27:55Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Packaging Notes For Bundled Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bundled extensions are installed during OOo&amp;#039;s setup and only the setup can install or remove them. They are copied in an uncompressed way into the extension folder of the repository. For example, an extension Foo contains two files f1, f2. Then the native package contains a folder Foo and therein the files f1 and f2. &lt;br /&gt;
It must be guaranteed that the paths to the installed extensions are unique in order to prevent overwriting a previously installed extension. Fore example,  extension1.rpm contains Foo and extension2.rpm also contains Foo, which is a different extension. Both packages would be installed in &lt;br /&gt;
&amp;lt;bundled_repository_extension_folder&amp;gt;/Foo&lt;br /&gt;
when blindly using the extension name.&lt;br /&gt;
&lt;br /&gt;
Therefore, when packaging the rpm, one must provide a unique path. Because, bundling an extension is no automated process, we can leave it to the person who bundles the extension to ensure the uniqueness. In case of a name clash, one needs to modify the folder name of the extension appropriately. &lt;br /&gt;
&lt;br /&gt;
The name of the folder should reflect the name of the original extension file. This makes it easier to locate the extension in the file system. This name will also be displayed in different dialogs if the extension does not provide a display name.&lt;br /&gt;
&lt;br /&gt;
A bundled extension is uninstalled by simply removing the folder containing the extension files. That is, installation and removal only involve simple file operations as done by the installer. No code execution is required. &lt;br /&gt;
&lt;br /&gt;
Bundled extension MUST have an identifier and version, otherwise OOo cannot determine reliably if a bundled extension was removed.&lt;br /&gt;
&lt;br /&gt;
Executables contained in the extension must have the executable flag set. This is usually done by the extension manager, but not in case of bundled extensions.&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Deployment_Items&amp;diff=171332</id>
		<title>Documentation/DevGuide/Extensions/Deployment Items</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Deployment_Items&amp;diff=171332"/>
		<updated>2010-06-08T09:22:25Z</updated>

		<summary type="html">&lt;p&gt;Jl: fixed  PrevPage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Packaging Notes&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Installing Extensions for All or a Single User&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Deployment Items}}&lt;br /&gt;
The Extension Manager can be used to deploy various types of files. It is primarily used for extensions. The latest incarnation of an extensions is the &amp;#039;&amp;#039;.oxt&amp;#039;&amp;#039; file, which has superseded &amp;#039;&amp;#039;.uno.pkg&amp;#039;&amp;#039; and &amp;#039;&amp;#039;.zip&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Apart from extensions the Extension Manager can also manage these types:&lt;br /&gt;
&lt;br /&gt;
* Configuration data (&amp;#039;&amp;#039;.xcu&amp;#039;&amp;#039;, &amp;#039;&amp;#039;.xcs&amp;#039;&amp;#039;)&lt;br /&gt;
* UNO Libraries (&amp;#039;&amp;#039;.dll&amp;#039;&amp;#039; / &amp;#039;&amp;#039;.so&amp;#039;&amp;#039;)&lt;br /&gt;
* JARs (&amp;#039;&amp;#039;.jar&amp;#039;&amp;#039;)&lt;br /&gt;
* Type libraries (&amp;#039;&amp;#039;.rdb&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171331</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171331"/>
		<updated>2010-06-08T09:20:31Z</updated>

		<summary type="html">&lt;p&gt;Jl: fixed title and nextPage link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/The Active Extension&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Updating Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  However, bundled extension could still not be updated by the extension manager, because this is exclusively done by the setup program.&lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user and give them the best user experience, the extension manager will install updates for shared or bundled extensions in the user repository if necessary. That is, the installed extension will remain unchanged and the newer version is installed in a repository with a higher priority. &lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in the user repository) is possible, if&lt;br /&gt;
#there is a bundled extension (no user and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension (no user) and the bundled or online repository contains a higher version&lt;br /&gt;
#there is a user extension and the shared, bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;shared repository&amp;#039;&amp;#039;&amp;#039;. If a user extension exists does not matter.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository    || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository  || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in shared repository) is possible, if&lt;br /&gt;
#there is a bundled extension (and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension  and the bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
This also means that, if there is only a user extension (no shared, no bundled) and there is one with a higher version in the online repository, then no update  is done in the shared repository. &lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in user repository) is possible, if there is a user extension and the shared, bundled, or online repository contains a higher version.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Processing_Extensions&amp;diff=171330</id>
		<title>Documentation/DevGuide/Extensions/Processing Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Processing_Extensions&amp;diff=171330"/>
		<updated>2010-06-08T09:18:45Z</updated>

		<summary type="html">&lt;p&gt;Jl: fixed title and nextPage link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Packaging Notes&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Processing Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
==Checking for modification during start-up==&lt;br /&gt;
Every time OOo is started it needs to check if extensions were removed from or added to the shared or bundled repository. If this is the case, then the registration data of the repository must be updated accordingly and OOo is restarted. &lt;br /&gt;
&lt;br /&gt;
The restart is particularly necessary when extensions are removed to avoid that parts of the extension are still accessible. For example, menu entries of an removed extension will only disappear after a restart. Similarly a service from an extension may already be running before the registration data is updated. Then the service will be available as long as OOo runs although the extension is removed. The reason for this is, that a shared extension is not immediately deleted from the hard disk when it is removed.&lt;br /&gt;
&lt;br /&gt;
Because OOo checks for added or removed extensions at start-up, this must be very quick. To achieve this, OOo compares the modification time of extension folders of the repositories with the time of the most recently performed check. This time is “saved” in the file lastsynchronized in the registration data folder of the repositories. In fact, the modification time of the file is used rather then a value is written into the file. If the modification time of the extension folder is more recent, then the extension manager will check if extensions were added or removed and update its database accordingly. This is of course an implementation detail and may change at any time.&lt;br /&gt;
&lt;br /&gt;
==Adding==&lt;br /&gt;
===Adding a user extension===&lt;br /&gt;
A user extension is extracted into a folder with a unique name which in turn is contained in the extensions folder. The additional folder with the unique name is necessary to make live deployment possible. When removing an extension, it is only marked as “unusable” and the extension is not deleted, because it may still be in use. If now the same extension is installed again in the same process, then it will be extracted to another folder with a unique name. This prevents a name clash with the folder name of the previously “removed” extension. The user can now repeat to remove and install the extension in the same process. This results in having the same extension multiple times in the extensions folder of the repository, but everyone is contained in a folder with a unique name. The folders of the “removed” extensions, as well as the folders which contain them, are only removed after running the extension manager after restarting OOo.&lt;br /&gt;
&lt;br /&gt;
The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
===Adding a shared extension===&lt;br /&gt;
For the user who adds a shared extension, the extension is processed the same way as a user extension.&lt;br /&gt;
&lt;br /&gt;
For all other users, the extension manager processes the extension the next time they start OOo.&lt;br /&gt;
The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
===Adding a bundled extension===&lt;br /&gt;
A bundled extension is installed by the installation program of OOo. The folder of the extension, including all files contained therein, is copied into the extensions folder of the bundled repository. &lt;br /&gt;
Only when a user starts OOo, then the extension manager processes the extension. The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
==Removing==&lt;br /&gt;
===Removing a user extension===&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. The extension will be deleted when the user runs the extension manager after restarting OOo. &lt;br /&gt;
&lt;br /&gt;
===Removing a shared extension===&lt;br /&gt;
The extension will be revoked if it was registered. To prevent other users from using the extension it is marked to be deleted. This is done by creating a tag file, the &amp;quot;extension removed file&amp;quot;, next to the folder with the unique name. This way, the information that the extension was deleted can be accessed by all users. If this file does not exist and there is no entry in the extensions database, then it is assumed that the extension was added. The file will be deleted when the extension is deleted. The file also contains the name of the user who removed the extension. If the same user runs the extension manager after restarting OOo, then the extension, the unique folder, temp file and the  &amp;quot;extensions removed file are deleted. Why it must be the same user shows the following scenario:&lt;br /&gt;
&lt;br /&gt;
A user starts OOo and uses the extension. The extension will then be removed and OOo keeps running. Now a second user, who also has write access to the extensions folder, starts OOo. When the extension manager starts it would properly delete extensions which were previously removed. However in this case this would affect the office of the first user which still uses that extension.&lt;br /&gt;
The same user cannot start another instance, because this is prevented by the lock file.&lt;br /&gt;
&lt;br /&gt;
For all other users, the extension manager processes the extension the next time they start OOo. This includes the detection of the removed extensions. An extension is regarded as removed if:&lt;br /&gt;
*The unique folder, tmp file, extension folder do not exist anymore.&lt;br /&gt;
*There is a &amp;quot;extension removed file&amp;quot;&lt;br /&gt;
*The extension exists but has a different identifier or version than the one which was previously at the same location. This may happen when the extension was updated, or a previous office update removed the extension and another with the same name was added in the latest office update.&lt;br /&gt;
&lt;br /&gt;
The extension could also have the same file name.&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. &lt;br /&gt;
&lt;br /&gt;
===Removing a bundled extension=== &lt;br /&gt;
A bundled extension can only be removed by the set-up. The folder of the extension, including all files contained in it, is deleted from the extension folder of the bundled repository. &lt;br /&gt;
&lt;br /&gt;
If a user starts OOo, then the extension manager processes the removed extension. This includes the detection of the removed extensions. &lt;br /&gt;
An extension is regarded as removed if:&lt;br /&gt;
*The extension folder do not exist anymore.&lt;br /&gt;
*The extension exists but has a different identifier or version than the one which was previously at the same location.  &lt;br /&gt;
&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. &lt;br /&gt;
&lt;br /&gt;
==Updating==&lt;br /&gt;
An update consists of first removing the extension and then adding the new extension. That is, this is already covered by these two scenarios.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171329</id>
		<title>Documentation/DevGuide/Extensions/Packaging Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171329"/>
		<updated>2010-06-08T09:17:32Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Packaging Notes For Bundled Extensions}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171328</id>
		<title>Documentation/DevGuide/Extensions/Packaging Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Packaging_Notes&amp;diff=171328"/>
		<updated>2010-06-08T09:16:18Z</updated>

		<summary type="html">&lt;p&gt;Jl: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171327</id>
		<title>Template:Documentation/DevGuide/ExtensionsTOC</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171327"/>
		<updated>2010-06-08T09:14:16Z</updated>

		<summary type="html">&lt;p&gt;Jl: adding Packaging Notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/MasterTOC&lt;br /&gt;
|ShowPrevPage={{{ShowPrevPage}}}&lt;br /&gt;
|PrevPage={{{PrevPage}}}&lt;br /&gt;
|ShowNextPage={{{ShowNextPage}}}&lt;br /&gt;
|NextPage={{{NextPage}}}&lt;br /&gt;
|bookid=DevGuide&lt;br /&gt;
|booktitle=[[Documentation/DevGuide/OpenOffice.org Developers Guide|OpenOffice.org Developer&amp;#039;s Guide]]&lt;br /&gt;
|ShowParttitle=block&lt;br /&gt;
|parttitle=[[Documentation/DevGuide/Extensions/Extensions|Extensions]]&lt;br /&gt;
|ShowPrevPart=block&lt;br /&gt;
|PrevPart=Documentation/DevGuide/WritingUNO/Writing UNO Components&lt;br /&gt;
|ShowNextPart=block&lt;br /&gt;
|NextPart=Documentation/DevGuide/AdvUNO/Advanced UNO&lt;br /&gt;
|toccontent=&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager|Extension Manager]]&lt;br /&gt;
&amp;lt;div id=Extensions2a&amp;quot; style=&amp;quot;display:{{{Extensions2a|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Repositories | Extension Repositories]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Active Extension | The Active Extension]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Updating Extensions | Updating Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Processing Extensions | Processing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Packaging Notes | Packaging Notes For Bundled Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Deployment Items|Deployment Items]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Installing Extensions for All or a Single User|Installing Extensions for All or a Single User]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager in OpenOffice.org|Extension Manager in OpenOffice.org]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/unopkg|unopkg]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Location of Installed Extensions|Location of Installed Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Layers|Extension Layers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Checklist for Writing Extensions|Checklist for Writing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/File Format|File Format]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/description.xml|description.xml]]&lt;br /&gt;
&amp;lt;div id=Extensions2b&amp;quot; style=&amp;quot;display:{{{Extensions2b|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of XML Elements|Description of XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Localized XML Elements|Localized XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example|Example]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Identifiers|Extension Identifiers]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/System Integration|System Integration]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
&amp;lt;div id=Extensions2d&amp;quot; style=&amp;quot;display:{{{Extensions2d|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Running Online - Update|Running Online - Update]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Concept|Concept]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example Scenario for Providing Updates|Example Scenario for Providing Updates]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Migration of Update Information|Migration of Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of the Update Information|Description of the Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of Atom Feed|Description of Atom Feed]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Examples|Examples]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Options Dialog|Options Dialog]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Creating the GUI of the Options Page|Creating the GUI of the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Saving and Reading Data for the Options Page|Saving and Reading Data for the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining the Usage of Options Pages|Defining the Usage of Options Pages]]&lt;br /&gt;
&amp;lt;div id=Extensions2e&amp;quot; style=&amp;quot;display:{{{Extensions2e|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Options Dialog of the Extension Manager|The Options Dialog of the Extension Manager]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding a Leaf to an Existing Node|Adding a Leaf to an Existing Node]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Leaves|Adding Several Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Leaves|Grouping of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Nodes|Adding Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Nodes|Adding Several Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Leaves|Absolute Position of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Nodes|Grouping of Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Assigning Nodes to Modules|Assigning Nodes to Modules]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining a Module|Defining a Module]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Nodes|Absolute Position of Nodes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Help Content|Help Content]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Processing_Extensions&amp;diff=171315</id>
		<title>Documentation/DevGuide/Extensions/Processing Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Processing_Extensions&amp;diff=171315"/>
		<updated>2010-06-08T08:07:43Z</updated>

		<summary type="html">&lt;p&gt;Jl: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
==Checking for modification during start-up==&lt;br /&gt;
Every time OOo is started it needs to check if extensions were removed from or added to the shared or bundled repository. If this is the case, then the registration data of the repository must be updated accordingly and OOo is restarted. &lt;br /&gt;
&lt;br /&gt;
The restart is particularly necessary when extensions are removed to avoid that parts of the extension are still accessible. For example, menu entries of an removed extension will only disappear after a restart. Similarly a service from an extension may already be running before the registration data is updated. Then the service will be available as long as OOo runs although the extension is removed. The reason for this is, that a shared extension is not immediately deleted from the hard disk when it is removed.&lt;br /&gt;
&lt;br /&gt;
Because OOo checks for added or removed extensions at start-up, this must be very quick. To achieve this, OOo compares the modification time of extension folders of the repositories with the time of the most recently performed check. This time is “saved” in the file lastsynchronized in the registration data folder of the repositories. In fact, the modification time of the file is used rather then a value is written into the file. If the modification time of the extension folder is more recent, then the extension manager will check if extensions were added or removed and update its database accordingly. This is of course an implementation detail and may change at any time.&lt;br /&gt;
&lt;br /&gt;
==Adding==&lt;br /&gt;
===Adding a user extension===&lt;br /&gt;
A user extension is extracted into a folder with a unique name which in turn is contained in the extensions folder. The additional folder with the unique name is necessary to make live deployment possible. When removing an extension, it is only marked as “unusable” and the extension is not deleted, because it may still be in use. If now the same extension is installed again in the same process, then it will be extracted to another folder with a unique name. This prevents a name clash with the folder name of the previously “removed” extension. The user can now repeat to remove and install the extension in the same process. This results in having the same extension multiple times in the extensions folder of the repository, but everyone is contained in a folder with a unique name. The folders of the “removed” extensions, as well as the folders which contain them, are only removed after running the extension manager after restarting OOo.&lt;br /&gt;
&lt;br /&gt;
The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
===Adding a shared extension===&lt;br /&gt;
For the user who adds a shared extension, the extension is processed the same way as a user extension.&lt;br /&gt;
&lt;br /&gt;
For all other users, the extension manager processes the extension the next time they start OOo.&lt;br /&gt;
The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
===Adding a bundled extension===&lt;br /&gt;
A bundled extension is installed by the installation program of OOo. The folder of the extension, including all files contained therein, is copied into the extensions folder of the bundled repository. &lt;br /&gt;
Only when a user starts OOo, then the extension manager processes the extension. The extension database of repository is updated and the new active extension is determined.&lt;br /&gt;
&lt;br /&gt;
==Removing==&lt;br /&gt;
===Removing a user extension===&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. The extension will be deleted when the user runs the extension manager after restarting OOo. &lt;br /&gt;
&lt;br /&gt;
===Removing a shared extension===&lt;br /&gt;
The extension will be revoked if it was registered. To prevent other users from using the extension it is marked to be deleted. This is done by creating a tag file, the &amp;quot;extension removed file&amp;quot;, next to the folder with the unique name. This way, the information that the extension was deleted can be accessed by all users. If this file does not exist and there is no entry in the extensions database, then it is assumed that the extension was added. The file will be deleted when the extension is deleted. The file also contains the name of the user who removed the extension. If the same user runs the extension manager after restarting OOo, then the extension, the unique folder, temp file and the  &amp;quot;extensions removed file are deleted. Why it must be the same user shows the following scenario:&lt;br /&gt;
&lt;br /&gt;
A user starts OOo and uses the extension. The extension will then be removed and OOo keeps running. Now a second user, who also has write access to the extensions folder, starts OOo. When the extension manager starts it would properly delete extensions which were previously removed. However in this case this would affect the office of the first user which still uses that extension.&lt;br /&gt;
The same user cannot start another instance, because this is prevented by the lock file.&lt;br /&gt;
&lt;br /&gt;
For all other users, the extension manager processes the extension the next time they start OOo. This includes the detection of the removed extensions. An extension is regarded as removed if:&lt;br /&gt;
*The unique folder, tmp file, extension folder do not exist anymore.&lt;br /&gt;
*There is a &amp;quot;extension removed file&amp;quot;&lt;br /&gt;
*The extension exists but has a different identifier or version than the one which was previously at the same location. This may happen when the extension was updated, or a previous office update removed the extension and another with the same name was added in the latest office update.&lt;br /&gt;
&lt;br /&gt;
The extension could also have the same file name.&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. &lt;br /&gt;
&lt;br /&gt;
===Removing a bundled extension=== &lt;br /&gt;
A bundled extension can only be removed by the set-up. The folder of the extension, including all files contained in it, is deleted from the extension folder of the bundled repository. &lt;br /&gt;
&lt;br /&gt;
If a user starts OOo, then the extension manager processes the removed extension. This includes the detection of the removed extensions. &lt;br /&gt;
An extension is regarded as removed if:&lt;br /&gt;
*The extension folder do not exist anymore.&lt;br /&gt;
*The extension exists but has a different identifier or version than the one which was previously at the same location.  &lt;br /&gt;
&lt;br /&gt;
The entry in the extension database of the repository referring to this extension will be deleted and the active extension will be determined. &lt;br /&gt;
&lt;br /&gt;
==Updating==&lt;br /&gt;
An update consists of first removing the extension and then adding the new extension. That is, this is already covered by these two scenarios.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171314</id>
		<title>Template:Documentation/DevGuide/ExtensionsTOC</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171314"/>
		<updated>2010-06-08T07:35:15Z</updated>

		<summary type="html">&lt;p&gt;Jl: adding Processing Extensions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/MasterTOC&lt;br /&gt;
|ShowPrevPage={{{ShowPrevPage}}}&lt;br /&gt;
|PrevPage={{{PrevPage}}}&lt;br /&gt;
|ShowNextPage={{{ShowNextPage}}}&lt;br /&gt;
|NextPage={{{NextPage}}}&lt;br /&gt;
|bookid=DevGuide&lt;br /&gt;
|booktitle=[[Documentation/DevGuide/OpenOffice.org Developers Guide|OpenOffice.org Developer&amp;#039;s Guide]]&lt;br /&gt;
|ShowParttitle=block&lt;br /&gt;
|parttitle=[[Documentation/DevGuide/Extensions/Extensions|Extensions]]&lt;br /&gt;
|ShowPrevPart=block&lt;br /&gt;
|PrevPart=Documentation/DevGuide/WritingUNO/Writing UNO Components&lt;br /&gt;
|ShowNextPart=block&lt;br /&gt;
|NextPart=Documentation/DevGuide/AdvUNO/Advanced UNO&lt;br /&gt;
|toccontent=&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager|Extension Manager]]&lt;br /&gt;
&amp;lt;div id=Extensions2a&amp;quot; style=&amp;quot;display:{{{Extensions2a|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Repositories | Extension Repositories]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Active Extension | The Active Extension]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Updating Extensions | Updating Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Processing Extensions | Processing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Deployment Items|Deployment Items]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Installing Extensions for All or a Single User|Installing Extensions for All or a Single User]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager in OpenOffice.org|Extension Manager in OpenOffice.org]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/unopkg|unopkg]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Location of Installed Extensions|Location of Installed Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Layers|Extension Layers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Checklist for Writing Extensions|Checklist for Writing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/File Format|File Format]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/description.xml|description.xml]]&lt;br /&gt;
&amp;lt;div id=Extensions2b&amp;quot; style=&amp;quot;display:{{{Extensions2b|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of XML Elements|Description of XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Localized XML Elements|Localized XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example|Example]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Identifiers|Extension Identifiers]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/System Integration|System Integration]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
&amp;lt;div id=Extensions2d&amp;quot; style=&amp;quot;display:{{{Extensions2d|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Running Online - Update|Running Online - Update]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Concept|Concept]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example Scenario for Providing Updates|Example Scenario for Providing Updates]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Migration of Update Information|Migration of Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of the Update Information|Description of the Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of Atom Feed|Description of Atom Feed]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Examples|Examples]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Options Dialog|Options Dialog]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Creating the GUI of the Options Page|Creating the GUI of the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Saving and Reading Data for the Options Page|Saving and Reading Data for the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining the Usage of Options Pages|Defining the Usage of Options Pages]]&lt;br /&gt;
&amp;lt;div id=Extensions2e&amp;quot; style=&amp;quot;display:{{{Extensions2e|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Options Dialog of the Extension Manager|The Options Dialog of the Extension Manager]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding a Leaf to an Existing Node|Adding a Leaf to an Existing Node]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Leaves|Adding Several Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Leaves|Grouping of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Nodes|Adding Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Nodes|Adding Several Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Leaves|Absolute Position of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Nodes|Grouping of Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Assigning Nodes to Modules|Assigning Nodes to Modules]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining a Module|Defining a Module]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Nodes|Absolute Position of Nodes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Help Content|Help Content]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171256</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171256"/>
		<updated>2010-06-07T15:18:05Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Repositories&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Processing Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  However, bundled extension could still not be updated by the extension manager, because this is exclusively done by the setup program.&lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user and give them the best user experience, the extension manager will install updates for shared or bundled extensions in the user repository if necessary. That is, the installed extension will remain unchanged and the newer version is installed in a repository with a higher priority. &lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in the user repository) is possible, if&lt;br /&gt;
#there is a bundled extension (no user and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension (no user) and the bundled or online repository contains a higher version&lt;br /&gt;
#there is a user extension and the shared, bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;shared repository&amp;#039;&amp;#039;&amp;#039;. If a user extension exists does not matter.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository    || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository  || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in shared repository) is possible, if&lt;br /&gt;
#there is a bundled extension (and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension  and the bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
This also means that, if there is only a user extension (no shared, no bundled) and there is one with a higher version in the online repository, then no update  is done in the shared repository. &lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in user repository) is possible, if there is a user extension and the shared, bundled, or online repository contains a higher version.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171248</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171248"/>
		<updated>2010-06-07T15:09:46Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Repositories&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  However, bundled extension could still not be updated by the extension manager, because this is exclusively done by the setup program.&lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user and give them the best user experience, the extension manager will install updates for shared or bundled extensions in the user repository if necessary. That is, the installed extension will remain unchanged and the newer version is installed in a repository with a higher priority. &lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in the user repository) is possible, if&lt;br /&gt;
#there is a bundled extension (no user and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension (no user) and the bundled or online repository contains a higher version&lt;br /&gt;
#there is a user extension and the shared, bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;shared repository&amp;#039;&amp;#039;&amp;#039;. If a user extension exists does not matter.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository    || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository  || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in shared repository) is possible, if&lt;br /&gt;
#there is a bundled extension (and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension  and the bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
This also means that, if there is only a user extension (no shared, no bundled) and there is one with a higher version in the online repository, then no update  is done in the shared repository. &lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in user repository) is possible, if there is a user extension and the shared, bundled, or online repository contains a higher version.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171233</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171233"/>
		<updated>2010-06-07T14:39:28Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Repositories&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  However, bundled extension could still not be updated by the extension manager, because this is exclusively done by the setup program.&lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user and give them the best user experience, the extension manager will install updates for shared or bundled extensions in the user repository if necessary. That is, the installed extension will remain unchanged and the newer version is installed in a repository with a higher priority. &lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |User repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in the user repository) is possible, if&lt;br /&gt;
#there is a bundled extension (no user and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension (no user) and the bundled or online repository contains a higher version&lt;br /&gt;
#there is a user extension and the shared, bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;shared repository&amp;#039;&amp;#039;&amp;#039;. If a user extension exists does not matter.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Shared repository    || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Bundled repository  || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |Online repository || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In words:&lt;br /&gt;
An update (installing in shared repository) is possible, if&lt;br /&gt;
#there is a bundled extension (and no shared) and the online repository contains a higher version&lt;br /&gt;
#there is shared extension  and the bundled or online repository contains a higher version&lt;br /&gt;
&lt;br /&gt;
This also means that, if there is only a user extension (no shared, no bundled) and there is one with a higher version in the online repository, then no update  is done in the shared repository. &lt;br /&gt;
&lt;br /&gt;
The next table shows the case where the user has &amp;#039;&amp;#039;&amp;#039;write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all those cases the update/installation will happen in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171229</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171229"/>
		<updated>2010-06-07T14:23:15Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Repositories&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  However, bundled extension could still not be updated by the extension manager, because this is exclusively done by the setup program.&lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user and give them the best user experience, the extension manager will install updates for shared or bundled extensions in the user repository if necessary. That is, the installed extension will remain unchanged and the newer version is installed in a repository with a higher priority. &lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |user repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171228</id>
		<title>Template:Documentation/DevGuide/ExtensionsTOC</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171228"/>
		<updated>2010-06-07T14:20:55Z</updated>

		<summary type="html">&lt;p&gt;Jl: added Updating Extensions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/MasterTOC&lt;br /&gt;
|ShowPrevPage={{{ShowPrevPage}}}&lt;br /&gt;
|PrevPage={{{PrevPage}}}&lt;br /&gt;
|ShowNextPage={{{ShowNextPage}}}&lt;br /&gt;
|NextPage={{{NextPage}}}&lt;br /&gt;
|bookid=DevGuide&lt;br /&gt;
|booktitle=[[Documentation/DevGuide/OpenOffice.org Developers Guide|OpenOffice.org Developer&amp;#039;s Guide]]&lt;br /&gt;
|ShowParttitle=block&lt;br /&gt;
|parttitle=[[Documentation/DevGuide/Extensions/Extensions|Extensions]]&lt;br /&gt;
|ShowPrevPart=block&lt;br /&gt;
|PrevPart=Documentation/DevGuide/WritingUNO/Writing UNO Components&lt;br /&gt;
|ShowNextPart=block&lt;br /&gt;
|NextPart=Documentation/DevGuide/AdvUNO/Advanced UNO&lt;br /&gt;
|toccontent=&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager|Extension Manager]]&lt;br /&gt;
&amp;lt;div id=Extensions2a&amp;quot; style=&amp;quot;display:{{{Extensions2a|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Repositories | Extension Repositories]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Active Extension | The Active Extension]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Updating Extensions | Updating Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Deployment Items|Deployment Items]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Installing Extensions for All or a Single User|Installing Extensions for All or a Single User]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager in OpenOffice.org|Extension Manager in OpenOffice.org]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/unopkg|unopkg]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Location of Installed Extensions|Location of Installed Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Layers|Extension Layers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Checklist for Writing Extensions|Checklist for Writing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/File Format|File Format]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/description.xml|description.xml]]&lt;br /&gt;
&amp;lt;div id=Extensions2b&amp;quot; style=&amp;quot;display:{{{Extensions2b|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of XML Elements|Description of XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Localized XML Elements|Localized XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example|Example]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Identifiers|Extension Identifiers]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/System Integration|System Integration]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
&amp;lt;div id=Extensions2d&amp;quot; style=&amp;quot;display:{{{Extensions2d|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Running Online - Update|Running Online - Update]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Concept|Concept]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example Scenario for Providing Updates|Example Scenario for Providing Updates]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Migration of Update Information|Migration of Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of the Update Information|Description of the Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of Atom Feed|Description of Atom Feed]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Examples|Examples]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Options Dialog|Options Dialog]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Creating the GUI of the Options Page|Creating the GUI of the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Saving and Reading Data for the Options Page|Saving and Reading Data for the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining the Usage of Options Pages|Defining the Usage of Options Pages]]&lt;br /&gt;
&amp;lt;div id=Extensions2e&amp;quot; style=&amp;quot;display:{{{Extensions2e|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Options Dialog of the Extension Manager|The Options Dialog of the Extension Manager]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding a Leaf to an Existing Node|Adding a Leaf to an Existing Node]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Leaves|Adding Several Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Leaves|Grouping of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Nodes|Adding Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Nodes|Adding Several Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Leaves|Absolute Position of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Nodes|Grouping of Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Assigning Nodes to Modules|Assigning Nodes to Modules]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining a Module|Defining a Module]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Nodes|Absolute Position of Nodes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Help Content|Help Content]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171225</id>
		<title>Documentation/DevGuide/Extensions/Updating Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Updating_Extensions&amp;diff=171225"/>
		<updated>2010-06-07T14:18:57Z</updated>

		<summary type="html">&lt;p&gt;Jl: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An extension can be updated by either explicitly installing the extension or by running the update function in the extension manager. &lt;br /&gt;
Updating an extension consisted originally in removing the installed extension and then installing the new version of the extension in the same repository. This meant that it was necessary to have write permission for the extensions folder of the shared repository for updating shared extensions.  However, bundled extension could still not be updated by the extension manager, because this is exclusively done by the setup program.&lt;br /&gt;
&lt;br /&gt;
However, in order to hide the complexity of the different repositories from the user and give them the best user experience, the extension manager will install updates for shared or bundled extensions in the user repository if necessary. That is, the installed extension will remain unchanged and the newer version is installed in a repository with a higher priority. &lt;br /&gt;
&lt;br /&gt;
Users will be informed if there are newer versions of extensions which they currently use are available. It does not matter if the currently used extensions are from the user, shared or bundled repository. If there is a better version, then it is offered as an update.  This allows users, to always obtain the latest versions of their extensions. &lt;br /&gt;
&lt;br /&gt;
The updates, that is, the extensions with a newer version, will either be obtained from an online repository or locally, depending on which one have the highest versions. In the latter case, the newer version will come from the shared or bundled repository if there is one available. This is useful for the case when a user has installed an user extension and then a more current version is installed in the shared or bundled repository.&lt;br /&gt;
&lt;br /&gt;
The following tables show scenarios where the user can update extensions. If a cell contains a “1” then this simple means there is an extensions installed. If it contains a “2” then this represents an extension with the same identifier then “1” but with a higher version. If there are several “2”s under each other then it is sufficient if just one of them has a higher version than “1”.&lt;br /&gt;
&lt;br /&gt;
The first table shows the case where a user has &amp;#039;&amp;#039;&amp;#039;no write permission&amp;#039;&amp;#039;&amp;#039; in the shared folder. In all cases the update is installed in the &amp;#039;&amp;#039;&amp;#039;user repository&amp;#039;&amp;#039;&amp;#039;. The new version comes either from the shared, bundled or online repository, depending on which has the best version.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! &lt;br /&gt;
! Case a&lt;br /&gt;
! Case b&lt;br /&gt;
! Case c&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |user repository    || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot;| - || align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |shared repository  || align=&amp;quot;center&amp;quot; | - ||align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot; |2  &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |bundled repository || align=&amp;quot;center&amp;quot; | 1 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#EFDECD&amp;quot; |online repository  || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;| 2 || style=&amp;quot;background:#BCD4E6&amp;quot; align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171203</id>
		<title>Template:Documentation/DevGuide/ExtensionsTOC</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171203"/>
		<updated>2010-06-07T12:36:52Z</updated>

		<summary type="html">&lt;p&gt;Jl: adde The Active Extension&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/MasterTOC&lt;br /&gt;
|ShowPrevPage={{{ShowPrevPage}}}&lt;br /&gt;
|PrevPage={{{PrevPage}}}&lt;br /&gt;
|ShowNextPage={{{ShowNextPage}}}&lt;br /&gt;
|NextPage={{{NextPage}}}&lt;br /&gt;
|bookid=DevGuide&lt;br /&gt;
|booktitle=[[Documentation/DevGuide/OpenOffice.org Developers Guide|OpenOffice.org Developer&amp;#039;s Guide]]&lt;br /&gt;
|ShowParttitle=block&lt;br /&gt;
|parttitle=[[Documentation/DevGuide/Extensions/Extensions|Extensions]]&lt;br /&gt;
|ShowPrevPart=block&lt;br /&gt;
|PrevPart=Documentation/DevGuide/WritingUNO/Writing UNO Components&lt;br /&gt;
|ShowNextPart=block&lt;br /&gt;
|NextPart=Documentation/DevGuide/AdvUNO/Advanced UNO&lt;br /&gt;
|toccontent=&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager|Extension Manager]]&lt;br /&gt;
&amp;lt;div id=Extensions2a&amp;quot; style=&amp;quot;display:{{{Extensions2a|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Repositories | Extension Repositories]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Active Extension | The Active Extension]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Deployment Items|Deployment Items]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Installing Extensions for All or a Single User|Installing Extensions for All or a Single User]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager in OpenOffice.org|Extension Manager in OpenOffice.org]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/unopkg|unopkg]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Location of Installed Extensions|Location of Installed Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Layers|Extension Layers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Checklist for Writing Extensions|Checklist for Writing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/File Format|File Format]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/description.xml|description.xml]]&lt;br /&gt;
&amp;lt;div id=Extensions2b&amp;quot; style=&amp;quot;display:{{{Extensions2b|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of XML Elements|Description of XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Localized XML Elements|Localized XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example|Example]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Identifiers|Extension Identifiers]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/System Integration|System Integration]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
&amp;lt;div id=Extensions2d&amp;quot; style=&amp;quot;display:{{{Extensions2d|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Running Online - Update|Running Online - Update]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Concept|Concept]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example Scenario for Providing Updates|Example Scenario for Providing Updates]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Migration of Update Information|Migration of Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of the Update Information|Description of the Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of Atom Feed|Description of Atom Feed]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Examples|Examples]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Options Dialog|Options Dialog]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Creating the GUI of the Options Page|Creating the GUI of the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Saving and Reading Data for the Options Page|Saving and Reading Data for the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining the Usage of Options Pages|Defining the Usage of Options Pages]]&lt;br /&gt;
&amp;lt;div id=Extensions2e&amp;quot; style=&amp;quot;display:{{{Extensions2e|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Options Dialog of the Extension Manager|The Options Dialog of the Extension Manager]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding a Leaf to an Existing Node|Adding a Leaf to an Existing Node]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Leaves|Adding Several Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Leaves|Grouping of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Nodes|Adding Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Nodes|Adding Several Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Leaves|Absolute Position of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Nodes|Grouping of Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Assigning Nodes to Modules|Assigning Nodes to Modules]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining a Module|Defining a Module]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Nodes|Absolute Position of Nodes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Help Content|Help Content]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Repositories&amp;diff=171202</id>
		<title>Documentation/DevGuide/Extensions/Extension Repositories</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Repositories&amp;diff=171202"/>
		<updated>2010-06-07T12:35:02Z</updated>

		<summary type="html">&lt;p&gt;Jl: changed NextPage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Manager&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/The Active Extension&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Repositories}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
OOo stores extensions in different places, the so-called repositories. This mostly does not matter for  users because this has no influence on the extension&amp;#039;s functionality. There are three repositories: user, shared and  bundled. An extension can be part of every repository at the same time, but one repository can only hold one version of an extension. That is, assuming one has version one and version two of an extension, which also may be contained in different files, then only one of them can be installed per repository. The extension manager enforces this by checking the extension identifier which is stored within an extension. &lt;br /&gt;
The repositories are prioritized, meaning that an extension in a repository with a high priority is preferred over the same extension in a repository with a lower priority. The user repository has the highest and the bundled repository has the lowest priority. &lt;br /&gt;
An extension repository consists basically of two parts, the extensions and additional data, which is produced by the extension manager.  In order to easier refer to the locations where these are stored, we name the location containing the extensions the extensions folder and the place where the other data is stored the registration data folder. Both folders may not necessarily be within the same parent folder. The registration data folder for all repositories are within the user installation (user data).&lt;br /&gt;
&lt;br /&gt;
==User repository==&lt;br /&gt;
This repository contains extensions, aka user extensions, which can only be used by the user who installs them. Users can manage the user extensions themselves. That is, they can add, remove, disable and update them.&lt;br /&gt;
&lt;br /&gt;
==Shared repository==&lt;br /&gt;
The extensions in this repository, which are also referred to as shared extension, can be used by all users - that&amp;#039;s where the name “shared” comes from. Therefore they need to be located in a place accessible by all users, which is currently within the office installation. This place is usually restricted in terms of who is allowed to modify (write, delete)  files. Therefore only people with the proper file access rights, who usually have an administrator or root account,  can add, remove, update ( disabling is not supported) extensions in the shared repository. &amp;#039;&amp;#039;&amp;#039;Before modifying a shared extension one must make sure that all other OOo processes, that is, OOo run by other users, are shut down.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Bundled repository==&lt;br /&gt;
This repository holds the bundled extensions. They resemble to a certain degree the shared extensions. That is, they are usable by all users. But only those with the proper file access rights, can add and remove them. Bundled extensions are, as the name suggest, bundled with OOo. That is, they are part of the installation set and are already available after installation. Contrary to shared and user extensions, they are exclusively maintained by the installation program (aka setup) of OOo. Although they are visible in the extension manager&amp;#039;s dialog, they cannot be modified by the extension manager, even by administrators. The setup program may offer to choose which extensions are to be installed. To later add or remove a bundled extension, one needs to restart the setup program and determine the wanted extensions. &amp;#039;&amp;#039;&amp;#039;Before running the setup program one must make sure that all OOo processes are shut down.&amp;#039;&amp;#039;&amp;#039; When the office is being uninstalled then all bundled extensions are removed. &lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/The_Active_Extension&amp;diff=171201</id>
		<title>Documentation/DevGuide/Extensions/The Active Extension</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/The_Active_Extension&amp;diff=171201"/>
		<updated>2010-06-07T12:34:16Z</updated>

		<summary type="html">&lt;p&gt;Jl: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Repositories&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Updating Extensions&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:The Active Extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
If the same extension is installed in the user and shared repository, then it is expected that only the one in the user repository is used. In other words it &amp;quot;hides&amp;quot; the one in the shared repository. This, however, was never the case (until now). It only worked if both extensions contained exactly the same items, such as services, configuration items, etc. However,  two different versions of an extension often have different contents. For example, they may have different menu entries. Then the entries from both extensions would be displayed.&lt;br /&gt;
&lt;br /&gt;
In case of having the same contents, one could rely on the underlying facilites, such as configuration manager, service manager, type description provider, to prefer the respective contents of the user extension over those of the shared extension. However, these facilities have no notion of an extension. For example, if the user and shared extension (having the same extension identifier) contain a service &amp;#039;&amp;#039;Foo&amp;#039;&amp;#039;, then the service manager will provide the service &amp;#039;&amp;#039;Foo&amp;#039;&amp;#039; of the user extension. If the shared extension also contained the service &amp;#039;&amp;#039;Bar&amp;#039;&amp;#039;, which is not in the user extension, then the service manager must not offer this service. To to this, the service manager would need the information, which extension contains the service. Similar all other facilities which process extension contents, like the configuration manager, need the association between a particular item and the respective extension. &lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;active extension&amp;#039;&amp;#039; solves this &amp;quot;hiding problem&amp;quot;. It makes sure that an extension in a repository with a higher priority completely hides the same extension in a repository with a lower priority. This is done without extending all those facilities in a way so that they can deal with extensions. Instead the extension manager determines which extension may be used an which not. And this is how it  works exactly:&lt;br /&gt;
&lt;br /&gt;
There is a fixed hierarchy of repositories:&lt;br /&gt;
#user (highest priority)&lt;br /&gt;
#shared&lt;br /&gt;
#bundled (lowest priority)&lt;br /&gt;
&lt;br /&gt;
This means that there can be three extensions with the same identifier. But only the one in the repository with the highest priority can be the active extension, unless it is disabled. Only disabling of user extensions is supported. &lt;br /&gt;
&lt;br /&gt;
Only the active extension can be used in OOo. For example, if one extension is in all repositories, then only the services from the active extension will be used.&lt;br /&gt;
In the following explanation we assume that extensions have the same identifier, when speaking of extensions in different repositories, unless otherwise noted.&lt;br /&gt;
&lt;br /&gt;
A user extension hides the shared extension, which in turn hides the bundled extension. If there is a user extension then it is always the active extension independent of its version and if there are extensions in the shared or bundled repository. &lt;br /&gt;
&lt;br /&gt;
A shared extension can only be an active extension if there is no or a disabled user extension. Again, the version of the shared extension and the fact that there may be a bundled extension do not matter.&lt;br /&gt;
A bundled extension can only be an active extension if there are no shared or user extension. There may be, however,  a disabled user extension. &lt;br /&gt;
&lt;br /&gt;
An extension becomes active if it is registered (&amp;lt;idlm&amp;gt;com.sun.star.deployment.XPackage:registerPackage&amp;lt;/idlm&amp;gt;) after having revoked (&amp;lt;idlm&amp;gt;com.sun.star.deployment.XPackage:revokePackage&amp;lt;/idlm&amp;gt;) those extensions with the same identifier in other repositories. This means that of all the extensions with the same identifier in the different repositories, there is at most one registered at a time.  For example:&lt;br /&gt;
#user extension: registered&lt;br /&gt;
#shared extension: revoked&lt;br /&gt;
#bundled extension: revoked&lt;br /&gt;
or&lt;br /&gt;
#no user extension&lt;br /&gt;
#shared extension: registerd&lt;br /&gt;
#bundled extension: revoked&lt;br /&gt;
or &lt;br /&gt;
#no user extension &lt;br /&gt;
#no shared extension &lt;br /&gt;
#bundled extension: registered &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Manager&amp;diff=171188</id>
		<title>Documentation/DevGuide/Extensions/Extension Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Manager&amp;diff=171188"/>
		<updated>2010-06-07T11:48:55Z</updated>

		<summary type="html">&lt;p&gt;Jl: changed NextPage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extensions&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Extension Repositories&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Manager}}&lt;br /&gt;
The Extension Manager is a tool for managing extensions and other deployable items, such as separate libraries, JARs, configuration data files. This includes adding, removing, enabling and disabling of these items.&lt;br /&gt;
&lt;br /&gt;
The Extension Manager can be started from within the office by pressing the menu item &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Extension Manager&amp;#039;&amp;#039;&amp;#039; or by running the &amp;#039;&amp;#039;unopkg&amp;#039;&amp;#039; executable, which is contained in the program directory of the office installation.&lt;br /&gt;
&lt;br /&gt;
When an extension is installed, then a copy is created which is kept either in the user installation or the shared installation (&amp;#039;&amp;#039;&amp;lt;office-directory&amp;gt;/share&amp;#039;&amp;#039;). The original extension can therefore be (re) moved after installation.&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171187</id>
		<title>Template:Documentation/DevGuide/ExtensionsTOC</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Template:Documentation/DevGuide/ExtensionsTOC&amp;diff=171187"/>
		<updated>2010-06-07T11:47:39Z</updated>

		<summary type="html">&lt;p&gt;Jl: added Extension Repositories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/MasterTOC&lt;br /&gt;
|ShowPrevPage={{{ShowPrevPage}}}&lt;br /&gt;
|PrevPage={{{PrevPage}}}&lt;br /&gt;
|ShowNextPage={{{ShowNextPage}}}&lt;br /&gt;
|NextPage={{{NextPage}}}&lt;br /&gt;
|bookid=DevGuide&lt;br /&gt;
|booktitle=[[Documentation/DevGuide/OpenOffice.org Developers Guide|OpenOffice.org Developer&amp;#039;s Guide]]&lt;br /&gt;
|ShowParttitle=block&lt;br /&gt;
|parttitle=[[Documentation/DevGuide/Extensions/Extensions|Extensions]]&lt;br /&gt;
|ShowPrevPart=block&lt;br /&gt;
|PrevPart=Documentation/DevGuide/WritingUNO/Writing UNO Components&lt;br /&gt;
|ShowNextPart=block&lt;br /&gt;
|NextPart=Documentation/DevGuide/AdvUNO/Advanced UNO&lt;br /&gt;
|toccontent=&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager|Extension Manager]]&lt;br /&gt;
&amp;lt;div id=Extensions2a&amp;quot; style=&amp;quot;display:{{{Extensions2a|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Repositories | Extension Repositories]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Deployment Items|Deployment Items]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Installing Extensions for All or a Single User|Installing Extensions for All or a Single User]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Manager in OpenOffice.org|Extension Manager in OpenOffice.org]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/unopkg|unopkg]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Location of Installed Extensions|Location of Installed Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Layers|Extension Layers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Checklist for Writing Extensions|Checklist for Writing Extensions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/File Format|File Format]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/description.xml|description.xml]]&lt;br /&gt;
&amp;lt;div id=Extensions2b&amp;quot; style=&amp;quot;display:{{{Extensions2b|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of XML Elements|Description of XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Localized XML Elements|Localized XML Elements]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example|Example]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Identifiers|Extension Identifiers]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/System Integration|System Integration]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
&amp;lt;div id=Extensions2d&amp;quot; style=&amp;quot;display:{{{Extensions2d|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Running Online - Update|Running Online - Update]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Concept|Concept]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Example Scenario for Providing Updates|Example Scenario for Providing Updates]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Migration of Update Information|Migration of Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of the Update Information|Description of the Update Information]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Description of Atom Feed|Description of Atom Feed]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Examples|Examples]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Options Dialog|Options Dialog]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Creating the GUI of the Options Page|Creating the GUI of the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Saving and Reading Data for the Options Page|Saving and Reading Data for the Options Page]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining the Usage of Options Pages|Defining the Usage of Options Pages]]&lt;br /&gt;
&amp;lt;div id=Extensions2e&amp;quot; style=&amp;quot;display:{{{Extensions2e|none}}};margin-left: 12px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/The Options Dialog of the Extension Manager|The Options Dialog of the Extension Manager]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding a Leaf to an Existing Node|Adding a Leaf to an Existing Node]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Leaves|Adding Several Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Leaves|Grouping of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Nodes|Adding Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Adding Several Nodes|Adding Several Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Leaves|Absolute Position of Leaves]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Grouping of Nodes|Grouping of Nodes]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Assigning Nodes to Modules|Assigning Nodes to Modules]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Defining a Module|Defining a Module]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Absolute Position of Nodes|Absolute Position of Nodes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Help Content|Help Content]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Repositories&amp;diff=171182</id>
		<title>Documentation/DevGuide/Extensions/Extension Repositories</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_Repositories&amp;diff=171182"/>
		<updated>2010-06-07T11:20:29Z</updated>

		<summary type="html">&lt;p&gt;Jl: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2a=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Extension Manager&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Deployment Items&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension Repositories}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(As of OOo 3.3)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
OOo stores extensions in different places, the so-called repositories. This mostly does not matter for  users because this has no influence on the extension&amp;#039;s functionality. There are three repositories: user, shared and  bundled. An extension can be part of every repository at the same time, but one repository can only hold one version of an extension. That is, assuming one has version one and version two of an extension, which also may be contained in different files, then only one of them can be installed per repository. The extension manager enforces this by checking the extension identifier which is stored within an extension. &lt;br /&gt;
The repositories are prioritized, meaning that an extension in a repository with a high priority is preferred over the same extension in a repository with a lower priority. The user repository has the highest and the bundled repository has the lowest priority. &lt;br /&gt;
An extension repository consists basically of two parts, the extensions and additional data, which is produced by the extension manager.  In order to easier refer to the locations where these are stored, we name the location containing the extensions the extensions folder and the place where the other data is stored the registration data folder. Both folders may not necessarily be within the same parent folder. The registration data folder for all repositories are within the user installation (user data).&lt;br /&gt;
&lt;br /&gt;
==User repository==&lt;br /&gt;
This repository contains extensions, aka user extensions, which can only be used by the user who installs them. Users can manage the user extensions themselves. That is, they can add, remove, disable and update them.&lt;br /&gt;
&lt;br /&gt;
==Shared repository==&lt;br /&gt;
The extensions in this repository, which are also referred to as shared extension, can be used by all users - that&amp;#039;s where the name “shared” comes from. Therefore they need to be located in a place accessible by all users, which is currently within the office installation. This place is usually restricted in terms of who is allowed to modify (write, delete)  files. Therefore only people with the proper file access rights, who usually have an administrator or root account,  can add, remove, update ( disabling is not supported) extensions in the shared repository. &amp;#039;&amp;#039;&amp;#039;Before modifying a shared extension one must make sure that all other OOo processes, that is, OOo run by other users, are shut down.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Bundled repository==&lt;br /&gt;
This repository holds the bundled extensions. They resemble to a certain degree the shared extensions. That is, they are usable by all users. But only those with the proper file access rights, can add and remove them. Bundled extensions are, as the name suggest, bundled with OOo. That is, they are part of the installation set and are already available after installation. Contrary to shared and user extensions, they are exclusively maintained by the installation program (aka setup) of OOo. Although they are visible in the extension manager&amp;#039;s dialog, they cannot be modified by the extension manager, even by administrators. The setup program may offer to choose which extensions are to be installed. To later add or remove a bundled extension, one needs to restart the setup program and determine the wanted extensions. &amp;#039;&amp;#039;&amp;#039;Before running the setup program one must make sure that all OOo processes are shut down.&amp;#039;&amp;#039;&amp;#039; When the office is being uninstalled then all bundled extensions are removed. &lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=157768</id>
		<title>Documentation/DevGuide/Extensions/Description of XML Elements</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=157768"/>
		<updated>2010-02-22T11:00:21Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/description.xml&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Description of XML Elements}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent element: document root&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|&amp;lt;identifier&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|&amp;lt;version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|&amp;lt;platform&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|&amp;lt;deploymentHooks&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; is the root element of the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; &lt;br /&gt;
|The default namespace of element description and all children must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information must also be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt;&lt;br /&gt;
|The xlink namespace must be defined as &lt;br /&gt;
http://www.w3.org/1999/xlink&lt;br /&gt;
|-&lt;br /&gt;
|other namespace definitions &lt;br /&gt;
|Other namespaces can be added as necessary &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/identifier&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;identifier&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The extension identifier. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Identifiers |Extension Identifiers]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A textual representation of the extension version. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/platform&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A token representing a particular platform. See [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]] for details.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration&amp;lt;/code&amp;gt;  ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The registration element currently only contains the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. If the &amp;lt;code&amp;gt;&amp;lt;registration&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have a child element.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The element contains the &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; elements, determines if all user must agree to the license, or just the person who installs it, and determines a default &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details. This element is disregarded for bundled extensions.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have at least one child element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;accept-by&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;Required.Value&amp;lt;/code&amp;gt; is either “user” or “admin”. “user” means that every user has to agree to the license. That is, the extension can only be installed as user extension but not as shared extension. If it has the value “admin” then it can be deployed as shared extension as well. In that case only the person who installs it has to agree to the license. Individual users will not be asked to accept the license. They can use the extension right away. In case the value is “user” and the extension is being installed as user extension then the user must always agree to the license. By using &amp;lt;code&amp;gt;suppress-if-required=“true“&amp;lt;/code&amp;gt; it is, however, possible to install an extension for all users, that is, as shared extension, even if  &amp;lt;code&amp;gt;accept-by=“user“&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;default-license-id&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;. &lt;br /&gt;
The attribute determines what &amp;lt;license-text&amp;gt; is used if no &amp;lt;license-text&amp;gt; element has a lang attribute whose value matches the locals of {{PRODUCTNAME}}. There must always be exactly one &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element with a license-id attribute whose value matches that of the default-license-id. The type is &amp;lt;code&amp;gt;xsd:IDREF&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-on-update&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. When the attribute is not provided then the value “false” is assumed. The value true indicates that the license for this extension will not be displayed during installation when the same extension (same id but probably different version) is already installed. This applies for the automatic update as well as for manually installing an extension. The version of the already installed extension does not matter. Suppressing the license can be useful during the online update, because otherwise the update operation could be interrupted by many license dialogs. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-if-required&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. Since 3.3. When the attribute is not provided then the value “false” is assumed. The value “true“ indicates that the license will not be displayed during installation if this is desired, which can be expressed by the unopkg switch &amp;lt;code&amp;gt;--suppress-license&amp;lt;/code&amp;gt; and is implicitely assumed for bundled extensions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license/license-text&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the license text, which language it uses, and if this element is the “default” &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the license file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;license-id&amp;lt;/code&amp;gt;&lt;br /&gt;
|Optional. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;.&lt;br /&gt;
One license-text element must have this attribute and the value must match the value of the default-license-id attribute of the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. The type is &amp;lt;code&amp;gt;xsd:ID&amp;lt;/code&amp;gt;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|&amp;lt;OpenOffice.org-minimal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-maximal-version|&amp;lt;OpenOffice.org-maximal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** others&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-minimal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should never be used with this element. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. String. The required underlying OpenOffice.org version (“2.1”, “2.2”, etc.), starting with OpenOffice.org 2.1. You cannot specify a particular corrective version, e.g. “2.2.1”, use “2.2” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-maximal-version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-maximal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value or older” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should always be defined as “2.3” for this element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The required maximal underlying OpenOffice.org version (“3.0”, “3.1”, etc.). You cannot specify a particular corrective version, e.g. “3.1.1”, use “3.1” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;update-information&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The second, third, etc. element are regarded as fallback, that is, the elements provide URLs to mirrors. The Extension Manager will try to get update information by using a URL and only use a different URL if an error occurred. That is, if for example the first URL references an atom feed that does not contain any references at all, but is a valid feed, then the Extension Manager assumes that there are no update information available. Then URLs from other &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt; elements are not examined. Therefore the update information referenced by every URL must be identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information/src&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL which provides the update information directly or an atom feed which in turn references the update information. The URL can point directly to a file or it may invoke code, such as a servlet, cgi, etc, that returns the atom feed or the update information.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;publisher&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized publisher name]] together with a URL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;publisher name&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the web site of the publisher of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;release-notes&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children provide URLs to [[Documentation/DevGuide/Extensions/Localized XML Elements|localized release-notes]]. &lt;br /&gt;
&lt;br /&gt;
Currently this element and its children are not used by the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes/src&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The element contains a URL to the &amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the release notes of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;display-name&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized display name]]. The name will be used in the GUI instead of the file name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;display name&amp;#039;&amp;#039; of the extension. The string length must be greater then null and must not only contain white space characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/default|&amp;lt;default&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/high-contrast|&amp;lt;high-contrast&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;default&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/high-contrast&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;high-contrast&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&amp;lt;extension-description&amp;gt; must have at least on [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]] child element. Every child references a localized description. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description/src&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the description text and which language it uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the description file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/deploymentHooks&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 3.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;deploymentHooks&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The service identifier which implements the XDeploymentHooks interface. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension DeploymentHooks|Extension DeploymentHooks]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Simple_License&amp;diff=157766</id>
		<title>Documentation/DevGuide/Extensions/Simple License</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Simple_License&amp;diff=157766"/>
		<updated>2010-02-22T10:54:37Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2c=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Target Platform&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Dependencies&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Simple License}}&lt;br /&gt;
This feature is about displaying a license text to the user during installation. This is not supported for &amp;#039;&amp;#039;&amp;#039;bundled extensions&amp;#039;&amp;#039;&amp;#039;. Distributors of OOo need to clarify license details with the publishers of extensions, which they want to bundle with OOo.&lt;br /&gt;
&lt;br /&gt;
The user can agree or decline the license, where in the latter case the installation will be aborted. It is called “Simple License” because there is no tamper resistant mechanism that prevents the installation in case the user does not agree to the license. It also does not do anything more than just displaying a license text. The text can be localized (see [[Documentation/DevGuide/Extensions/Localized XML Elements]]). &lt;br /&gt;
 &lt;br /&gt;
The license text is displayed either in a dialog or in the console dependent on the way the Extension Manager was started. When it was started by the &amp;#039;&amp;#039;&amp;#039;Tools - Extension Manager&amp;#039;&amp;#039;&amp;#039; menu item or by invoking &amp;lt;code&amp;gt;unopkg gui&amp;lt;/code&amp;gt; in the console then a dialog is used. By using &amp;#039;&amp;#039;unopkg&amp;#039;&amp;#039; add the license text will be displayed in the console and user input has to be done through the same.&lt;br /&gt;
&lt;br /&gt;
The license dialog or the license text in the console is displayed when the extension is being installed. Currently there are two modes to install extensions, user mode and shared mode. An extension that was installed in user mode (let&amp;#039;s call it a &amp;#039;&amp;#039;user extension&amp;#039;&amp;#039;) can only be used by just that person who installed it. If the extension was installed in shared mode (let&amp;#039;s call it a &amp;#039;&amp;#039;shared extension&amp;#039;&amp;#039;), then it can be used by all users. Since the license text is only displayed during installation, all users who are using a &amp;#039;&amp;#039;shared extension&amp;#039;&amp;#039; will not see any license text (except the user who installed this &amp;#039;&amp;#039;shared extension&amp;#039;&amp;#039;). However, the publisher of the extension may think it necessary that everyone who wants to use it has to agree to the license first. For this purpose, he can mark the extension accordingly. This extension can then only be installed in user mode and not in shared mode. Likewise the extension can be marked indicating that only the person who installs it needs to agree to the license. Such an extension can be installed in both modes. But when installing in user mode then every user has to agree to the license nonetheless.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the description.xml:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;description xmlns=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot;&lt;br /&gt;
    xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;registration&amp;gt;&lt;br /&gt;
      &amp;lt;simple-license accept-by=&amp;quot;user&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;license-text xlink:href=&amp;quot;registration/license_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;license-text xlink:href=&amp;quot;registration/license_en_US.txt&amp;quot; lang=&amp;quot;en-US&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/simple-license&amp;gt;&lt;br /&gt;
    &amp;lt;/registration&amp;gt;&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, the license would have to be agreed to by all users (that means no shared mode installation). This is indicated by the value &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; of the attribute accept-by in the &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt; element. The attribute could also have the value &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt;, which would indicate that the license needs only be agreed to by the person who installs it.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; elements contain information about the files which contain the text that is displayed. The content of these files must be UTF-8 encoded. It is displayed exactly as it is in the file. That is, no formatting occurs. There can be one to many &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; elements, where each element provides information about a different language of the license text. The attribute &amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; contains a relative URL (relative to the root directory of the extension) which points to a file which contains the license text in exactly one language. Which language is indicated by &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
If the package manager does not find a &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; element which matches the locale of {{PRODUCTNAME}} then it will pick the first &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; element as the default. Prior to OOo 2.4. the default entry needed to marked explicitely by &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|license-id]]&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
==Important Issues==&lt;br /&gt;
&lt;br /&gt;
*Using the simple license in extensions always requires user interaction. Using &amp;lt;code&amp;gt;accept-by=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt; prevents this extension from being installed centrally, that is as shared extensions. Both issues can prevent the extension from being used by companies, which centrally maintain software.&lt;br /&gt;
*The &amp;#039;simple license&amp;#039; does not work for bundled extensions (installation will probably hang as user input is required). If one wants to build an OOo installation set with bundled extensions, then they must not use this feature. &lt;br /&gt;
&lt;br /&gt;
To get around these limitations, extensions need to provide the attribute [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|suppress-if-required=&amp;quot;true&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|XML description for description.xml]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156881</id>
		<title>Documentation/DevGuide/Extensions/Description of XML Elements</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156881"/>
		<updated>2010-02-10T12:46:09Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/description.xml&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Description of XML Elements}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent element: document root&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|&amp;lt;identifier&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|&amp;lt;version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|&amp;lt;platform&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|&amp;lt;deploymentHooks&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; is the root element of the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; &lt;br /&gt;
|The default namespace of element description and all children must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information must also be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt;&lt;br /&gt;
|The xlink namespace must be defined as &lt;br /&gt;
http://www.w3.org/1999/xlink&lt;br /&gt;
|-&lt;br /&gt;
|other namespace definitions &lt;br /&gt;
|Other namespaces can be added as necessary &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/identifier&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;identifier&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The extension identifier. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Identifiers |Extension Identifiers]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A textual representation of the extension version. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/platform&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A token representing a particular platform. See [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]] for details.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration&amp;lt;/code&amp;gt;  ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The registration element currently only contains the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. If the &amp;lt;code&amp;gt;&amp;lt;registration&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have a child element.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The element contains the &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; elements, determines if all user must agree to the license, or just the person who installs it, and determines a default &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have at least one child element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;accept-by&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;Required.Value&amp;lt;/code&amp;gt; is either “user” or “admin”. “user” means that every user has to agree to the license. That is, the extension can only be installed as user extension but not as shared extension. If it has the value “admin” then it can be deployed as shared extension as well. In that case only the person who installs it has to agree to the license. Individual users will not be asked to accept the license. They can use the extension right away. In case the value is “user” and the extension is being installed as user extension then the user must always agree to the license. By using &amp;lt;code&amp;gt;suppress-if-required=“true“&amp;lt;/code&amp;gt; it is, however, possible to install an extension for all users, that is, as shared extension, even if  &amp;lt;code&amp;gt;accept-by=“user“&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;default-license-id&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;. &lt;br /&gt;
The attribute determines what &amp;lt;license-text&amp;gt; is used if no &amp;lt;license-text&amp;gt; element has a lang attribute whose value matches the locals of {{PRODUCTNAME}}. There must always be exactly one &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element with a license-id attribute whose value matches that of the default-license-id. The type is &amp;lt;code&amp;gt;xsd:IDREF&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-on-update&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. When the attribute is not provided then the value “false” is assumed. The value true indicates that the license for this extension will not be displayed during installation when the same extension (same id but probably different version) is already installed. This applies for the automatic update as well as for manually installing an extension. The version of the already installed extension does not matter. Suppressing the license can be useful during the online update, because otherwise the update operation could be interrupted by many license dialogs. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-if-required&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. Since 3.3. When the attribute is not provided then the value “false” is assumed. The value “true“ indicates that the license will not be displayed during installation if this is desired, which can be expressed by the unopkg switch &amp;lt;code&amp;gt;--suppress-license&amp;lt;/code&amp;gt; and is implicitely assumed for bundled extensions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license/license-text&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the license text, which language it uses, and if this element is the “default” &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the license file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;license-id&amp;lt;/code&amp;gt;&lt;br /&gt;
|Optional. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;.&lt;br /&gt;
One license-text element must have this attribute and the value must match the value of the default-license-id attribute of the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. The type is &amp;lt;code&amp;gt;xsd:ID&amp;lt;/code&amp;gt;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|&amp;lt;OpenOffice.org-minimal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-maximal-version|&amp;lt;OpenOffice.org-maximal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** others&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-minimal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should never be used with this element. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. String. The required underlying OpenOffice.org version (“2.1”, “2.2”, etc.), starting with OpenOffice.org 2.1. You cannot specify a particular corrective version, e.g. “2.2.1”, use “2.2” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-maximal-version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-maximal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value or older” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should always be defined as “2.3” for this element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The required maximal underlying OpenOffice.org version (“3.0”, “3.1”, etc.). You cannot specify a particular corrective version, e.g. “3.1.1”, use “3.1” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;update-information&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The second, third, etc. element are regarded as fallback, that is, the elements provide URLs to mirrors. The Extension Manager will try to get update information by using a URL and only use a different URL if an error occurred. That is, if for example the first URL references an atom feed that does not contain any references at all, but is a valid feed, then the Extension Manager assumes that there are no update information available. Then URLs from other &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt; elements are not examined. Therefore the update information referenced by every URL must be identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information/src&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL which provides the update information directly or an atom feed which in turn references the update information. The URL can point directly to a file or it may invoke code, such as a servlet, cgi, etc, that returns the atom feed or the update information.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;publisher&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized publisher name]] together with a URL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;publisher name&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the web site of the publisher of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;release-notes&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children provide URLs to [[Documentation/DevGuide/Extensions/Localized XML Elements|localized release-notes]]. &lt;br /&gt;
&lt;br /&gt;
Currently this element and its children are not used by the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes/src&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The element contains a URL to the &amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the release notes of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;display-name&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized display name]]. The name will be used in the GUI instead of the file name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;display name&amp;#039;&amp;#039; of the extension. The string length must be greater then null and must not only contain white space characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/default|&amp;lt;default&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/high-contrast|&amp;lt;high-contrast&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;default&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/high-contrast&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;high-contrast&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&amp;lt;extension-description&amp;gt; must have at least on [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]] child element. Every child references a localized description. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description/src&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the description text and which language it uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the description file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/deploymentHooks&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 3.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;deploymentHooks&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The service identifier which implements the XDeploymentHooks interface. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension DeploymentHooks|Extension DeploymentHooks]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156880</id>
		<title>Documentation/DevGuide/Extensions/Description of XML Elements</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156880"/>
		<updated>2010-02-10T12:41:43Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/description.xml&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Description of XML Elements}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent element: document root&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|&amp;lt;identifier&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|&amp;lt;version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|&amp;lt;platform&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|&amp;lt;deploymentHooks&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; is the root element of the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; &lt;br /&gt;
|The default namespace of element description and all children must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information must also be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt;&lt;br /&gt;
|The xlink namespace must be defined as &lt;br /&gt;
http://www.w3.org/1999/xlink&lt;br /&gt;
|-&lt;br /&gt;
|other namespace definitions &lt;br /&gt;
|Other namespaces can be added as necessary &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/identifier&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;identifier&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The extension identifier. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Identifiers |Extension Identifiers]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A textual representation of the extension version. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/platform&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A token representing a particular platform. See [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]] for details.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration&amp;lt;/code&amp;gt;  ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The registration element currently only contains the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. If the &amp;lt;code&amp;gt;&amp;lt;registration&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have a child element.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The element contains the &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; elements, determines if all user must agree to the license, or just the person who installs it, and determines a default &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have at least one child element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;accept-by&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;Required.Value&amp;lt;/code&amp;gt; is either “user” or “admin”. “user” means that every user has to agree to the license. That is, the extension can only be installed as user extension but not as shared extension. If it has the value “admin” then it can be deployed as shared extension as well. In that case only the person who installs it has to agree to the license. Individual users will not be asked to accept the license. They can use the extension right away. In case the value is “user” and the extension is being installed as user extension then the user must always agree to the license. By using &amp;lt;code&amp;gt;suppress-on-update=“true“&amp;lt;/code&amp;gt; it is, however, possible to install an extension for all users even if  &amp;lt;code&amp;gt;accept-by=“true“&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;default-license-id&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;. &lt;br /&gt;
The attribute determines what &amp;lt;license-text&amp;gt; is used if no &amp;lt;license-text&amp;gt; element has a lang attribute whose value matches the locals of {{PRODUCTNAME}}. There must always be exactly one &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element with a license-id attribute whose value matches that of the default-license-id. The type is &amp;lt;code&amp;gt;xsd:IDREF&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-on-update&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. When the attribute is not provided then the value “false” is assumed. The value true indicates that the license for this extension will not be displayed during installation when the same extension (same id but probably different version) is already installed. This applies for the automatic update as well as for manually installing an extension. The version of the already installed extension does not matter. Suppressing the license can be useful during the online update, because otherwise the update operation could be interrupted by many license dialogs. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-if-required&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. Since 3.3. When the attribute is not provided then the value “false” is assumed. The value “true“ indicates that the license will not be displayed during installation if this desired, which can be expressed by the unopkg switch &amp;lt;code&amp;gt;--suppress-license&amp;lt;/code&amp;gt; and is implicitely assumed for bundled extensions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license/license-text&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the license text, which language it uses, and if this element is the “default” &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the license file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;license-id&amp;lt;/code&amp;gt;&lt;br /&gt;
|Optional. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;.&lt;br /&gt;
One license-text element must have this attribute and the value must match the value of the default-license-id attribute of the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. The type is &amp;lt;code&amp;gt;xsd:ID&amp;lt;/code&amp;gt;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|&amp;lt;OpenOffice.org-minimal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-maximal-version|&amp;lt;OpenOffice.org-maximal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** others&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-minimal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should never be used with this element. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. String. The required underlying OpenOffice.org version (“2.1”, “2.2”, etc.), starting with OpenOffice.org 2.1. You cannot specify a particular corrective version, e.g. “2.2.1”, use “2.2” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-maximal-version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-maximal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value or older” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should always be defined as “2.3” for this element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The required maximal underlying OpenOffice.org version (“3.0”, “3.1”, etc.). You cannot specify a particular corrective version, e.g. “3.1.1”, use “3.1” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;update-information&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The second, third, etc. element are regarded as fallback, that is, the elements provide URLs to mirrors. The Extension Manager will try to get update information by using a URL and only use a different URL if an error occurred. That is, if for example the first URL references an atom feed that does not contain any references at all, but is a valid feed, then the Extension Manager assumes that there are no update information available. Then URLs from other &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt; elements are not examined. Therefore the update information referenced by every URL must be identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information/src&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL which provides the update information directly or an atom feed which in turn references the update information. The URL can point directly to a file or it may invoke code, such as a servlet, cgi, etc, that returns the atom feed or the update information.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;publisher&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized publisher name]] together with a URL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;publisher name&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the web site of the publisher of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;release-notes&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children provide URLs to [[Documentation/DevGuide/Extensions/Localized XML Elements|localized release-notes]]. &lt;br /&gt;
&lt;br /&gt;
Currently this element and its children are not used by the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes/src&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The element contains a URL to the &amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the release notes of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;display-name&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized display name]]. The name will be used in the GUI instead of the file name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;display name&amp;#039;&amp;#039; of the extension. The string length must be greater then null and must not only contain white space characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/default|&amp;lt;default&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/high-contrast|&amp;lt;high-contrast&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;default&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/high-contrast&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;high-contrast&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&amp;lt;extension-description&amp;gt; must have at least on [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]] child element. Every child references a localized description. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description/src&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the description text and which language it uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the description file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/deploymentHooks&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 3.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;deploymentHooks&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The service identifier which implements the XDeploymentHooks interface. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension DeploymentHooks|Extension DeploymentHooks]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156879</id>
		<title>Documentation/DevGuide/Extensions/Description of XML Elements</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156879"/>
		<updated>2010-02-10T12:40:43Z</updated>

		<summary type="html">&lt;p&gt;Jl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/description.xml&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Description of XML Elements}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent element: document root&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|&amp;lt;identifier&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|&amp;lt;version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|&amp;lt;platform&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|&amp;lt;deploymentHooks&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; is the root element of the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; &lt;br /&gt;
|The default namespace of element description and all children must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information must also be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt;&lt;br /&gt;
|The xlink namespace must be defined as &lt;br /&gt;
http://www.w3.org/1999/xlink&lt;br /&gt;
|-&lt;br /&gt;
|other namespace definitions &lt;br /&gt;
|Other namespaces can be added as necessary &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/identifier&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;identifier&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The extension identifier. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Identifiers |Extension Identifiers]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A textual representation of the extension version. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/platform&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A token representing a particular platform. See [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]] for details.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration&amp;lt;/code&amp;gt;  ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The registration element currently only contains the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. If the &amp;lt;code&amp;gt;&amp;lt;registration&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have a child element.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The element contains the &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; elements, determines if all user must agree to the license, or just the person who installs it, and determines a default &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have at least one child element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;accept-by&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;Required.Value&amp;lt;/code&amp;gt; is either “user” or “admin”. “user” means that every user has to agree to the license. That is, the extension can only be installed as user extension but not as shared extension. If it has the value “admin” then it can be deployed as shared extension as well. In that case only the person who installs it has to agree to the license. Individual users will not be asked to accept the license. They can use the extension right away. In case the value is “user” and the extension is being installed as user extension then the user must always agree to the license. By using &amp;lt;code&amp;gt;suppress-on-update=“true“&amp;lt;/code&amp;gt; it is, however, possible to install an extension for all users even if the &amp;lt;code&amp;gt;accept-by=“true“&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;default-license-id&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;. &lt;br /&gt;
The attribute determines what &amp;lt;license-text&amp;gt; is used if no &amp;lt;license-text&amp;gt; element has a lang attribute whose value matches the locals of {{PRODUCTNAME}}. There must always be exactly one &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element with a license-id attribute whose value matches that of the default-license-id. The type is &amp;lt;code&amp;gt;xsd:IDREF&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-on-update&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. When the attribute is not provided then the value “false” is assumed. The value true indicates that the license for this extension will not be displayed during installation when the same extension (same id but probably different version) is already installed. This applies for the automatic update as well as for manually installing an extension. The version of the already installed extension does not matter. Suppressing the license can be useful during the online update, because otherwise the update operation could be interrupted by many license dialogs. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-if-required&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. Since 3.3. When the attribute is not provided then the value “false” is assumed. The value “true“ indicates that the license will not be displayed during installation if this desired, which can be expressed by the unopkg switch &amp;lt;code&amp;gt;--suppress-license&amp;lt;/code&amp;gt; and is implicitely assumed for bundled extensions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license/license-text&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the license text, which language it uses, and if this element is the “default” &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the license file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;license-id&amp;lt;/code&amp;gt;&lt;br /&gt;
|Optional. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;.&lt;br /&gt;
One license-text element must have this attribute and the value must match the value of the default-license-id attribute of the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. The type is &amp;lt;code&amp;gt;xsd:ID&amp;lt;/code&amp;gt;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|&amp;lt;OpenOffice.org-minimal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-maximal-version|&amp;lt;OpenOffice.org-maximal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** others&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-minimal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should never be used with this element. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. String. The required underlying OpenOffice.org version (“2.1”, “2.2”, etc.), starting with OpenOffice.org 2.1. You cannot specify a particular corrective version, e.g. “2.2.1”, use “2.2” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-maximal-version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-maximal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value or older” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should always be defined as “2.3” for this element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The required maximal underlying OpenOffice.org version (“3.0”, “3.1”, etc.). You cannot specify a particular corrective version, e.g. “3.1.1”, use “3.1” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;update-information&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The second, third, etc. element are regarded as fallback, that is, the elements provide URLs to mirrors. The Extension Manager will try to get update information by using a URL and only use a different URL if an error occurred. That is, if for example the first URL references an atom feed that does not contain any references at all, but is a valid feed, then the Extension Manager assumes that there are no update information available. Then URLs from other &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt; elements are not examined. Therefore the update information referenced by every URL must be identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information/src&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL which provides the update information directly or an atom feed which in turn references the update information. The URL can point directly to a file or it may invoke code, such as a servlet, cgi, etc, that returns the atom feed or the update information.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;publisher&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized publisher name]] together with a URL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;publisher name&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the web site of the publisher of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;release-notes&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children provide URLs to [[Documentation/DevGuide/Extensions/Localized XML Elements|localized release-notes]]. &lt;br /&gt;
&lt;br /&gt;
Currently this element and its children are not used by the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes/src&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The element contains a URL to the &amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the release notes of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;display-name&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized display name]]. The name will be used in the GUI instead of the file name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;display name&amp;#039;&amp;#039; of the extension. The string length must be greater then null and must not only contain white space characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/default|&amp;lt;default&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/high-contrast|&amp;lt;high-contrast&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;default&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/high-contrast&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;high-contrast&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&amp;lt;extension-description&amp;gt; must have at least on [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]] child element. Every child references a localized description. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description/src&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the description text and which language it uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the description file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/deploymentHooks&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 3.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;deploymentHooks&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The service identifier which implements the XDeploymentHooks interface. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension DeploymentHooks|Extension DeploymentHooks]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Jl</name></author>
	</entry>
</feed>