Innostup: Obtendo o AppName na seção [Código
-
20-09-2019 - |
Pergunta
Estou criando um instalador usando Innostup, e escrever alguns manipuladores personalizados em um [Code]
seção. Em um dos manipuladores, eu gostaria de poder recuperar o valor do AppName
(ou, potencialmente, o valor de outros parâmetros) definido no [Setup]
seção. Existe uma maneira de eu fazer isso? Eu olhei embora o documentação, mas não encontrei nada que me permitisse fazer isso. Nossos arquivos Innostup são realmente gerados pelo nosso processo de construção, que costura fragmentos comuns entre todos os nossos programas e que são específicos do programa, por isso seria inconveniente ter que definir constantes no código para cada programa. Existe alguma maneira conveniente de fazer isso?
Estou procurando algo como
MyString := ExpandConstant('{AppName}');
Exceto {AppName}
não é uma constante definida. Existe alguma maneira de consultar os parâmetros definidos no [Setup]
seção?
Solução
É uma constante de tempo de construção, não um valor de tempo de instalação. Então você pode usar o PROCESSOR DE CONFIGURAÇÃO INNO complemento para definir essas constantes. (Você pode instalá -lo facilmente através do Pacote QuickStart).
Defina a constante:
#define AppName "Excellent Foo App"
Use a constante em [Setup]
:
AppName={#AppName}
E no código Pascal, não tenho certeza da sintaxe, mas algo como:
MyString := {#AppName}
Atualizar: Eu percebi que um dos meus scripts usa {#emit SetupSetting("AppId")}
o que é mais fácil. Solução de Brian Também descobri esse método e é melhor.
Outras dicas
Inspirado pela resposta de Craig, eu estava olhando para a documentação do pré -processador da Inno Setup (no ISTool, não disponível on -line, tanto quanto eu encontrei), e me deparei com o SetupSetting
função no pré -processador.
Pode ser usado como assim:
MyString := '{#SetupSetting("AppName")}';
E enquanto o [Setup]
A seção aparece antes do local onde isso é usado (o ISPP parece ser apenas um passe) e inclui uma definição para AppName
, isso fornecerá os resultados que eu quero, sem precisar definir uma macro extra para cada configuração que queremos extrair.