<?xml version='1.0' encoding='utf-8'?>
<!--***********************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 ***********************************************************-->

<oor:component-data oor:name="Addons" oor:package="org.openoffice.Office" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<node oor:name="AddonUI">
		<node oor:name="OfficeHelp">
			<node oor:name="UpdateCheckJob" oor:op="replace">
				<prop oor:name="URL" oor:type="xs:string">
					<value>vnd.sun.star.job:alias=UpdateCheck</value>
				</prop>
				<prop oor:name="ImageIdentifier" oor:type="xs:string">
					<value/>
				</prop>
				<prop oor:name="Title" oor:type="xs:string">
					<value xml:lang="en-US">Check for ~Updates...</value>
				</prop>
				<prop oor:name="Target" oor:type="xs:string">
					<value>_self</value>
				</prop>
				<prop oor:name="Context" oor:type="xs:string">
					<value/>
				</prop>
			</node>
		</node>
	</node>
</oor:component-data>
