Pregunta

Estoy creando un instalador usando InnoSetup, y escribir algunos manejadores personalizados en un [Code] sección. En uno de los manejadores, me gustaría poder recuperar el valor del AppName (o, potencialmente, el valor de otros parámetros) definido en el [Setup] sección. ¿Hay alguna forma de hacer esto? He mirado por el documentación, pero no he encontrado nada que me permita hacer esto. Nuestros archivos innoSetup son realmente generados por nuestro proceso de compilación, que unen fragmentos que son comunes entre todos nuestros programas y que son específicos del programa, por lo que sería inconveniente tener que definir constantes en el código para cada programa. ¿Hay alguna forma conveniente de hacer esto?

Estoy buscando algo como

MyString := ExpandConstant('{AppName}');

Excepto {AppName} no es una constante definida. ¿Hay alguna forma de consultar los parámetros definidos en el [Setup] ¿sección?

¿Fue útil?

Solución

Es una constante de tiempo de construcción, no un valor de tiempo de instalación. Para que puedas usar el Preprocesador de configuración de Inno complemento para definir tales constantes. (Puede instalarlo fácilmente a través del Paquete rápido).

Defina la constante:

#define AppName "Excellent Foo App"

Usa la constante en [Setup]:

AppName={#AppName}

Y en el código Pascal, no estoy totalmente seguro de la sintaxis, pero algo así como:

MyString := {#AppName}

Actualizar: Me di cuenta de que uno de mis scripts usa {#emit SetupSetting("AppId")} Lo cual es más fácil. Solución de Brian También descubrió este método y es mejor.

Otros consejos

Inspirado en la respuesta de Craig, estaba mirando la documentación del preprocesador de configuración de Inno (en istool, no disponible en línea hasta donde he encontrado) y encontré la SetupSetting función en el preprocesador.

Se puede usar como así:

MyString := '{#SetupSetting("AppName")}';

Y mientras el [Setup] La sección aparece antes del lugar donde se usa esto (ISPP parece ser solo un pase) e incluye una definición para AppName, esto dará los resultados que quiero, sin tener que definir una macro adicional para cada configuración que queremos extraer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top