1 #!/sbin/sh 2 # ************************************************************* 3 # 4 # Licensed to the Apache Software Foundation (ASF) under one 5 # or more contributor license agreements. See the NOTICE file 6 # distributed with this work for additional information 7 # regarding copyright ownership. The ASF licenses this file 8 # to you under the Apache License, Version 2.0 (the 9 # "License"); you may not use this file except in compliance 10 # with the License. You may obtain a copy of the License at 11 # 12 # http://www.apache.org/licenses/LICENSE-2.0 13 # 14 # Unless required by applicable law or agreed to in writing, 15 # software distributed under the License is distributed on an 16 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 # KIND, either express or implied. See the License for the 18 # specific language governing permissions and limitations 19 # under the License. 20 # 21 # ************************************************************* 22 23 . /lib/svc/share/smf_include.sh 24 25 #The start method is used for installing and updating the 26 #extensions. The service keeps a list 27 #(share/extensions/install/installed) of the extensions which were 28 #already installed. During installation, the bundled extensions are 29 #copied to the install folder (share/extensions/install). Finally this 30 #service, which is part of the office installation package, will be 31 #started and the start "method" of this script is called. Then all 32 #extensions in the "install" folder are checked if they are already 33 #installed by reading the list "installed". Because the list is empty 34 #at this time, all the extensions will be installed. 35 # 36 #If this service is restarted then the script checks if there is an 37 #extensions which is not yet installed, that is there is no entry for 38 #it in the 'installed' file. Only if this is the case then that 39 #extensions will be installed and its path is added to 'installed'. 40 # 41 #In case of an update, new versions of existing extensions and 42 #completely new extensions may be copied to the 'install' folder. Also 43 #a new 'installed' file will be copied which replaces the existing 44 #file. The new 'installed' file does not contain any entries of 45 #installed extensions. Therefore the next time when the start method is 46 #run all extensions contained in share/extensions/install will be 47 #installed. 48 49 #Create the folder which contains the temporary user installation 50 INSTDIR=`/usr/bin/mktemp -d "/tmp/userinstall.XXXXXX"` 51 52 OOO_BASE_DIR="/opt/openoffice/basis${OOOBASEVERSION}" 53 54 case "$1" in 55 'start') 56 EXTENSIONDIR=/opt/openoffice${OOOBRANDPACKAGEVERSION}/share/extension/install 57 for FILE in $EXTENSIONDIR/*.oxt 58 do 59 #We check if the file exist, because if there is no extension 60 #then $FILE will contain "<..>/*.oxt" 61 if [ -f "$FILE" ]; then 62 #Determine if this extension is already installed. We do 63 #that by checking the file "installed" which contains a 64 #list of all installed extensions including the full path 65 EXTENSIONFILE=`basename $FILE` 66 INSTALLED=`sed -n "/$EXTENSIONFILE/p" $EXTENSIONDIR/installed` 67 68 if [ -z "$INSTALLED" ]; then 69 #We have not found the name of the extension in the 70 #list. That is, it has not been installed (with unopkg) yet. 71 #Therefore we do it now. 72 echo installing $FILE 73 /opt/openoffice${OOOBRANDPACKAGEVERSION}/program/unopkg add --shared --bundled "$FILE" '-env:UserInstallation=file://$INSTDIR' '-env:UNO_JAVA_JFW_INSTALL_DATA=$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1' 74 #Let us remember that this extensions has been installed 75 #by adding the path name of the extension to the file 76 #installed 77 echo $FILE >> $EXTENSIONDIR/installed 78 fi 79 fi 80 done 81 82 #Now check for extensions which need to be uninstalled 83 #(unopkg). This is the case if the list of extensions in the file 84 #installed contains the name of an extension which does not exist 85 #in the the folder <..>/share/extension/install. 86 # LINE="" 87 # NEWCONTENT="" 88 # REMOVED="" 89 # LIST=`cat $EXTENSIONDIR/installed` 90 # #remove blank lines 91 # LIST=`echo "$LIST" | sed '/^[:blank:]*$/d'` 92 93 # echo "$LIST" | while [ 1 ] 94 # do 95 # read LINE || break 96 # if [ ! -f "$LINE" ]; then 97 # #The extension file has been removed from 98 # #share/extension/install. Now we remove the installed 99 # #extension 100 # echo removing `basename $LINE` 101 # /opt/openoffice${OOOBRANDPACKAGEVERSION}/program/unopkg remove --shared --bundled "`basename $LINE`" '-env:UserInstallation=file://$INSTDIR' '-env:UNO_JAVA_JFW_INSTALL_DATA=$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1' 102 # REMOVED=1 103 # else 104 # NEWCONTENT+=$LINE 105 # NEWCONTENT+="\n" 106 # fi 107 # done 108 109 # #Write the new list to the file "installed". It now has all names 110 # #remove which refered to previously removed extensions (removed 111 # #from .../share/extension/install) 112 # if [ "$REMOVED" ]; then 113 # #remove the last empty line 114 # NEWCONTENT=`echo "$NEWCONTENT" | sed '/^[:space:]*$/d'` 115 # echo "$NEWCONTENT" > $EXTENSIONDIR/installed 116 # fi 117 118 ;; 119 'stop') 120 echo "#### stop ####" 121 ;; 122 *) 123 echo "Usage: $0 { start | stop }" 124 exit 1 125 ;; 126 esac 127 128 exit $SMF_EXIT_OK 129