Ver la Versión Completa : Ejecutar archivos CAB desde Delphi
Pablo Carlos
08-03-2005, 21:50:27
Hola gente... para ejecutar otra aplicación desde delphi podemos usar los siguiente:
WinExec(PChar('C:\LocalizaciónExe\exe'), SW_SHOWNORMAL);
Hasta aqui todo bien... ahora para un archivo de windows tipo CAB (esas cajitas...) no funciona el WinExec...
1.- alguien sabe porqué y cómo ejecutarlos desde mi prg. (Este archivo estaría alojado en la lectora de cd junto al setup del prg) :confused:
2.- ¿Se puede alojar en mi setup esos archivos cab y al instalar el prg se instale los cab? :confused:
Muchas gracias... saludos
Neftali [Germán.Estévez]
09-03-2005, 09:26:13
Hasta aqui todo bien... ahora para un archivo de windows tipo CAB (esas cajitas...) no funciona el WinExec...
1.- alguien sabe porqué y cómo ejecutarlos desde mi prg. (Este archivo
estaría alojado en la lectora de cd junto al setup del prg) :confused:
2.- ¿Se puede alojar en mi setup esos archivos cab y al instalar el prg se instale los cab?
Los archivos CAB no son ejecutables, por lo tanto no se "deberían" ejecutar o instalar como comentas. Los CAB son archivos comprimidos, por lo tanto debes tener una utilidad de descompresión asociado a descomprimirlos, pero no funcionará directamente.
Si buscas por interner existen muchos componentes que permiten descomprimir ficheros CAB; Por ejemplo:
http://www.ziptv.com/
o éste
http://sourceforge.net/projects/tpabbrevia/
Pablo Carlos
10-03-2005, 22:22:44
Gracias por responder...
Los archivos CAB no son ejecutables
Totalmente de acuerdo
por lo tanto no se "deberían" ejecutar o instalar como comentas
Pero haciendole doble click en el archivo se ejecutan como un exe
Los CAB son archivos comprimidos, por lo tanto debes tener una utilidad de descompresión asociado a descomprimirlos.
y... eso... como asocia Windows al hacerle doble click?
Abria que investigar por alli... me meto en ese tema... si lo encuentro lo hare saber...
Saludos Pablo
argami
11-03-2005, 14:17:07
el tema de las asociaciones es como un fichero txt que de por si no hace nada pero si tu haces dblclick te abre el notepad.
si lo que quieres es abrir un fichero segun su asociacion usa la funcion ShellExecute de la api en Delphi 7 creo recordar que esta en ShellApi.
Ejemplo:
ShellExecute(Handle, 'open', 'C:\Pathfichero.cab', nil, nil, SW_SHOWNORMAL);
espero que esto te ayude.
PD: si quieres revisar con que esta asociado tu programa en opciones de carpeta (en cualquier ventana del windows en herramientas) tienes una pestaña que se llama tipos de archivo puedes buscar el cab dentro de la lsta.
Pablo Carlos
13-03-2005, 17:35:27
Prometido y cumplo...
De esta manera ejecuto e instalo los .CAB
procedure TfrmPath.InstalarAgente;
procedure RunAndWaitShell(Ejecutable,
Argumentos:string
;Visibilidad:integer);
var
Info:TShellExecuteInfo;
pInfo:PShellExecuteInfo;
exitCode:DWord;
begin
pInfo:=@Info;
with Info do
begin
cbSize:=SizeOf(Info);
fMask:=SEE_MASK_NOCLOSEPROCESS;
wnd:=Handle;
lpVerb:=nil;
lpFile:=PChar(Ejecutable);
lpParameters:=Pchar(Argumentos+#0);
lpDirectory:=nil;
nShow:=Visibilidad;
hInstApp:=0;
end;
ShellExecuteEx(pInfo);
repeat
exitCode := WaitForSingleObject(Info.hProcess,500);
Application.ProcessMessages;
until (exitCode <> WAIT_TIMEOUT);
end;
begin
RunAndWaitShell('c:\Genie','', Sw_ShowNormal);
RunAndWaitShell('c:\MSagent','', Sw_ShowNormal);
end;
Gracias a todos los que respondieron
Saludos bye
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.