##master-page:HelpTemplate
##master-date:Unknown-Date
#format wiki
#language pt

= Introdução =
Alguma vez se questionou sobre o porquê de tantas páginas na distribuição principal? O motivo principal prende-se com o facto de não termos um formato para distribuir as páginas de ajuda num único ficheiro. Ou por que motivo instalar um tema não é fácil, por não saber bem onde colocar os ficheiros?

O instalador de pacotes é uma framework de scripts para o [[WikiMoinMoin|MoinMoin]], que simplifica muito a instalação e a distribuição de extensões para o [[WikiMoinMoin|MoinMoin]].

Pode utilizar este sistema juntar modelos específicos que, por exemplo, desenvolvessem o seu [[WikiMoinMoin|MoinMoin]] para ser um sistema CRM. Ou pode criar os seus plugins/temas instaláveis mais facilmente.

== Instalar um pacote ==
Um ''super utilizador'' (ou seja, um nome de utilizador que pertença à lista cfg.superuser na configuração) do wiki descarregará o seu ficheiro de pacotes de algum sítio e irá enviá-lo para o wiki e clicará em instalar na apresentação dos ficheiros anexados. Adicionalmente, ele podia instalar o pacote utilizando a linha de comando (`MoinMoin/packages.py i package.zip`).

== Criar pacotes ==
Existem várias formas de criar um pacote. Pode utilizar a acção !PackagePages para criar um pacote automaticamente.

Ou pode fazê-lo manualmente: ''cria'' um ficheiro zip que contenha os seus ficheiros e um ficheiro especial `MOIN_PACKAGE`, o script de instalação. O script contém um comando (parece complicado mas na verdade não é; veja os exemplos em baixo) por linha e é executado de cima para baixo.

Script de exemplo:{{{
MoinMoinPackage|1
ReplaceUnderlay|aminhapágina.txt|ConteúdosDeAjuda
AddRevision|aminhapágina2.txt|PáginaPrincipal
InstallPlugin|omeuparser.py|global|parser|omeuparser.py
}}}
 * A primeira linha marca o ficheiro como um ficheiro de script e define a versão do idioma utilizado. Por agora, será 1.
 * A segunda linha substitui a sub-camada da versão da página ConteúdosDeAjuda com o ficheiro `aminhapágina.txt`.
 * A terceira linha adiciona uma nova versão à página PáginaPrincipal, ou seja, altera-a.
 * A quarta linha instala um novo parser.

=== Comandos implementados ===

Tenha em consideração que os comandos não são sensíveis a maiúsculas/minúsculas.

 * `Print|texto`
  * Imprime o texto no resultado do script, o utilizador irá vê-lo depois.
 * `IgnoreExceptions|booleano`
  * Activa a configuração Ignorar Excepções. Se as excepções são ignoradas, o script não parará se uma for encontrada.
 * `SetThemeName|nome de tema`
  * Define o nome do tema a ser alterado a seguir.
 * `CopyThemeFile|nome de ficheiro|tipo|destino`
  * Copia o ficheiro relacionado a um tema (CSS, PNG, etc.) para uma directoria do tema actual.
  * Actualmente é apenas suportando em servidores do tipo standalone.
  * Exemplo: `CopyThemeFile|screen.css|css|screen.css`
 * `InstallPlugin|nome de ficheiro|visibilidade|tipo de plugin|destino`
  * Copia o ficheiro de um plugin a partir do ''nome de ficheiro'' até ao ''destino''. A ''visibilidade'' pode ser `local` que selecciona a pasta de plugins do wiki actual ou `global` que selecciona a pasta do pacote de python do !MoinMoin. O ''tipo de plugin'' pode ser um `parser`, uma `macro`, etc. 
  * Exemplo `InstallPlugin|omeuparser.py|global|parser|omeuparser.py`
 * `AddRevision|nome de ficheiro|nome de página|autor|comentário|trivial`
  * Adiciona uma versão (lida a partir do ficheiro ''nome de ficheiro'') à página ''nome de página''. O ''autor'' especifica o nome do editor e é opcional. O ''comentário'' especifica o comentário da versão e é opcional. O ''trivial'' especifica se a versão é uma edição mínima e é opcional.
  * Exemplo (instala novos ficheiros de modelos):{{{
AddRevision|cliente.tpl|ModeloDeCliente
AddRevision|contacto.tpl|ModeloDeContacto
}}}
 * `DeletePage|nome de página|comentário`
  * Elimina a página ''nome de página'', definindo um ''comentário'' opcionalmente.
  * Exemplo: `DeletePage|PáginaPrincipal`
 * `ReplaceUnderlay|nome de ficheiro|nome de página`
  * Substitui a sub-camada da versão da página. Pode ser utilizada para instalar ou actualizar páginas de sub-camadas.
 * `EnsureVersion|versão|linhas`
  * Cancela o script ou salta linhas se os critérios da versão não forem satisfeitos e se ''linhas'' for especificado.
  * Este exemplo fornece parsers diferentes e instala o correcto: {{{
EnsureVersion|1.3.3|2
InstallPlugin|omeuparser.py_3|global|parser|omeuparser.py
Exit
EnsureVersion|1.3.2
InstallPlugin|omeuparser.py_2|global|parser|omeuparser.py
}}}
 * `Exit`
  * Pára o script.
 * `InstallPackage|Nome de página|Nome de ficheiro`
  * Instala outro pacote que tem de ser um anexo chamado ''Nome de ficheiro'' da página ''Nome de página''.
  * Exemplo: `InstallPackage|PáginaPrincipal|MeuPluginFixe.zip`
 * `AddAttachment|nome de ficheiro no ficheiro zip|nome de ficheiro|nome de página|autor|comentário`
  * Exemplo: `AddAttachment|2_anexo|música.wav|PáginaPrincipal|HansMustermann|é uma música de exemplo.`
 * `DelAttachment|nome de ficheiro|nome de página|autor|comentário`
  * Exemplo: `DelAttachment|música.wav|PáginaPrincipal|HansMustermann|teste`
 * `RenamePage|nome de página|novo nome de página|autor|comentário`
  * Renomeia um nome de página com um novo nome de página
