PDA

Ver la Versión Completa : como ejecutar archivo .msi


nosferatu177
07-06-2007, 21:22:39
hola a todos, solo haciendo la aclaracion, esta pregunta ya la habia formulado en otra seccion,solo q navegando en los foros creo q va en esta jeje:D, mi pregunta es: como puedo desde mi aplicacion mandar ejecutar el mysql-connector-odbc-3.51.14-win32, ya intente con
{$ifdef mswindows}
WinExec('..\Instalacion\mysql_odbc\mysql.msi', SW_SHOW);
{$endif}
ó
ShellExecute('msiexec /i "$INSTDIR\..\Instalacion\mysql_odbc\mysql.msi');
(cambie el nombre del archivo pa q fuera mas corto ;) )
pero no me funciona :(, agradeceria toda ayuda :o, gracias de antemano:D

jake
07-06-2007, 22:41:07
Bueno , por lo que dices es parecido a lo que hice en una aplicación donde necesitaba detectar si estaba instalado el driver odbc de Visual foxprox, leia el registro si no estaba , entonces mandaba a ejecutar el VFPODBC.msi , por supuesto que mi aplicacion debia de esperar que terminase , eso se hace con una función que me bajé de trucomania , poniendo un .bat , así:
WinExecAndWait32('Exec.bat',0);
disculpa si no me explico .
nota:WinExecAndWait32 es la funcion

juanlaplata
08-06-2007, 18:42:00
WinExec(PChar(path), SW_SHOW);Creo que asi funciona.

jake
08-06-2007, 18:51:22
si eso funciona bien, está claro que ese es el error de pq no debe de correr lo que nosferatu177 plantea pq el pone solamente el path si pchar , ahora bien aún así no se ejecutaría pq es un archivo msi el que intenta levantar desde su aplicación ,por ejemplo eso me pasó a mi y lo que hice fue ejecutar un archivo .bat el cúal contiene el nombre del archivo msi , además creo que winexec no espera que termine la otra aplicación , bueno a menos que se desee hacer eso

nosferatu177
08-06-2007, 19:32:22
q onda chavos gracias por las aportaciones; como les comente ya lo intente con shellexecute y winexec para ese tipo de archivo asi:
ShellExecute(Form1.Handle,nil,'directorio..\mysql.msi',nil,nil,SW_NORMAL); o asi:
WinExec(PChar('directorio..\mysql.msi'),SW_SHOW);
y no funciona :( , jake podrias ser un poco mas especifico,te lo agradeceria mucho :) es q como q no entiendo eso del .bat; dentro del .bat pongo la instruccion para ejecutarlo?? y desde delphi ejecuto el .bat o q onda?:confused:; gracias:):)

PD no importa sino espera a q termine la otra aplicacion :)

roman
08-06-2007, 19:39:35
ShellExecute(0, 'open', 'ruta\al\archivo.msi', nil, nil, SW_SHOW);


// Saludos

jake
08-06-2007, 20:20:17
pues si está muy bien lo que mostró román ,y es más elegante pues no hay que hacer lo del exec.bat , que en fin,para que entiendas esta otra vía lo que hay que poner en el mismo es: directorio..\mysql.msi y más nada


WinExec(PChar(Exec.bat), SW_hide);



Saludos

nosferatu177
08-06-2007, 21:09:28
:D:)gracias por la ayuda, ya quedo!! y funciona con las 2 opciones :D:D