Aplicativos que somente usam arquivos na
própria pasta são portáteis naturais,
mais a maioria deles usam registro, arquivos e pastas no computador local (pc do
usuário).
Preparando o portátil
Pegue os arquivos do aplicativo
Primeiro de tudo devemos extrair os arquivos do programa
de instalação (setup), com o Universal Extractor. Caso seja
necessário a instalação do aplicativo
monitere-a com o Total Uninstall (fazendo assim
você saberá o que será
necessário para funcionamento do portátil).
Este é um simples exemplo usando o CCleaner, baixe a versão
portátil e descompacte em
CCleanerPortable\App\CCleaner.
Monitorando execução e/ou
instalação
Execute o Total Uninstall, clique
em Instalar, depois em Navegar e selecione
CCleanerPortable\App\CCleaner\CCleaner.exe
Clique em Seguinte para criar uma nova fotografia (captura/snapshot)
Clique em Seguinte para executar a instalação do
aplicativo
CCleaner é executado em inglês. Veja em
Opções/Avançado (Options/Advanced) que
a ultima
opção salvar todas as
configurações
não pode ser desabilitada (devido ao arquivo portable.dat).
Selecione seu idioma em
Opções/Configurações
(Options/Settings) e
feche o CCleaner.
Clique em Seguinte no Totall Uninstall para encontrar as
alterações.
Feche para ver as mudanças:
Não há mudanças! CCleaner é
um portátil natural.
Prepararando o lançador (launcher)
Neste caso o lançador é
inútil, mais pode ser usado pra mover
configurações para a pasta Data
Se não houver os arquivos portable.dat e ccleaner.ini, o
CCleaner usa o registro HKEY_CURRENT_USER\Software\Piriform.
Uma boa seria forçar o uso do arquivo ini para criar o
portátil.dat, outra seria mover o arquivo ini para a pasta
Data
para manter as configurações quando atualizar.
Lançador também pode gravar dados em CCleaner.ini
para fixar algumas configurações:
[Options]
Language=1046
BackupDir=L:\PortableApps\CCleanerPortable\Backups
1046 é a id decimal do Brasil e pode ser
retornada
através do GetUserDefaultLangID do kernel32,
nós
vamos utilizar ela para fixar o português do Brasil como
idioma
padrão.
Lançar aplicativo
O lançador é um pequeno executavel
exe que deve
ficar na pasta *Portable (pasta raiz do portátil) ele
é compilado com o NSIS.
Baixe e instale o NSIS.
Lançador básico
Copie o código abaixo e cole para o Notepad++
e salve com o nome CCleanerPortable.nsi na pasta CCleanerPortable.
Clique com o botão direito do mouse sobre
CCleanerPortable.nsi e
escolha a opção Compile NSIS Script,
será criado o
lançador
WindowIcon Off
SilentInstall Silent
AutoCloseWindow True
OutFile CCleanerPortable.exe
Section
ExecWait "$EXEDIR\App\CCleaner\CCleaner.exe"
SectionEnd
- lançador não exibe o
ícone
- lançador não exibe uma tela de
saída do próprio
- lançador é automaticamente
fechado quando o aplicativo for encerrado
- nome do lançador será
CCleanerPortable.exe
Na seção ExecWait executa o
aplicativo e espera
ser finalizado o CCleander.exe. ($EXEDIR representa o caminho onde
está sendo executado o lançador)
Construindo lançador
Baixe e extraia CCleanerPortableSources
na sua pasta CCleanerPortable.
Abra com o Notepad++ CCleanerPortable_1.nsi.
Sempre que usarmos constantes e funções, devemos
estruturar uma seção chamada de principal
(Section Main),
ela é um cronograma com a ordem das
funções
e etc.
Linhas que começam com ponto e vírgula
são
comentários/informações e
não são
compiladas.
Leia os comentários para melhor compreensão.
Lançador Completo
Abra CCleanerPortable_2.nsi com o Notepad++.
Adicionado: Informações sobre versão,
checagem do
sistema antes de inicializar, customização,
imagem/som de
inicialização (splash) e mais alguns
parâmetros.
Você vai precisar do FindProcDLL plug-in baixe e o
instale.
Lançador Final
Abra CCleanerPortable_3.nsi com o Notepad++.
O código é igual aos 2 anteriores,
porém a parte
comum está no PortableApp.nsh e será
incluída
através do !include.
Backup e restauração de chaves do
registro
Registry plug-in
Você vai precisar do NSIS plug-in for registry para
compilar. Baixe, extraia e o instale.
Baixe o audacity-win-1.2.6.exe e
descompacte para AudacityPortable\App\Audacity
Monitore a execução do audacity.exe com o Total
Uninstall (não associe a extenção .AUP)
Abra um arquivo de áudio e exporte como MP3. A mesma
configuração pode ser feita através de
Editar, Preferências, Formatos de arquivo:
Configurações de Exportação
em MP3:
Econtrar Plug-in e selecione o local onde está o lame_enc.dll
Em Pastas: Pasta de arquivos temporários selecione um local
para a pasta temporária
Feche e veja as mudanças:
Exporte as alterações do registro no formato
Win9x/NT4 (.reg):
REGEDIT4
[HKEY_CURRENT_USER\Software\Audacity\Audacity]
"WantAssociateFiles"=dword:00000000
[HKEY_CURRENT_USER\Software\Audacity\Audacity\Directories]
"TempDir"="C:\\DOCUME~1\\Admin\\LOCALS~1\\Temp\\AudacityPortableTemp\\"
[HKEY_CURRENT_USER\Software\Audacity\Audacity\MP3]
"MP3LibPath"="L:\\PortableApps\\AudacityPortable\\App\\LAME\\lame_enc.dll"
Somente entradas importantes devem ser gravadas
através
do lançador (outras configurações
são feita
pelo próprio programa e ficam guardadas na pasta Data).
Baixe o Reg2Nsis
e instale será ativado o contexto menu. Clique com
botão
direito do mouse sobre o arquivo .reg e selecione a
opção Convert to nsis script
será gerado um
código convertido no formato .nsh abra ele com Notepad++:
WriteRegDWORD HKEY_CURRENT_USER "Software\Audacity\Audacity" "WantAssociateFiles" 0x0
WriteRegStr HKEY_CURRENT_USER "Software\Audacity\Audacity\Directories" "TempDir" \
"C:\DOCUME~1\Admin\LOCALS~1\Temp\AudacityPortableTemp\"
WriteRegStr HKEY_CURRENT_USER "Software\Audacity\Audacity\MP3" "MP3LibPath" \
"L:\PortableApps\AudacityPortable\App\LAME\lame_enc.dll"
C:\DOCUME~1\Admin\LOCALS~1\Temp
este diretório pode ser representado por: $TEMP
L:\PortableApps\AudacityPortable o
diretório onde contém o lançador pode
ser representado por: $EXEDIR
Baixe e extraia AudacityPortable
Abra AudacityPortable_1.nsi com Notepad++
Monitorando com o Total Uninstall nós vimos que foi usado
apenas uma chave pelo Audacity HKEY_CURRENT_USER\Software\Audacity
mais as vezes outros aplicativos podem usar mais que uma chave.
BackupLocalKeys
HKEY_CURRENT_USER\Software\Audacity é
renomeado para
HKEY_CURRENT_USER\Software\Audacity-BackupByAudacityPortable.
RestorePortableKeys
As configurações são
salvas em
Data\Audacity.reg ao fechar, quando o portátil é
executado novamente as configurações do
usuário
são restauradas.
Init
Esta função força
configurações necessárias do
portátil,
tal como a atualização dos locais onde
estão
armazenados os arquivos.
Close
Ao fechar o Audacity: A pasta temporária
é apagada.
BackupPortableKeys
Configurações são
salvas em Data\Audacity.reg.
RestoreLocalKeys
Configurações que estão
em Data\Audacity.reg são restauradas.
Backup e restauração de pastas
Baixe icp_setup.exe e extraia os
arquivos com o Universal Extractor ou Inno Setup Unpacker
Copie o conteúdo que esta em dentro de {app} e cole para
InstantColorPickerPortable\App\InstantColorPicker
o conteúdo que está dentro de {userappdata}\Young
Smart Software mova para
InstantColorPickerPortable\Data\InstantColorPicker
"Instale" icp.exe com Total Uninstall
Feche e veja as mudanças:
ICP só usa a pasta Young Smart Software
em C:\Documents and Settings\Admin\Application Data
($APPDATA para NSIS)
Baixe e extraia InstantColorPickerPortable.
Abra o InstantColorPickerPortable_Lite.nsi com o Notepad++
BackupLocalDirs
Em Application Data, a pasta Young
Smart Software folder é renomeada para Young
Smart Software--BackupByInstantColorPickerPortable
RestorePortableDirs
As configurações do
portátil estão em Data\InstantColorPicker
e são copiadas para Application Data\Young Smart
Software.
(Nós temos que usar a função CopyFiles
(Copiar
arquivos) no lugar da da função Rename (Renomar)
por
causa que os locais são diferentes).
BackupPortableDirs
Ao fechar o ICP, é feita a
operação reversa de RestorePortableDirs.
RestoreLocalDirs
Reverso de BackupLocalDirs
Backup e restauração de arquivos
É feito do mesmo jeito do
backup/restauração de pasta. Baixe este modelo
nele você vai encontrar ações feitas no
registro, pasta e arquivos.
Se você está portablizando um aplicativo que
contem
diversas ações, você deve copiar as
linhas
alternando somente alguns parâmetros, veja modelo abaixo
realizando
ação em duas chaves do registro:
!define REGKEY1 "HKEY_LOCAL_MACHINE\SOFTWARE\MyProg"
!define REGKEY2 "HKEY_CURRENT_USER\Software\MyProg"
;...
${registry::DeleteKey} "${REGKEY1}-BackupBy${APP}Portable" $R0
${registry::MoveKey} "${REGKEY1}" "${REGKEY1}-BackupBy${APP}Portable" $R0
${registry::DeleteKey} "${REGKEY2}-BackupBy${APP}Portable" $R0
${registry::MoveKey} "${REGKEY2}" "${REGKEY2}-BackupBy${APP}Portable" $R0
;...
A remoção do backup
não é
necessariamente precisa, mais se fora apagada não
há como recuperar.
Apague constantes, funções e chamadas (calls) que
não forem utilizados.
Complementos
Leia o manual do NSIS Capítulo 4
(Inglês): Tendo
como referência Funções,
Instruções,
Variáveis, Constantes...
NSIS Constantes
Em muitas constantes ($APPDATA, $SYSDIR...) que
são
definidas pelo NSIS boa parte dos valores depende da versão
do
Windows e da localização.
Compile Constants.nsi
e execute Constants.exe que irá gerar Constants.ini
que
mostra as constantes, e os locais que elas representam em seu
computador. Elas
mostram caminhos do usurário atual e de todos os
usuários, através do SetShellVarContext
current
(atual) ou all (todos).