Pergunta

Eu estava tentando:

#define CommonAppData {commonappdata}

mas rende:

Erro do compilador

[ISPP] Expressão esperada, mas chave de abertura ("{") encontrada.

Como conseguir isso com o Inno Setup PreProcessor?

Foi útil?

Solução

{commonappdata} não pode ser expandido em tempo de compilação, ou seja,quando o pré-processador é executado porque só é conhecido em tempo de execução:Ele identifica o diretório comum de dados do aplicativo na máquina onde o instalador compilado é executado.

Talvez se você pudesse esclarecer como pretende usar essa definição, poderíamos ajudar.Se, por exemplo, o que realmente lhe interessa não é o diretório comum de dados do aplicativo na máquina de destino, mas aquele na máquina do desenvolvedor, provavelmente você poderá usar isto:

#define CommonAppData GetEnv("COMMONAPPDATA")

Se, no entanto, você pretende usar essa definição para preencher propriedades do Inno que são capazes de expandir a constante em tempo de execução, você deve usar isto:

#define CommonAppData "{commonappdata}"

Espero que isto ajude.

Outras dicas

#define é uma diretiva de pré-processador inno setup, em fase de pré-compilação.Funciona como um pré-processador C.

Ao definir uma variável de pré-processador, forçamos o compilador a ver um script depois que as definições de ispp forem resolvidas:

Inno Setup Preprocessor (ISPP) é um complemento para o compilador Inno Setup de Jordan Russell.Mais tecnicamente falando, é uma camada adicional entre a GUI (seu script Inno Setup) e o compilador, que antes de passar o texto o intercepta e o modifica de uma forma informada usando diretivas especiais no texto do script.

Dito isto, não consigo encontrar uma fonte na documentação nem tenho tempo para pesquisar o código-fonte, mas tenho certeza de que nenhuma variável de configuração não está disponível durante esse tempo de pré-compilação.

Se você deseja apenas que a variável definida contenha a string {commonappdata}, use-o diretamente em sua fonte ...se você deseja que a variável definida tenha o valor de tempo de execução de commonappdata, não me parece possível, porque esse valor é determinado em tempo de execução, pois seu valor atual depende da máquina de destino (versão do Windows, idioma, etc.) .

Se você pensar duas vezes, não faz sentido tentar usar esse valor na pré-compilação ou no tempo de compilação...este é apenas o fato que não traz constantes de configuração como {commonappdata}, {destdir} e coisas assim para a existência...que você pode expressar de maneira padrão em tempo de compilação um valor desconhecido, mas significativo, que será conhecido e avaliado em tempo de execução.

Você provavelmente precisará escapar da cinta.Algo como:

#define CommonAppData {{commonappdata}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top