Instalação Desassistida do OpenOffice.org (AKA BrOffice.org) para Windows

[Sumário]

  1. Para os apressadinhos
  2. TODO
  3. Apresentação
  4. Uso deste documento
  5. Introdução
  6. Preparando o terreno
  7. Baixando o pacote do BrOo para Windows
  8. Descompactando e instalando (*NOVO*)
  9. ODF Viewer
  10. O corretor ortográfico e afins
  11. O corretor ortográfico e afins pelo ambiente Windows
  12. O corretor gramatical (*EM DESENVOLVIMENTO*)
  13. Editando o MSI
  14. Gerando as entradas para o registro
  15. Usando a mesma configuração do BrOo e do OOo no Windows e no Linux
  16. Comentários
# Instalação Desassistida do OpenOffice.org (AKA BrOffice.org) para Windows
#
# v2.1.3 - 2007/10/10 (Qua) 13:10:29 (BRST)
# Paulo R. Bagatini <arkanon@ceat.net>
#
# A última versão deste documento pode ser obtida em
# <http://www.ceat.net/~arkanon/instalacao_desassistida_ooo/>
#
# Eventualmente, mais coisas úteis/inúteis/curiosas sobre vários assuntos podem vir a ser disponibilizadas (não quer dizer
# que estão ou serão) em <http://www.ceat.net/~arkanon/>



# Essa é uma versão beta da nova versão do tutorial. Vou publicar assim como está, pois estou meio sem tempo, e, se ficar
# segurando, é capaz do arquivo final nunca ir ao ar. Sempre que for possível, vou trabalhar nele.
#
# Devido ao fato de eu finalmente aprender a usar as característica do M$ Installer, 99,9% do processo foi simplificado.
# Basicamente, agora tudo se resume a um comando (ou dois) :-(   :-p
#
# Em contra-partida, será possível transformar o tutorial num script, tanto pelo ambiente Linux, quanto Windows, afinal somente
# instalar o OOo numa rede com muitas estações pode não ser suficiente... ;-).
#
# Por coincidência, paralelamente às minhas descobertas, Frank Peters <fpe@openoffice.org>, gerente de Documentação da Sun
# Microsystems in Hamburg, publicou em 2 de outubro de 2007 informações muito semelhantes às minhas novas, no Wiki do OOo.
# Vocês podem vê-las em <http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Automatic_Installation_on_Windows>.
# Eu já incorporei algumas dessas informações no texto abaixo.
#
# É isso aí.



# [Para os apressadinhos]

7z x BrOo_2.3.0_Win32Intel_install_pt-BR.exe

msiexec /qn /norestart /l install.log /i brofficeorg23.msi \
        INSTALLLOCATION="c:\\broo-2.3.0" \
               USERNAME="Free User" \
            COMPANYNAME="Free Company" \
               ADDLOCAL="ALL" \
            SELECT_WORD=1 \
           SELECT_EXCEL=1 \
      SELECT_POWERPOINT=1

# Pelo Windows, pode-se precisar "start /wait" antes do comando "msiexec ..."

# Pronto.
#
# O resto abaixo é uma mistura de outras informações relacionadas a instalação que podem ser úteis, mas que eu vou
# organizar com tempo.



# (
#   Ao longo do texto, nos comentários, existem valores constantes que, por motivo de legibilidade, não devem ser abstraídos com o
#   uso de variáveis, como nos comandos Linux. Para chamar a atenção a eles, foram colocados entre [[ ]]. Isso vai me lembrar de
#   alterá-los em novas versões do tutorial e alertar o leitor de que podem ser diferentes na máquina dele. Portanto, leiam esses
#   valores sempre sem os dois abre e fecha colchetes :-p
# )



# [TODO]
#
# Cogroo
# JRE
# LangPack
# SlackBuild
# Dicionarios Tematicos
# Viewers da M$
# ODF Viewer
# .reg para remover o OOo
# .reg para instalar e remover os viewers da M$



# [Apresentação]
#
# Esse tutorial é fruto de experiências pessoais ao longo de vários anos de trabalho em rede mista com Slackware Linux
# e Windows 95..2003 no Colégio Evangélico Alberto Torres <http://www.ceat.net/>, Lajeado <http://www.lajeado-rs.com.br/>,
# RS <http://www.estado.rs.gov.br/>. Ele começou na época do StarOffice 5.1 e chegou à presente forma com a versão 2.0 de
# 30/06/2007 para participar do "1º Concurso de Dicas e Tutoriais para o BrOffice.org" <http://broffice.org/concurso/>,
# realizado no período de 4 de fevereiro a 30 de junho de 2007.



# [Uso deste documento]
#
# O procedimento apresentado foi exaustivamente testado, e funciona perfeitamente na MINHA máquina, com a minha configuração
# e com as versões dos softwares listados abaixo. Mesmo assim, em se tratando de informática, a Lei de Murphy prevalece,
# sendo 101% certo que se você tentar executá-lo na SUA máquina, ele não vai funcionar de primeira. Por isso, não assumo
# qualquer responsabilidade por qualquer dano físico, lógico ou moral que o uso dele possa acarretar em sua máquina, instalação,
# rede ou cérebro. Utilize as informações aqui presentes por sua própria conta e risco.
#
# LEMBRE-SE: se você ainda não consegue entender o que as partes desse procedimento fazem, pode não conseguir ajustá-lo facilmente
# para se adaptar a sua situação, e, portanto, não pode reclamar se alguma coisa sair errado.
#
# Infelizmente, apesar da cara de script desse arquivo, ele não funcionará se for salvo, tornado executável e executado,
# simplesmente porque nesse processo há passos que não podem ser automatizados, como, por exemplo, o preenchimento dos campos
# do instalador do BrOo e a exportação das propriedades do MSI :-( Mesmo assim, o formato dele é muito cômodo, pois se
# formos copiando e colando parte a parte, separadas pelos passos não automatizáveis, quase não teremos trabalho para
# atingir o objetivo que o tutorial se propõe a auxiliar. Também é necessário parametrizar certos valores, como o nome de
# alguns arquivos, para que o procedimento funcione tanto para o BrOo quanto para o OOo.
#
# Você é livre para usar, copiar, modificar e passar adiante esse tutorial; tudo o que eu peço é que mantenha os créditos
# originais. Se encontrar erros ou tiver sugestões que possam melhorá-lo ou ajustá-lo a outras situações, sinta-se a vontade
# para publicá-los ou enviá-los para mim.
#
# Aviso logo de início que eu gosto de tirar sarro da Microsoft. Quem se ofende com isso, quem acha que é falta de
# profissionalismo, pode parar de ler e ir instalar o BrOffice.org a mão... bem ao estilo M$ >:-)
#
# Versões dos principais softwares utilizados:
#
#   - Slackware [[12.0]] *sem* GNOME
#   - Kernel [[2.6.22.9]] compilado por mim com os parâmetros do Kernel [[2.6.21.5]] Huge SMP default do Slackware [[12.0]]
#   - XOrg [[1.3.0]] com a extensão GLX ativada
#   - GNU sed [[4.1.5]]
#   - GNU bash [[3.1.17(2)]]
#   - GNU Wget [[1.10.2]]
#   - Lynx [[2.8.6rel.5]], libwww-FM [[2.14]], SSL-MM [[1.4.1]], OpenSSL [[0.9.8e]], ncurses [[5.6.20070217(wide)]]
#   - 7-Zip [[4.55 beta]], oriundo do [[repositório italiano Slacky]]
#     <http://www.slacky.eu/repository/slackware-12.0/system/p7zip/4.55/>
#   - WINE [[0.9.46]], oriundo do [[repositório italiano Slacky]]
#     <http://www.slacky.eu/repository/slackware-12.0/utilities/wine/0.9.46/>
#   - BrOffice.org [[2.3.0]] (de [[22/09/2007]]) para Windows, oriundo do [[mirror LinOrg]]
#     <http://linorg.usp.br/OpenOffice.org/localized/pt-BR/2.3.0/>
#   - conta de usuário comum
#
# Na sua máquina:
(
  cat /etc/slackware-version
  gnome-about --version
  uname -sr
  Xorg  -version 2>&1 | head -2 | tail -1
  Xorg :999 -probeonly -verbose 2>&1 | grep extensions
  sed  --version | head -1
  bash --version | head -1
  wget --version | head -1
  lynx --version | head -2 | sed '$!N;s/\n/, /'
  7z | head -2 | tail -1
  wine --version
)



# [Introdução]
#
# Qualquer pessoa que se torna responsável por manter em funcionamento, com as devidas e freqüentes atualizações,
# um conjunto considerável de servidores e/ou estações, rodando qualquer sistema operacional que seja, logo percebe
# as vantagens que uma instalação desassistida apresenta: automação, rapidez, redução de erro humano e padronização
# são algumas que me ocorrem no momento.
#
# No mundo Unix, instalações e manutenções desse tipo são a regra, e são triviais de se fazer. Apenas quando se é
# obrigado a usar Windows é que elas podem se tornar bichos de 7 cabeças, devido a vários fatores, mas principalmente
# ao fato dos instaladores espalharem entradas por todo o registro e não apresentarem ferramentas que permitam fazer
# isso sem que se instale o aplicativo com o instalador. Então o administrador (ou usuário, eventualmente) fica de mãos
# atadas.
#
# Na minha percepção, essa é uma grande falha dos desenvolvedores que preparam pacotes para Windows. Nossa vida seria
# muito mais fácil, e esse tutorial se tornaria inútil :-p, se tais desenvolvedores fornecessem junto com o aplicativo
# uma ferramenta que permitisse programar o registro do Windows da mesma forma que o instalador do pacote, mas sem
# ter que realizar a instalação propriamente dita. Na verdade, isso deveria ser função do gerenciador de instalação.
# O desenvolvedor mandaria junto um arquivo de configuração em texto plano que o msiexec (no caso) leria e executaria,
# fazendo o papel do final da instalação do pacote.
#
# Mas aí nós já estamos querendo algo mais que apenas um aplicativo livre. Estamos querendo um Sistema Operacional livre :-D
#
# O artifício técnico (= enjambra :) que apresentarei pode ser aplicado para qualquer software que seja instalado por
# meio de um pacote MSI. Dois exemplos próximos são o Firefox e o Thunderbird.
#
# A idéia exposta nesse tutorial envolve 4 passos básicos:
#   - instalar o BrOo UMA vez, em qualquer diretório (não precisa nem mesmo ser aquele do qual se pretende rodá-lo);
#   - extrair do .msi da instalação do BrOo as alterações de registro do Windows e gerar um .reg com elas, utilizando
#     a informação do diretório de onde se pretende rodar o BrOo;
#   - copiar os arquivos do BrOo instalado para o diretório final, preferível, mas não obrigatoriamente, de rede;
#   - aplicar o .reg ao registro do Windows.
#
# Realizei todos os passos num Slackware com WINE, conforme a configuração citada acima, mas nada impede que boa parte
# deles seja executada a partir do Windows. A vantagem de se executar o processo usando o WINE é que, além de não estar
# usando Windows :-p,  dessa forma não poluímos o registro dele e podemos fazer n testes sem preocupações quanto a isso.
#
# Apenas o passo da geração do .reg exige um sistema *nix. Talvez pelo Windows se possa usar o CygWin ou talvez então
# alguém se aventure a realizá-lo com outras ferramentas mais "mundanas" :-p



# [Preparando o terreno]

# Uma variável auxiliar, útil para quando formos refazer tudo isso com outra versão do BrOo ;-)
broo_ver="2.3.0"

broo_ver_major=`echo $broo_ver | cut -d. -f1`
broo_ver_minor=`echo $broo_ver | cut -d. -f2`
broo_ver_patch=`echo $broo_ver | cut -d. -f3`

# No home do usuário, vamos manter todos os arquivos do processo. Até o final, para a versão [[2.3.0]] do BrOo serão
# necessários pelo menos [[500 MiB]] (incluídos aí [[3.5 MiB]] para o diretório do WINE).
#mkdir -p $HOME/broo-$broo_ver/{setup,files}
mkdir -p $HOME/broo-$broo_ver

# Preparamos uma estrutura limpa do WINE, separada de qualquer estrutura padrão dele, e linkamos o diretório, onde todos
# os arquivos vão ficar, para o drive c: do WINE.
#
# Por default, o WINE será configurado como Windows 2000. Nao sei se é possível escolher não interativamente outra
# versão de Windows, mas esse default é satisfatório para o BrOo. Nos casos onde uma versão específica de Windows é
# exigida, podemos setá-la usando o configurador interativo do WINE: 'winecfg'
export WINEPREFIX="$HOME/.wine-broo"
wineprefixcreate
cd $WINEPREFIX/drive_c
ln -s $HOME/broo-$broo_ver .
cd broo-$broo_ver



# Rodando o 'winecfg', podemos perceber que, eventualmente, ele está com algum problema na fonte dos textos das janelas.
# A solução é simples. Editamos o arquivo '$WINEPREFIX/system.reg' e substituimos
#     "MS Shell Dlg"="Tahoma"
#     "MS Shell Dlg 2"="Tahoma"
# por
#     "MS Shell Dlg"="MS Sans Serif"
#     "MS Shell Dlg 2"="MS Sans Serif"
#
# Ou, melhor ainda, como root, editamos o arquivo '/usr/share/wine/wine.inf', acrescentamos a linha
#     HKLM,%FontSubStr%,"MS Shell Dlg",,"MS Sans Serif"
# e alteramos
#     HKLM,%FontSubStr%,"MS Shell Dlg 2",,"Tahoma"
# por
#     HKLM,%FontSubStr%,"MS Shell Dlg 2",,"MS Sans Serif"
#
# As configurações desse arquivo são o default para todos os usuários que ainda não tem uma configuração pessoal do WINE.
# Para os que já têm, ou apagamos e recriamos o $WINEPREFIX ou usamos o esquema acima.



# [Baixando o pacote do BrOo para Windows]

#  site="ftp://broffice.org/stable/$broo_ver"
#  site="http://linorg.usp.br/BrOffice.org/stable/$broo_ver"
   site="http://ftp.ceat.net/pub/windows"
   file="BrOo_${broo_ver}_Win32Intel_install_pt-BR.exe" # [[107 MiB]]
    log="l.$file.log"
timeout=60 # s
   wait=5  # s
  tries=0  # infinito
wget -w $wait --random-wait -c -t $tries -T $timeout -a $log "$site/$file"



# [Descompactando e instalando (*NOVO*)]
#
strings $file | grep -i version
#
# Pelo retorno do comando acima, vemos que o executável é um compactado auto-descompactável, criado com o Nullsoft (NSIS, NullSoft
# Installation System, v[[2.04]]). Um pouco de Google e descobrimos que o 7-Zip descompacta arquivos NSIS. Alias, ele também
# descompacta .cab e .msi, o que é muito interessante :-)
#
# O 7-Zip é um compactador de arquivos com alta taxa de compressão. É um software livre, distribuído sob a GNU LGPL.
# Segundo o site, "Geralmente o 7-Zip comprime para o formato 7z de 30 a 70% melhor que no formato zip. E o 7-Zip comprime para o
# formato zip de 2 a 10% melhor que outro programa compatível com o zip."
#
# <http://www.7-zip.org/pt-br/>
#
# Se o 7-Zip não estiver instalado no seu sistema, pode ser obtido num dos endereços abaixo.
#
# Código fonte e binário para Windows (até a versão 4.55, na data desse documento)
# <http://sourceforge.net/project/showfiles.php?group_id=14481>
#
# Código fonte e binário para Linux (até a versão 4.55, na data desse documento)
# <http://sourceforge.net/project/showfiles.php?group_id=111810>
#
# Pacote para Slackware 12
# <http://www.slacky.eu/repository/slackware-12.0/system/p7zip/>

7z x -osetup $file

msi="brofficeorg${broo_ver_major}${broo_ver_minor}.msi"

# 7z x -otables $msi
# 7z x -ocab1   brofficeorg1.cab
# 7z x -ocab2   brofficeorg2.cab
# 7z x -ocab3   brofficeorg3.cab
# 7z x -ocab4   brofficeorg4.cab

# <http://www.microsoft.com/technet/prodtechnol/windowsserver2003/pt-br/library/ServerHelp/9361d377-9011-4e21-8011-db371fa220ba.mspx>
# <http://msdn2.microsoft.com/en-us/library/aa367832.aspx>
# <http://helpnet.installshield.com/robo/projects/HelpLibDevStudio9/IHelpCmdLineMSI.htm>

# <http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Automatic_Installation_on_Windows>

# <http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/silent.html>

# Usando diretamente o msiexec, tornam-se desnecessários os seguintes objetos:
cd setup
rm -rf \$PLUGINSDIR setup.* instmsi* licenses/ readmes/

cd
rm -rf $WINEPREFIX
wineprefixcreate
cd $WINEPREFIX/drive_c
ln -s $HOME/broo-$broo_ver .
cd broo-$broo_ver/setup

  INSTALLLOCATION="c:\\broo-$broo_ver\\files"
      COMPANYNAME="Free Company"
         USERNAME="Free User"
         ADDLOCAL="ALL"
           REMOVE="ALL"
      SELECT_WORD=1
     SELECT_EXCEL=1
SELECT_POWERPOINT=1

# Instalação administrativa
msiexec /qn /norestart /l install.log /a $msi \
        INSTALLLOCATION="$INSTALLLOCATION" \
            COMPANYNAME="$COMPANYNAME" \
               USERNAME="$USERNAME" \
               ADDLOCAL="$ADDLOCAL" \
            SELECT_WORD=$SELECT_WORD \
           SELECT_EXCEL=$SELECT_EXCEL \
      SELECT_POWERPOINT=$SELECT_POWERPOINT

# Remover
msiexec /qn /l remove.log /x $msi

# Registrar
msiexec /qn /l register.log /fum $msi



# [ODF Viewer]
<http://opendocumentfellowship.org/odfviewer/>



# [O corretor ortográfico e afins]
#
# Se quisermos atualizar/instalar o corretor ortográfico:
#
# <http://broffice.org/verortografico/>
# <http://www.deso-se.com.br/downloads/download.php?arquivo=pt_BR-2007-04-11>
#
# Em files/share/dict/ooo residem os arquivos de
#   correção ortográfica: pt_BR.{aff,dic}
#   hifenização:          hyph_pt_BR.dic
#   sinônimos:            th_pt_BR_v2.{dat,idx}
#   temáticos:
#
# Inserir, se necessário, no arquivo dictionary.lst:
#   DICT pt BR pt_BR
#
# Para os arquivos de hifenização e de sinônimos (thesaurus) as entradas no arquivo dictionary.lst sao:
#   HYPH pt BR hyph_pt_BR
#   THES pt BR th_pt_BR_v2

   last="pt_BR-2007-04-11" # [[1.3 MiB]]

# É possível descobrir automaticamente a data da última atualização do corretor:
   site="http://broffice.org/verortografico"
#  site="http://ftp.ceat.net/pub/windows"
   last=`lynx -dump $site | grep arquivo=pt_BR | cut -d= -f2`

# Baixamos o pacote
   site="http://www.deso-se.com.br/downloads"
#  site="http://ftp.ceat.net/pub/windows"
   file="$last.zip"
    log="l.$file.log"
timeout=60 # s
   wait=5  # s
  tries=0  # infinito
wget -w $wait --random-wait -c -t $tries -T $timeout -a $log "$site/$file"

cd files/share/dict/ooo
unzip ../../../../$file
mv README.TXT README_pt_BR.txt

# Caso o dicionário ainda não exista na lista de dicionários (como no caso da versão 2.2.1 do BrOo), adicionamos:
tab=$'\x09'
grep -q "DICT[ $tab]*pt[ $tab]*BR[ $tab]*pt_BR" dictionary.lst || echo "DICT pt BR pt_BR" | todos >> dictionary.lst

# No caso dos arquivos de hifenização e de sinônimos, o processo é idêntico.
# Não consegui descobrir o site oficial para download desses arquivos, por isso é possível que eles não estejam mais sendo
# atualizados. Se for esse o caso, e eles não estiverem presentes na versão do BrOo que está sendo instalada (como a 2.2.1),
# é só pega-los de alguma instalação antiga.
#
# Uma vez rodando o BrOo, ele deve automaticamente reconhecer palavras em pt_BR ortograficamente erradas; senão, no menu
#    Ferramentas > Opções|Configurações de Idioma|Idiomas
# selecionamos 'Português (Brasil)'. Ele deve, então, começar a usar os arquivos *pt_BR*. Verificamos isso indo em
#    Ferramentas > Opções|Configurações de Idioma|Recursos de Verificação Ortográfica|Editar
# Ele deve listar a língua e os arquivos que estão sendo usados.

# <http://www.broffice.org/dicionarios_tematicos>
lynx -dump -listonly http://www.broffice.org/dicionarios_tematicos | grep files | cut -d. -f2-

cd ../../../..



# [O corretor ortográfico e afins pelo ambiente Windows]
#
# (Esta seção é equivalente à anterior. Se a seção anterior resolveu o seu problema, as informações desta são completamente
#  redundantes para você.)
#
# Se você não entendeu os passos da seção acima ou é obrigado a usar Windows e não tem acesso a uma máquina com Linux,
# esta seção mostra uma forma manual equivalente, usando o Windows Explorer e o Notepad:
#
# - certifique-se que o BrOo está com todas as suas instâncias fechadas para todos os usuários da máquina. Talvez isso
#   não seja realmente necessário, mas não dói nada garantir ;)
#
# - pelo Windows Explorer, acesse, dentro do diretório de instalação do BrOo, o diretório 'share/dict/ooo'
#
# - verifique se o diretório contém os seguintes arquivos:
#     dictionary.lst
#     hyph_pt_BR.dic
#     pt_BR.aff
#     pt_BR.dic
#     th_pt_BR_v2.zip
#   Ao invés de 'th_pt_BR_v2.zip', ele pode conter o arquivo 'th_pt_BR_v2.dat', que é o conteudo do arquivo zip.
#   Eventualmente pode conter também um arquivo 'th_pt_BR_v2.idx', e tudo o que sei a respeito dele, é que, ou não é mais
#   necessário, ou é gerado automaticamente.
#
# - como dito na seção anterior,
#     dictionary.lst    é o arquivo de configuração dos vários dicionários nas várias línguas instalados no BrOo
#     hyph_<lang>.dic   são arquivos de hifenização,
#     <lang>.*          são arquivos do corretor ortográfico e
#     th_<lang>_v2.*    são arquivos do dicionário de sinônimos (thesaurus).
#   Cada um dele é independente, e você pode instalá-los ou não, conforme seu desejo e necessidade, com exceção,
#   obviamente, do arquivo de configuração, que é obrigatório ;-)
#
# - procure em alguma instalação anterior do BrOo os arquivos faltantes que você deseja instalar e copie-os para o diretório,
#   ou baixe a última versão do arquivo do corretor ortográfico. Ele pode ser encontrado em:
#     <http://broffice.org/verortografico/>
#
# - abra o Notepad e arraste para cima dele o arquivo 'dictionary.lst' (ou vá em Arquivo, Abrir, e ache esse arquivo)
#
# - o arquivo deve conter, entre outras linhas relacionadas a outras linguas, as seguintes:
#     DICT pt BR pt_BR
#     HYPH pt BR hyph_pt_BR
#     THES pt BR th_pt_BR_v2
#
# - se alguma delas não existir, acrescente-a
#
# - salve as alterações e feche o Notepad
#
# - Execute o BrOo (seu iniciador rápido e crie ou abra um arquivo, ou abra algum dos aplicativos)
#
# - Se ele não reconhecer palavras em português erradas, vá no menu Ferramentas > Opções|Configurações de Idioma|Idiomas e
#   selecione 'Português (Brasil)'. Ele deve automaticamente começar a usar os arquivos *pt_BR*. Verifique isso indo em
#   Ferramentas > Opções|Configurações de Idioma|Recursos de Verificação Ortográfica|Editar. Ele deve listar a língua e os
#   arquivos que estão sendo usados.



# A linguagem em que uma porção de texto foi escrita faz parte das configurações do caracter. Assim, textos escritos antes
# que o BrOo tenha incorporado os arquivos de ortografia em pt_BR, ou com a língua configurada para outra que não pt_BR,
# podem não ter suas palavras em português erradas reconhecidas de forma adequada.
#
# Nesse caso, selecionamos o texto cujos erros não são identificados, vamos no menu Formatar > Caracter|Fonte|Idioma e
# selecionamos 'Português (Brasil)'.



# [O corretor gramatical (*EM DESENVOLVIMENTO*)]
#
#  CoGrOO - Corretor Gramatical acoplável ao OpenOffice.org <http://cogroo.sf.net/>
#
for i in server gui
do
     site="http://cogroo.sourceforge.net/download/current.html"
#    site="http://ftp.ceat.net/pub/windows"
     file=`lynx -dump $site | grep "http.*\.rpm$" | grep $i | awk -F/ '{print$NF}'`

     site="http://downloads.sourceforge.net/cogroo"
#    site="http://ftp.ceat.net/pub/windows"
      log="l.$file.log"
  timeout=60 # s
     wait=5  # s
    tries=0  # infinito
  wget -w $wait --random-wait -c -t $tries -T $timeout -a $log "$site/$file"

  rpm2tgz $file
  rm -f $file
  basename=`basename $file .rpm`
  mkdir -p $basename
  (
    cd $basename
    tar zxvf ../$basename.tgz
  )
done



# [Editando o MSI]
#
# Agora, no WINE, o diretório 'c:\broo-[[2.3.0]]\files' contém uma instalação completa do BrOo. Mais adiante, seu conteúdo será
# copiado para o local definitivo, de onde o BrOo será executado.
#
# Falta apenas gerar o .reg que fará o papel do instalador nas máquinas que rodarão o BrOo.
#
# Essa é a parte legal e mentalmente estimulante. Infelizmente ainda é um pouco braçal, por precisar de uma ferramenta feita
# pela Microsoft, que, como tudo que ela faz, valoriza as pernas, mas não a cabeça.
#
# Precisamos saber que alterações o instalador faz no registro do Windows. Certamente elas estão guardadas no arquivo .msi,
# já que, como vimos, o setup.exe é "inutil". Perguntamos ao Oráculo que programa podemos usar para ver ou editar as
# propriedades de um arquivo .msi e ele, em sua benevolência, nos responde:  o rrr... c aaaaaa...  :-)
#
# O Orca é um editor extremamente básico das propriedades de um MSI, criado pela M$ só para não dizerem que ela criou mais
# um "padrão" e não deu suporte a ele.
# <http://support.microsoft.com/kb/255905/pt-br>
#
# Tem o manual:
# <http://msdn2.microsoft.com/En-US/library/aa370557.aspx>
#
# que equivale a:
# wine <orca_exe> -?
# que apenas prova que a Micro$oft não oferece nada de especial, pelo menos de graca :-p
#
# A documentação da M$ sugere usar o Orca que vem com o PSDK (Windows Server 2003 SP1 Platform SDK), mas a versão [[0.9.46]] do
# WINE não consegue instalá-lo, nem ao .msi contido no executável.
#
# Por sorte(?) é possivel encontrar apenas o Orca (.msi) para download:
# <http://www.brentnorris.net/orca.msi> versão 3.1.4000.2049
#
# Vamos baixá-lo. Esse passo não precisará ser novamente realizado para outras versões do BrOo, claro. Inclusive, guardando
# o diretório onde o Orca for instalado, mesmo perdendo a configuração do WINE, não seré preciso instalá-lo novamente.
# Ainda bem...

#  site="http://www.brentnorris.net"
   site="http://ftp.ceat.net/pub/windows"
   file="orca.msi" # [[1.9 MiB]]
    log="l.$file.log"
timeout=60 # s
   wait=5  # s
  tries=0  # infinito
wget -w $wait --random-wait -c -t $tries -T $timeout -a $log "$site/$file"

# Instalamos o Orca.
#
# Essa é a terceira parte não automatizável do procedimento. Nem preciso dizer por que... >:-p
#
wine msiexec /i orca.msi
# Instalamos em 'c:\broo-$broo_ver\orca'

# Tentamos rodar, só pra ver a cara dele:
wine orca/Orca.exe
# err:module:import_dll Library MFC42u.dll (which is needed by L"Z:\\home\\arkanon\\broo-[[2.3.0]]\\orca\\Orca.exe") not found

# O Orca, dependendo da versão, utiliza a dll 'mfc42.dll' ou 'mfc42u.dll'.
# Se o sistema não as possui (WINE, basicamente), podem ser encontradas nos links abaixo:
# <http://www.dll-files.com/dllindex/pop.php?mfc42>
# <http://www.dll-files.com/dllindex/pop.php?mfc42u>
# Baixamos, descompactamos e colocamos no diretório onde o Orca foi instalado.

# O download dessas DLL's pode ser automatizado:
   site="http://www.dll-files.com/dllindex/pop.php"
    dll="mfc42u" # [[456 kiB]]
    url=`lynx -dump $site?$dll | grep download.php | awk -F\  '{print$NF}'`
    log="l.$dll.zip.log"
timeout=60 # s
   wait=5  # s
  tries=0  # infinito
wget -w $wait --random-wait -c -t $tries -T $timeout -a $log -O $dll.zip $url
unzip -qo $dll.zip
cat readme.txt
rm -f readme.txt
mv $dll.dll orca

# Agora, provavelmente ele roda :-)



# [Gerando as entradas para o registro]
#
# Essa eh a quarta parte não automatizável. A menos que o Orca tenha parâmetros não documentados, como o fdisk :-p
#
# Precisamos editar o arquivo MSI do BrOo no Orca e exportar a tabela 'Registry'.
wine orca/Orca.exe setup/*.msi
#
#   - menu Tables, opção Export Tables
#   - output directory: o desejado. Provavelmente o default é adequado.
#   - usar nomes longos: caso o nome da tabela tenha mais de 8 caracteres, que não é o nosso caso
#   - na lista de tabelas, selecionar: Registry
#   - ok

# Será gerado um arquivo Registry.idt em . (c:\broo-[[2.3.0]])
idt_file="Registry.idt"

# A tabela Registry contém todas as alterações que o MSI vai realizar no registro do Windows.
# O que precisamos fazer agora, é converter o arquivo .idt para o formato .reg (Windows Registry Patch)
#
# Analizando a estrutura do arquivo .idt, constatamos:
#
#   1. ele tem 6 colunas, separadas por um TAB
#   2. as três primeiras linhas são especiais
#      - a primeira é o rótulo de cada coluna
#        Registry   Root   Key   Name   Value   Component_
#      - a segunda é o tipo e tamanho de dado em cada coluna
#        s72        i2     l255  L255   L0      s72
#      - a terceira diz:
#        Registry   Registry
#        :-p
#   3. somente as colunas 2 *a* 5 nos interessam
#   4. observando a coluna Root, vemos que (pelo menos nesse caso) só apresenta dois valores: 0 e -1
#      Pelo tipo de chaves (coluna Key) que estão associadas a esses valores, concluímos que
#       0 representa o ramo CLASSES_ROOT  do registro
#      -1 representa o ramo LOCAL_MACHINE do registro
#   5. algumas linhas não tem valor na coluna Name. Nesse caso, a experiência de vida :-p nos diz que
#      Name = @ (default value, no registro)
#   6. o diretório de instalação do BrOo é representado por uma string: [INSTALLLOCATION]
#      Todas as strings que representam variáveis, aliás, aparecem entre colchetes. Podemos facilmente indentificá-las:
cat $idt_file | cut -f5 | grep -E "\[.*\]" | sort | uniq
#
#   Então, o que temos que fazer é deixar cada linha do .idt da forma:
#
#     [HKEY_$root\$key]
#     "$name"="$value"
#
#     substituindo as ocorrências de [INSTALLLOCATION] pelo caminho onde o BrOo será encontrado no ambiente Windows.

# Barbada! Mãos à obra:

# Um arquivo .reg tem que ter linhas terminadas com CR+LF, já que pertence ao Mundo M$. Por isso teremos que converter
# qualquer arquivo gerado pelo Linux usando o comando 'todos'. Por outro lado, se ele tiver sido gerado no Windows e
# for trabalhado no Linux (como o caso do arquivo .idt), é preciso convertê-lo usando  o comando 'fromdos'.

# Inicializamos o arquivo .reg
echo -e "REGEDIT4\n" | todos >| setup.reg

idt_str="INSTALLLOCATION"   # string no arquivo .idt que representa o caminho de instalação do aplicativo
win_dir="h:/ooo/$broo_ver"  # caminho de instalação do aplicativo no ambiente Windows, com slashes ao invés de backslashes

# Abaixo, o comando 'cut' seleciona as colunas 2 a 5, considerando o separador padrão de campo (tab)
cat $idt_file \
 | fromdos    \
 | cut -f2-5  \
 | sed '
         1,3d                           # deletamos as 3 primeiras linhas
         s;^0\t;CLASSES_ROOT\t;         # trocamos '0'  no início da linha por CLASSES_ROOT
         s;^-1\t;LOCAL_MACHINE\t;       # trocamos '-1' no início da linha por LOCAL_MACHINE
         s;\t\t;\t@\t;                  # 2 tabs em seqüência só acontecem se a coluna Name é vazia, ou seja, Name = @
         s;\([^\t]*\)\t\([^\t]*\)\t\([^\t]*\)\t\([^\t]*\);[HKEY_\1\\\2]\n§\3§=§\4§\n;
                                        # quebramos cada linha no formato de uma entrada de .reg, mas ao invés de colocar
                                        # entre aspas, colocamos entre §. Isso vai facilitar muito os próximos passos.
                                        # Depois a gente troca por aspas como deve ser.
         s;\['$idt_str'\];£'$win_dir'/; # substituímos a string idt que representa o dir de instalação pelo valor
                                        # desejado. Deixamos um caracter £ temporariamente no lugar, para futura referência
       ' \
 | sed '
      /£/s;\\;/;g    # nas linhas com £, substituímos os backslashes por slashes, para combinar com o valor de $win_dir
         s;//;/;     # se houver alguma ocorrência de 2 slashes em seqüência, substituímos por apenas um
                     # a princípio, isso nunca vai acontecer, nem faria mal se acontecesse. É apenas purismo :-p
      /£/s;/;\\\\;g  # agora, onde houver £, trocamos cada slash por 2 backslashes, deixando o caminho como deve ser num .reg
         s;\";\\\";g # colocamos um backslash à frente de qualquer ocorrência de aspas (por isso que deixamos § no lugar de
                     # aspas no passo anterior)
         s;§;";g     # e agora sim, trocamos os § por aspas.
         s;£;;       # e como não precisamos mais dos £, nos livramos deles.
       ' \
 | todos \
>> setup.reg

# Voilá! Como eu sempre digo: a mão que programa o registro, é a mão que domina o Windows :-)

# Está feito. Agora é só copiar o conteúdo do diretório 'files' para o diretório especificado em $win_dir, e, nas máquinas
# que vão rodar o BrOo, mandar ler o .reg manualmente, ou no Iniciar (Inicializar), ou no RunOnce do registro ou no script
# de logon (bat ou vbs).
#
# Fazer isso é a quinta e última etapa não automatizável (se bem que colocar no script de logon pode ser feito
# automaticamente :-p)
#
# Manual ou automático, o resultado deve ser equivalente a:
regedit /s setup.reg



# [Usando a mesma configuração do BrOo e do OOo no Windows e no Linux]
#
# Ainda resta um pequeno detalhe, que pode ajudar bastante quem usa, ou usou, ou vai usar o OpenOffice.org juntamente
# com o BrOo.
#
# No ambiente Windows, o OOo guarda os arquivos de configuração do usuário em
#    c:\documents and settings\<username>\dados de aplicativos\openoffice.org[[2]]
# ou algo equivalente, dependendo do idioma e da configuração do sistema. Eu, por exemplo, configurei o home dos usuários
# no Linux, como um drive de rede u: no 2003 e dentro dele, um diretório .windows com o conteúdo que ficaria em
# "c:\documents and settings\<username>". Evita o roaming das configurações e poupa muito tempo ;-)
#
# Já o BrOo cria um diretório broffice.org[[2]].
#
# Como o OOo e o BrOo são essencialmente o mesmo software, não há porque manter duas versões da mesma configuração.
#
# Para centralizar isso, no BrOo alteramos o arquivo 'program/bootstrap.ini', e onde diz '$SYSUSERCONFIG/BrOffice.org[[2]]'
# colocamos '$SYSUSERCONFIG/OpenOffice.org[[2]]'. Ou então, no OOo, alteramos o mesmo arquivo, e onde diz
# '$SYSUSERCONFIG/OpenOffice.org[[2]]' colocamos '$SYSUSERCONFIG/BrOffice.org[[2]]'.

bootstrap="files/program/bootstrap.ini"
cat $bootstrap | sed "s;/BrOffice;/OpenOffice;" >| $bootstrap.tmp
mv $bootstrap.tmp $bootstrap

# Ou, ainda mais radical, em ambos os aplicativos, colocamos uma terceira coisa: um caminho de rede apontando para o
# diretório de configuração do OOo do Linux, e no arquivo 'program/bootstraprc' do BrOo para Linux, colocamos o nome do
# diretório do OOo do Linux, e com isso, centralizamos a configuração de tudo: do BrOo e do OOo para Linux e para Windows.
#
# Isso é possivel, pois, como todo o software multi-plataforma BEM FEITO, o BrOo abstrai completamente os caminhos do filesystem
# nos arquivos de configuração, de forma que estes servem tanto para uma plataforma como para outra :-D
#
# Legal né? ;-)

# Ah, e tem mais uma coisa.
#
# (puts, essa dica não acaba mais...)
#
# Também é preciso de um .reg para registrar os tipos padrão do M$ Office, para que sejam abertos com o BrOo.
# Esse é fácil:

cat << EOT | todos >| msoffice.reg
REGEDIT4

[HKEY_CLASSES_ROOT\.pps]
@="opendocument.ImpressDocument.1"

[HKEY_CLASSES_ROOT\.ppt]
@="opendocument.ImpressDocument.1"

[HKEY_CLASSES_ROOT\.xls]
@="opendocument.CalcDocument.1"

[HKEY_CLASSES_ROOT\.xlt]
@="opendocument.CalcDocument.1"

[HKEY_CLASSES_ROOT\.doc]
@="opendocument.WriterDocument.1"

[HKEY_CLASSES_ROOT\.dot]
@="opendocument.WriterDocument.1"

EOT

# E pelo Windows:
regedit /s msoffice.reg



# Vale lembrar que não precisamos de nada que a instalação do BrOo aplicou ao Registro do WINE. Apesar de ser mais fácil
# vasculhar ele que o registro do Windows, ainda não é uma coisa muito simples, principalnmente devido à grande quantidade
# de alterações que são feitas. Tudo o que precisamos está nos dois .reg's acima.

# Agora acho que deu :-)



# :-p
#
# Também dá pra fazer um .reg pra remover todas as entradas que o .reg de setup gerou no registro, um pra configurar os
# visualizadores freeware do M$ Office como aplicativos secundários, outro pra outras coisas, etc, mas como já está mais que
# na hora dessa dica acabar, acho que vou deixar pra outra oportunidade...

[Comentários]

Nome
e-mail
Site
Texto
  • até 7000 caracteres
  • quebra de linha forçada em 76 colunas
  • marcação html ignorada
  • fonte mono-espaçada
  • não há preview