É possível automatizar a criação de um pacote de configuração do Inno com ANT?
-
05-07-2019 - |
Pergunta
Estou criando um aplicativo RCP Eclipse.
Estou seguindo o conselho de Joel no seguinte artigo "Construções diárias são seus amigos":
http://www.joelonsoftware.com/articles/fog0000000023.html
Então, eu escrevi um bom script de construção que cria um produto RCP Eclipse e que executa testes de unidade no código. Todos os resultados são distribuídos para a lista do desenvolvedor (após alguns resmungos). Agora, na minha próxima etapa, quero criar o pacote de configuração que normalmente criei manualmente usando o compilador de configuração do Inno.
A questão é: como eu ficaria por aí criando este pacote automaticamente? Acho que posso gerar o arquivo de configuração do Inno automaticamente a partir da Ant e, em seguida, invocar o compilador da linha de comando, mas não sei se isso é possível.
Alguma dica para esta tarefa? Talvez qualquer outro aplicativo de configuração que possa ser usado da Ant?
Solução
Claro que seu projeto fácil, Inno é um arquivo de texto sem formatação, para que você possa editar o script do set -Script facilmente pela ANT, no entanto, eu recomendaria criar um pequeno arquivo de inclusão separado pelo seu script. Você pode armazenar "variáveis", como o número de versão+compilação que você mostra no início da configuração.
Coloque esta linha no seu Setupper:
#include "settings.txt"
e fazer configurações.txt tem algo assim
#define myver=xxx.xxx
#define tags
Agora você não precisa tocar no código real do script de construção.
Abaixo está um snippet do meu script de compilação para compilar o set -super. Você precisa executar o arquivo em lote de formiga assim:
<exec dir="." executable="cmd" os="Windows NT">
<arg line="/c build.bat"/>
</exec>
amostra em lote build.bat:
set isxpath="c:\program files\inno setup 5"
set isx=%isxpath%\iscc.exe
set iwz=myproj.iss
if not exist %isx% set errormsg=%isx% not found && goto errorhandler
%isx% "%iwz%" /O"%buildpath%" /F"MySetupper.exe" >>%logfile%
goto :eof
Outras dicas
Outro belo truque ao automatizar o edifício do instalador é usar o GetFileVersion
Macro pré -processador (ISPP). Dessa forma, você não terá que duplicar os números de versão de seus arquivos (binários) em forma de codificação (como no Tom's settings.txt
) - O compilador do instalador simplesmente o lerá a partir dos recursos da versão dos arquivos dessa maneira. Por exemplo:
#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)
[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup
Além disso, você pode encaminhar símbolos para o compilador através do /d
Switch de linha de comando, por exemplo:
iscc.exe /dSpecialEdition ...
e então usá -los posteriormente em ifdef
s para criar diferentes tipos de instalador (Exemplo estúpido a seguir):
[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif