Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
como ejecutar el UninstallString en codigo de innosetup

Holas
tengo dos Uninstallstring de diferentes software instalados
MsiExec.exe /I{B87A2859-3187-4D05-B0D3-A21491128D26}
C:\Archivos de programa\abc\unnistall.exe
lo eh tratado de ejecutar con Exec:

donde el filename es el Uninstallstring ..ninguna de las rutas lo reconoce..bueno en si lo que kiero hacer
es como ejecutar el Uninstallstring desde codigo de innosetup
porque exec no me funciona..gracias por sus respuestas..
Código Delphi [-]
 Param :=  ' /VERYSILENT /SUPPRESSMSGBOXES';
if not Exec(FileName,Param, '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
           begin
            MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + 

SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);
            end
       else
       begin
        CheckListBox1.ItemEnabled[i]:= False;
            //MsgBox('correcto',mbInformation, MB_OK);
       end;
Responder Con Cita
  #2  
Antiguo 14-03-2013
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

¿Y por que no te funciona? ¿Qué mensaje de error obtienes?

Checa este link: InnoSetup: How to automatically uninstall previous installed version?, a lo mejor te sirve...


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Holas ..

este error me sale para en los dos UnnistallString
Código Delphi [-]
Execution of 'MsiExec.exe /I{B87A2859-3187-4D05-B0D3-A21128D26}' failed.El sistema no puede hallar el
archivo especificado


Execution of '''C:\Archivos de programa \Sistema Abc version 1.2\Desinstalar\unins000.exe''' failed.El sistema no puede hallar el
archivo especificado
Responder Con Cita
  #4  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Talking

leere el post ..gracias
Responder Con Cita
  #5  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Holas eh agregado el removeQuotes segun el post que me mando funciono para el segundo UninstallString pero para el primero salio ese error:
Código Delphi [-]

Execution of 'MsiExec.exe /I{B87A2859-3187-4D05-B0D3-A21128D26}' failed.El sistema no puede hallar el
archivo especificado

Código Delphi [-]
 procedure desinstalarTotal(const FileName: string;var i: integer);
 var 
 ErrorCode : integer;
 Param : String;
    begin
     Param :=  ' /VERYSILENT /SUPPRESSMSGBOXES';
    FileName := RemoveQuotes(FileName);
    MsgBox('sin comillas '#13#10#13#10 + FileName, mbInformation, MB_OK);
      if not Exec(FileName,Param, '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
           begin
            MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + 

SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);
            end
       else
       begin
        CheckListBox1.ItemEnabled[i]:= False;
            //MsgBox('correcto',mbInformation, MB_OK);
       end;     
    end;
Responder Con Cita
  #6  
Antiguo 14-03-2013
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Por lo que veo, en el primer caso solo tienes el nombre del archivo ejecutable y no la ruta completa, lo que hace que InnoSetup trate de ejecutar el archivo desde la carpeta actual, el cual al no existir en esta es que te produce el error. Ahí el problema ya viene siendo del instalador de la aplicación original que no creó bien la cadena de desinstalación.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #7  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Holas
eh revisado el regedit y tambien existen varias UninstallString de esa forma

como por ejemplo:
el de : Microsoft Silverlight
UninstallString : MsiExec.exe/X{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}
Responder Con Cita
  #8  
Antiguo 14-03-2013
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Entonces el problema está en que a la función exec le estás enviando un nombre de archivo que nunca va a encontrar, ya que en este viene incluido un parámetro. Lo que tienes que hacer es separar el nombre del archivo del parámetro. Esto es:

Código Delphi [-]
var
  ExeFileName: string;
  ParamStr: string;
  SlashPos: Integer;

begin
  SlashPos := Pos(FileName, '/');
  if SlashPos > 0 then
  begin
    ExeFileName := Copy(FileName, 0, SlashPos - 1);
    ParamStr := Copy(FileName, SlashPos, Length(FileName))
  end
end;

También recuerda que no todos los instaladores son hechos con InnoSetup y no van a soportar los mismos parámetros.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #9  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Talking

Probare el codigo, gracias
Responder Con Cita
  #10  
Antiguo 14-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Wink

en realidad no entiendo que hace rl codigo y como funcionaria en exec para la desisntalacion?
Responder Con Cita
  #11  
Antiguo 14-03-2013
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Lo único que hace ese código es separar el nombre del ejecutable del parámetro, esto es, en cada variable queda una parte del string original.

Código Delphi [-]
FileName := 'MsiExec.exe /I{B87A2859-3187-4D05-B0D3-A21128D26}';

// Se ejecuta el código que te puse y devuelve:
ExeFileName := 'MsiExec.exe';
ParamStr := '/I{B87A2859-3187-4D05-B0D3-A21128D26}';

// Usas las dos variables en la función exec:
if not Exec(ExecFileName, ParamStr, '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
  // ...


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #12  
Antiguo 15-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Holas .. si salio pero en caso de esos UninstallString : MsiExec.exe/X{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}..como son instaladores hechos en windows installer sale la pantalla de desinstalacion pero quisera que fuera en modo silencioso ya que en inno setup tiene sus propios comandos
lo eh estado haciendo asi pero no me borra el archivo..aqui le paso el codigo aunque falta mejorar..
Código Delphi [-]

 procedure desinstalarTotal(const FileName: string;var i: integer);
 var 
 ErrorCode : integer;
 Param : String;
 
 ExecFileName: string;
 ParamStr: string;
 SlashPos: Integer;
    begin
     Param :=  ' /VERYSILENT /SUPPRESSMSGBOXES';
    FileName := RemoveQuotes(FileName);
    
    SlashPos := Pos('/' ,FileName );
    if SlashPos > 0 then
    begin
        ExecFileName := Copy(FileName, 0, SlashPos - 1);
        ParamStr := Copy(FileName, SlashPos, Length(FileName))

    
       if not Exec(ExecFileName, ParamStr + ' /quiet', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
           begin
            MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + 

                SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);
            end
       else
       begin
        CheckListBox1.ItemEnabled[i]:= False;
       end;     
    end
    else
    begin
       if not Exec(FileName,Param, '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
           begin
            MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + 

                SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);
            end
       else
       begin
        CheckListBox1.ItemEnabled[i]:= False;
       end; 
    
    end;
    end;
Responder Con Cita
  #13  
Antiguo 15-03-2013
teecweb teecweb is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 64
Poder: 12
teecweb Va por buen camino
Holas..ya me salio ..igualemnte gracias..aqui le dejo el codigo
Código Delphi [-]
 procedure desinstalarTotal(const FileName: string;var i: integer;var name: String);
 var 
 ErrorCode : integer;
 Param : String;
 
 ExecFileName: string;
 ParamStr: string;
 SlashPos: Integer;
    begin
     Param :=  ' /VERYSILENT /SUPPRESSMSGBOXES';
    FileName := RemoveQuotes(FileName);
    
    SlashPos := Pos('/' ,FileName );
    if SlashPos > 0 then
    begin
        ExecFileName := Copy(FileName, 0, SlashPos - 1);
        ParamStr := Copy(FileName, SlashPos, Length(FileName))

    
      // if not Exec(ExecFileName, '/x {B87A2859-3187-4D05-B0D3-A21491128D26} /quiet', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
        if not Exec(ExecFileName, '/x '+name+' /quiet', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then 
           begin
            MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + 

                SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);
                 CheckListBox1.ItemEnabled[i]:= True;
            end
       else
       begin
        CheckListBox1.ItemEnabled[i]:= False;
       end;     
    end
    else
    begin
       if not Exec(FileName,Param, '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
           begin
            MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + 

                SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);
            end
       else
       begin
        CheckListBox1.ItemEnabled[i]:= False;
       end; 
    
    end;
    end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo Crear varios Accesos Directos o Desktopicon con InnoSetup? danielmania8 Varios 4 01-09-2017 18:26:47
¿Cómo Claves de Registro en Innosetup? danielmania8 Varios 2 02-11-2011 13:54:11
Como ejecutar código almacenado en una base de datos r1d2m3 OOP 15 22-10-2010 17:46:27
como ejecutar codigo html en delphi? (MAJ) Internet 4 22-07-2008 19:27:41
Cómo Utilizar InnoSetup Costeño_sam Conexión con bases de datos 1 26-01-2007 12:47:39


La franja horaria es GMT +2. Ahora son las 04:32:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi