2012-02-16 20 views
6

Tengo este código siguiente con Inno Setup.¿Cómo manejar el archivo .msi con Inno Setup?

¿Pero cómo puedo aplicar esta función similar al archivo .msi?

msiexec /I "\package\file.msi" /qb? ¿Cómo?

procedure AfterMyProgInstall(S: String); 
var 
    ErrorCode: Integer; 
begin 
    {MsgBox('Please wait the libraries are getting installed, ' + 
      'without the libraries it wont work.', mbInformation, MB_OK);} 
    ExtractTemporaryFile(S); 
    {SW_SHOW, SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE, SW_HIDE} 
    ShellExec('', ExpandConstant('{app}\package\' + S), '', '', SW_SHOWNORMAL, 
      ewWaitUntilTerminated, ErrorCode); 
end; 

Respuesta

15

Prueba esto:

ShellExec('', 'msiexec.exe', 
    ExpandConstant('/I "{tmp}\package\file.msi" /qb'), 
    '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode); 

O:

[Files] 
Source: file.msi; DestDir: {tmp}; Flags: deleteafterinstall; 

[Run] 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\file.msi"" /qb"; WorkingDir: {tmp}; 
+0

¿Hay alguna forma para desinstalar automáticamente el msi como parte de la rutina de desinstalación ınnosetup sin embargo? – Nyerguds

3

Nota que: estoy usando Inno Setup 5.5.3 en Windows 7, y que este código es para la secuencia de comandos Inno Setup en la sección de ejecución. Con este código puede ejecutar msi archivos sin ningún problema. Aquí está el código:

[Run] 
Filename: `{src}\PhysX.msi;` Description: Nvidia PhysX; Verb: open; Flags: shellexec postinstall waituntilterminated runascurrentuser skipifsilent 
5

Sobre la base de la respuesta @kobik dio. Tuve que incluir el '.exe' en el nombre de archivo. Al igual que :

if not ShellExec('', 'msiexec.exe', ExpandConstant('{tmp}\package\file.msi'), 
    '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode) 
then 
    MsgBox('Msi installer failed to run!' + #13#10 + ' ' + 
    SysErrorMessage(ErrorCode), mbError, MB_OK); 
+0

** [digitalextremist] (http://stackoverflow.com/users/1169705/digitalextremist) **: Publicar bloques de código en los comentarios elimina los saltos de línea y hace que sea muy difícil de leer. Sin embargo, una respuesta lo deja muy claro. –

+1

@digitalextremist: de acuerdo con Alan, este código definitivamente no sería agradable como parte de un comentario. –

+1

@mike, obviamente kobik "no mostró todo el código". Esto es como mucho un comentario ... Además, ¿no sería mejor dejar que el Windows Shell abra el archivo por sí mismo? Quiero decir, simplemente pasando el nombre de archivo del paquete MSI al parámetro 'Nombre de archivo'. Shell se encargará de esto si Windows Installer está instalado y los paquetes MSI están registrados para que los ejecute. – TLama

Cuestiones relacionadas