Personalizar o OpenOffice para multi-instalação em Linux

O OpenOffice é realmente uma aplicação fantástica. A personalização que se alcança é imensa e quando se pretende disponibilizar para muitos utilizadores, há que ter alguma atenção.

Preciso de disponibilizar o OpenOffice (versão 3.1.0 em Português) para 60 utilizadores de terminais (LTSP) em Linux. O OpenOffice, a primeira vez que os utilizadores o iniciam, apresenta um ecrã de registo, para colocar nome, iniciais, etc… Pergunta se queremos procurar actualizações, apresenta a licença e se desejamos efectuar o registo. Após iniciar, temos mais uma imensidade de opções que podem ser configuradas. Existem também as extensões, e o dicionário em Português (que por incrivel não vem na versão Portuguesa que se descarrega da internet) que têm que ser instaladas automáticamente para cada utilizador.

Ora, eu nao posso deixar que estas coisas fiquem por configurar, principalmente os caminhos dos modelos, porque senão é uma chuva de telefonemas.

Aqui está como foi efectuado.

Sistema Operativo: Ubuntu 7.10 (Gutsy) com LTSP 5 (x2 servidores)

O OpenOffice3 não existe para esta versão do Ubuntu, entao, tive que o descarregar e instalar manualmente.

Instalar o dicionário Português para todos os utilizadores

O dicionário em Português é uma extensão. Os utilizadores podem descarregar extensões e instalar, mas ficam apenas disponiveis para eles. Da seguinte forma, pode-se instalar uma extensão que fique disponível globalmente

<OpenOffice_dir>/program/unopkg add –shared <extensão>

Assim, instalamos as extensões e estas ficam disponiveis para todos. Encontram este exemplo no wiki do OpenOffice.

Alterar o caminho dos modelos

Para se alterar o caminho dos modelos e ficar já configurado antes do utilizador executar o OpenOffice a primeira vez (partindo do principio que existe uma directoria que contém os modelos de documentos a utilizar), editamos o ficheiro <OpenOffice_dir>/basis3.1/share/registry/data/org/openoffice/Office/Paths.xcu

vi Paths.xcu

Vamos avançado pelo ficheiro até chegarmos à linha 138, que mostra o seguinte:

  <node oor:name="Template" oor:op="fuse" oor:mandatory="true">
      <node oor:name="InternalPaths">
        <node oor:name="$(insturl)/share/template/$(vlang)" oor:op="fuse"/>
      </node>
      <prop oor:name="WritePath">
        <value>$(userurl)/template</value>
      </prop>
    </node>

A linha a negrito deverá ser alterada para refletir a localização da directoria. O parâmetro $(home) reflecte a directoria do utilizador, geralmente /home/<USER> e template onde deverão estar os modelos. No meu caso, eu altero para

<value>$(home)/Modelos</value>

Para saberem mais sobre as variáveis pré-definidas do OpenOffice, consultem o wiki.

Retirar o First Time Wizard

O seguinte vai retirar o Wizard que corre a primeira vez que o utilizador executa o OpenOffice. Temos duas opções para realizar isto:

  1. Editar directamente os ficheiros de configuração (ainda não consegui retirar a janela que pergunta ao utilizador se pretende registar-se)
  2. Descarregar uma extenção e registá-la, de forma a retirar o First Time Wizard

Método 1

Editar o ficheiro <OpenOffice_dir>/share/registry/schema/org/openoffice/Setup.xcs

Navegar até à linha 237 onde aparece:

      <prop oor:name="FirstStartWizardCompleted" oor:type="xs:boolean">
        <info>
          <desc>is set to true, when the FirstStartWizard has been completed</desc>
        </info>
        <value>false</value>
      </prop>
 

O valor a negrito altera-se para true. Desta forma, o Wizard já não irá correr.

Método 2 ( Retirado desta página)

Para a versão 3.1.0, usamos a extensão DisableFirstStartWzd_ooo31.oxt .

Na linha de comandos, executamos o unopkg para a instalar:

<OpenOffice_dir>/program/unopkg add --shared DisableFirstStartWzd_ooo31.oxt

Desta forma, já não vai aparecer o Wizard, nem mesmo se o utilizador quer registar-se.

 

Personalizar as informações dos utilizadores

Após estar tudo configurado e como deve ser, criei um script que vai alterar as informações dos utilizadores, personalizando para cada um. Para isto, tirei vantagem do suporte de LDAP existente nos servidores.

O OpenOffice cria uma directoria no perfil do utilizador, onde guarda todas as definições do utilizador. Este script (além das alterações já efectuadas em cima) vai alterar o ficheiro UserProfile.xcu criado de base com as informações para cada utilizador.

Como foi feito:

Executei o OpenOffice 3 com um utilizador. Editei as informações do utilizador e coloquei variaveis do estilo _NOME_, _APELIDO_,etc…. Fechei o OpenOffice e copiei o ficheiro UserProfile.xcu para outra localização (/opt). Com o script, vou recolher informações sobre os utilizadores e com a ajuda do sed vou procurar por essas variáveis e substituir pelas correctas. Este processo funciona apenas para utilizadores já existentes.

Aqui fica o script

#!/bin/bash

# Este script permite alterar os dados do utilizador do OpenOffice3 directamente
# nos ficheiros de configuracao - UserProfile.xcu
# Bruno Santos - bvsantos@hal.min-saude.pt
# 2009-09-04
#
# Variaveis que procura
# - _EMPRESA_     : <Empresa>
# - _NOME_     : Nome do utilizador
# - _APELIDO_    : Ultimo nome do utilizador
# - IN    : Iniciais
# - _EMAIL_    : Email do utilizador
#
# Linha Original
# getent passwd | awk -F":" '{ print $5 }' | awk -F" " '{print $1" "$NF}'
#
# Defined Variables
#Directory where OpenOffice will save the configuration files
OOdir=.openoffice.org/3/user/registry/data/org/openoffice

#File to update
OOfile=UserProfile.xcu

#Static variables to replace
COMPANY="<empresa>"
COUNTRY="Portugal"
CITY="Castelo Branco"

#UserProfile.xcu file location with its name
OOcopy=/opt/UserProfile.xcu

#Go through every user in /home

for F in /home/*; do
        #Put user name in a variable
        NAME=getent passwd | grep $F | awk -F":" '{ print $5 }'
        FIRST=echo $NAME | awk -F" " '{ print $1 }' #Primeiro Nome
        LAST=echo $NAME | awk -F" " '{ print $NF }' #Ultimo Nome
        NAMEU=getent passwd | grep $F | awk -F":" '{ print $1 }' #Username
        #Now, check if directory exists
        if [ ! -d $F/$OOdir ]; then
            #If not found, create it
            echo "Creating directory for user $NAME"
            mkdir -p $F/$OOdir
            echo "Changing permissions: setting $NAMEU:users"
            chown -R echo $NAMEU:users $F/.openoffice.org
        else
            echo "User: $NAME Directory Exists"
        fi
        #Check if UserProfile.xcu file exits. If not, copy it
        if [ ! -f $F/$OOdir/$OOfile ]; then
            echo "Copying file $OOfile"
            cp /opt/$OOfile $F/$OOdir
        fi
   
        #Initials for the name
        INI1=echo $FIRST | cut -c1
        INI2=echo $LAST | cut -c1

        #Start replacing stuff
        echo "Replacing stuff"
        sed -i -e "s/_EMPRESA_/echo $COMPANY/g"
        -e "s/_PAIS_/echo $COUNTRY/g"
        -e "s/_CIDADE_/echo $CITY/g"
        -e "s/_EMAIL_/echo $NAMEU@<domain>/g"
        -e "s/_NOME_/echo $FIRST/g"
        -e "s/_APELIDO_/echo $LAST/g"
        -e "s/IN/echo $INI1$INI2/g" $F/$OOdir/$OOfile
#    fi
done

Eu sei que o script não é a coisa mais optimizada do mundo, mas faz o trabalho dele. Sejam livres de o alterar.

Disponibilizar os atalhos para os utilizadores

O OpenOffice tras com ele uns DEBS para integração no desktop, mas não os vou usar. Como não removi a versão anterior do OpenOffice, os atalhos ainda lá continuam.

Se adicionasse esses .deb, iriam aparecer mais atalhos e garantidamente iria confundir os utilizadores. Acreditem, iria e posteriormente era o cabo dos trabalhos.

Assim, vamos alterar os atalhos já existentes.

Os atalhos para os programas, em Gnome 2.20.1 (Ubuntu 7.10) estão em /usr/share/applications.

ls ooo* -l
-rw-r--r-- 1 root root 7492 2008-11-20 10:23 ooo-base.desktop
-rw-r--r-- 1 root root 8008 2008-11-20 10:23 ooo-calc.desktop
-rw-r--r-- 1 root root 5895 2008-11-20 10:23 ooo-draw.desktop
-rw-r--r-- 1 root root 7975 2008-11-20 10:23 ooo-impress.desktop
-rw-r--r-- 1 root root 5533 2008-11-20 10:23 ooo-math.desktop
-rw-r--r-- 1 root root  226 2008-11-20 13:21 ooo-template.desktop
-rw-r--r-- 1 root root 8736 2008-11-20 10:23 ooo-writer.desktop

Vamos editar cada um deles e alterar o caminho para o programa.

Diferenças:

  • Na versão 2, o binário é oofice
  • Na versão 3, o binário é soffice e como não está na path, temos que dar o caminho completo

Vou aqui colocar um exemplo, e depois é tudo igual, alterando apenas o parâmetro.

OpenOffice Writer

vi ooo-writer.desktop

Alteramos a seguinte linha:

Exec=ooffice -writer %U

para

Exec=/opt/openoffice.org3/program/soffice -writer %U

Guardamos e saímos. Experimentem executar agora a aplicação carregando no icon que aparece no grupo de programas "Produtividade" (em Português)

 

Esta página ainda se encontra em construção. Assim que for fazendo mais coisas, irei colocar aqui.

Leave a Reply

Your email address will not be published. Required fields are marked *