InnoSetup: Ottenere NomeApp nella sezione [Codice]
-
20-09-2019 - |
Domanda
Sto creando un programma di installazione utilizzando InnoSetup , e la scrittura di alcuni gestori personalizzati in una sezione [Code]
. In uno dei gestori, vorrei essere in grado di recuperare il valore del AppName
(o, potenzialmente, il valore di altri parametri) definito nella sezione [Setup]
. C'è un modo per me di fare questo? Ho guardato anche se il , ma non ho trovato nulla che mi permettesse di fare questo . I nostri file InnoSetup sono in realtà generati dal nostro processo di generazione, che cuce insieme i frammenti che sono comuni tra tutti i nostri programmi e che sono programma specifico, quindi sarebbe scomodo dover definire costanti nel codice per ogni programma. Esiste un modo conveniente per fare questo?
Sto cercando qualcosa di simile
MyString := ExpandConstant('{AppName}');
Ad eccezione {AppName}
non è una costante definita. C'è qualche modo per interrogare per i parametri definiti nella sezione [Setup]
?
Soluzione
E 'un costante accumulo di tempo, non un valore al momento dell'installazione. Quindi è possibile utilizzare il Inno Setup preprocessore add-on per definire tali costanti. (È possibile installarlo facilmente tramite il QuickStart pacchetto ).
Definisci la costante:
#define AppName "Excellent Foo App"
Con la costante in [Setup]
:
AppName={#AppName}
E nel codice Pascal, non sono del tutto sicuro della sintassi, ma qualcosa di simile:
MyString := {#AppName}
Aggiornamento: ho realizzato uno dei miei script utilizza {#emit SetupSetting("AppId")}
che è più facile. soluzione di Brian anche scoperto questo metodo, ed è meglio.
Altri suggerimenti
Ispirato dalla risposta di Craig, stavo guardando la documentazione di installazione preprocessore Inno (in ISTool, non disponibile on-line, per quanto ho trovato), e mi sono imbattuto la funzione SetupSetting
nel preprocessore.
Può essere usato come:
MyString := '{#SetupSetting("AppName")}';
E finché la sezione [Setup]
appare prima il luogo in cui questo è usato (ISPP sembra essere solo un passaggio), e include una definizione per AppName
, questo darà i risultati che voglio, senza dover definire una macro in più per ogni impostazione vogliamo estrarre.