installer - tutorial - Instalación Inno: instale otro instalador y ejecútelo antes de continuar con mi instalación
inno setup version 5.5 9 (3)
Esta es la parte [Archivos] de mi código hasta ahora:
[Files]
Source: "other_installer.exe"; DestDir: "{app}"
Source: "myprogram.exe"; DestDir: "{app}"
Source: "data.dat"; DestDir: "{app}"
Source: "otherdata.dat"; DestDir: "{app}"
Mi programa depende de otro programa para ejecutar. He incluido el instalador para este programa ("other_installer.exe") en mi instalador. Lo que me gustaría hacer es iniciar este instalador tan pronto como se haya copiado, antes de continuar con "myprogram.exe" y el resto.
Busqué en Google y encontré la documentación de BeforeInstall en la Ayuda de instalación de Inno, pero no tienen un ejemplo de cómo ejecutar otra aplicación. Creo que debería ser algo como esto:
[Files]
Source: "other_installer.exe"; DestDir: "{app}"
Source: "myprogram.exe"; DestDir: "{app}"; BeforeInstall: // RUN OTHER_INSTALLER.EXE //
Source: "data.dat"; DestDir: "{app}"
Source: "otherdata.dat"; DestDir: "{app}"
Mejor por su camino, podría ser el parámetro AfterInstall
. La siguiente secuencia de comandos ejecutará la función RunOtherInstaller
justo después de que se OtherInstaller.exe
la entrada del archivo OtherInstaller.exe
. Allí intenta ejecutar el archivo OtherInstaller.exe
recién instalado y, si falla, informa de un mensaje de error al usuario. Tenga en cuenta que no puede interrumpir la instalación desde esa función, por lo que no es seguro hacer lo que quiere de esta manera:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}/My Program
[Files]
Source: "OtherInstaller.exe"; DestDir: "{app}"; AfterInstall: RunOtherInstaller
Source: "OtherFile.dll"; DestDir: "{app}"
[Code]
procedure RunOtherInstaller;
var
ResultCode: Integer;
begin
if not Exec(ExpandConstant(''{app}/OtherInstaller.exe''), '''', '''', SW_SHOWNORMAL,
ewWaitUntilTerminated, ResultCode)
then
MsgBox(''Other installer failed to run!'' + #13#10 +
SysErrorMessage(ResultCode), mbError, MB_OK);
end;
Otro buen momento para ejecutar los instaladores de requisitos previos es en la función de evento PrepareToInstall
. (Consulte los scripts de ejemplo proporcionados con Inno para la estructura básica y el código de TLama para la ejecución real).
La principal ventaja de PrepareToInstall
es que le permite manejar los errores y reiniciar las solicitudes del instalador secundario; el uso de AfterInstall
no lo hace.
La principal desventaja de esto es que tiene que ExtractTemporaryFile
manualmente todo el ExtractTemporaryFile
sea necesario para ejecutar la instalación secundaria, ya que esto ocurre antes de que se extraigan los archivos.
Puede usar AfterInstall, busque esto en la Ayuda. Cuando solo se copie el archivo, lanzaré la función / procedimiento que puso como "AfterInstall:".
En esta función / procedimiento, use Exec e inicie el otro instalador.