visual tutorial studio setup script inno for descargar installer inno-setup

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.