Agregue texto a 'Página preparada' en Inno Setup
-
10-07-2019 - |
Pregunta
Agregué algunas páginas personalizadas a mi instalador. Estas páginas recopilan algunos datos del usuario y del disco, y me gustaría mostrar estos datos al usuario antes de que comience el paso final de instalación. Inno Setup tiene la página 'Listo para instalar' exactamente para este propósito.
¿Cómo puedo agregar texto a esta página? Por defecto me muestra:
Destination location:
C:\Program Files\MyProgram
Me gustaría agregar un texto aquí. ¿Es posible?
Solución
Lo encontré ... http://www.innosetup.org/ishelp/topic_scriptevents.htm :
Función
UpdateReadyMemo (Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
Si el programa de instalación encuentra la función de evento
UpdateReadyMemo
en el script Pascal, se llama automáticamente cuando la página del asistente Listo para instalar se convierte en la página activa. Debería devolver el texto que se mostrará en la nota de configuración en la página del asistente Listo para instalar como una sola cadena con líneas separadas por el parámetroNewLine
. El parámetroSpace
contiene una cadena con espacios. El programa de instalación utiliza esta cadena para sangrar la configuración. Los otros parámetros contienen las cadenas (posiblemente vacías) que Setup habría utilizado como secciones de configuración. El parámetroMemoDirInfo
, por ejemplo, contiene la cadena de la sección Directorio seleccionado .
Otros consejos
Modifique el siguiente código:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpReady then
begin
Wizardform.ReadyMemo.Lines.Add(''); { Empty string }
Wizardform.ReadyMemo.Lines.Add('Setup HP-UX test created by Armand');
end;
end;
Además, si solo desea cambiar los mensajes preexistentes a algo menos genérico, puede cambiarlos en su sección [Mensajes]:
es decir
[Messages]
ReadyMemoDir=Server location:
Los mensajes predeterminados son:
- WizardReady
- ReadyLabel1
- ReadyLabel2a
- ReadyLabel2b
- ReadyMemoUserInfo
- ReadyMemoDir
- ReadyMemoType
- ReadyMemoComponents
- ReadyMemoGroup
- ReadyMemoTasks
Puede conectarse al proceso de configuración de ReadyMemo
WizardPage
utilizando esta función:
Función
UpdateReadyMemo (Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
Si el programa de instalación encuentra la función de evento
UpdateReadyMemo
en el script Pascal, se llama automáticamente cuando la página del asistente Listo para instalar se convierte en la página activa. Debería devolver el texto que se mostrará en la nota de configuración en la página del asistente Listo para instalar como una sola cadena con líneas separadas por el parámetroNewLine
. El parámetroSpace
contiene una cadena con espacios. El programa de instalación utiliza esta cadena para sangrar la configuración. Los otros parámetros contienen las cadenas (posiblemente vacías) que Setup habría utilizado como secciones de configuración. El parámetroMemoDirInfo
, por ejemplo, contiene la cadena de la sección Directorio seleccionado .
Documentos oficiales en: http://www.innosetup.org/ishelp/topic_scriptevents.htm
Aquí hay una implementación de ejemplo simple que agrega una sola línea al contenido predeterminado del ReadyMemo
:
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
begin
Result := ''
if MemoUserInfoInfo <> '' then begin
Result := MemoUserInfoInfo + Newline + NewLine;
end;
if MemoDirInfo <> '' then begin
Result := Result + MemoDirInfo + Newline + NewLine;
end;
if MemoTypeInfo <> '' then begin
Result := Result + MemoTypeInfo + Newline + NewLine;
end;
if MemoComponentsInfo <> '' then begin
Result := Result + MemoComponentsInfo + Newline + NewLine;
end;
if MemoGroupInfo <> '' then begin
Result := Result + MemoGroupInfo + Newline + NewLine;
end;
if MemoTasksInfo <> '' then begin
Result := Result + MemoTasksInfo + Newline + NewLine;
end;
Result := Result + 'My custom string';
end;
Para su información: intenté agregar este código a la respuesta aceptada, pero se rechazó y me dijeron que escribiera un comentario o una nueva respuesta.