PDA

Ver la Versión Completa : Averiguar si está instalado WINZIP en un PC


Jose Manuel
06-11-2006, 17:19:14
Hola quisiera saber como puedo averiguar si en el PC que corre un programa hecho en Delphi6, tiene instalado el WINZIP.

La aplicación tiene que llamar al WINZIP, mediante la siguiente instrucción:
ShellExecute(Handle, 'Open', 'WinZip32.exe', PCHAR(params),
PCHAR(dir_exe), SW_NORMAL);
y quisiera saber de que forma puedo averiguar antes si está instalado.

Un saludo.
Jose Manuel

roman
06-11-2006, 17:32:13
Pues la misma llamada te dirá si está o no instalado. Consulta la documentación de ShellExecute, si te devuelve un código menor o igual que 32 quiere decir que ocurrió algún error y actúas en consecuencia.

// Saludos

Jose Manuel
06-11-2006, 19:18:39
Gracias por la ayuda, ahora necesito saber como puedo averiguar el Path del Winzip32.exe, pues quiero ejecutar esta instrucción:

IF ShellExecute(Handle, 'Open', PCHAR(cFileName),
PCHAR(params), PCHAR(dir_exe), SW_NORMAL) <= 32 then
Application.MessageBox('Error: no se ha podido actualizar el fichero',
'Error', MB_ICONEXCLAMATION);
en la cual cFileName debe tener el PATH donde está instalado el winzip32.exe, por ejemplo: cFileName := 'C:\Archivos de programa\WinZip\WINZIP32.EXE';

Un saludo para todos.

Jose Manuel.

dec
07-11-2006, 00:26:25
Hola,

José Manuel, si lo que quieres es trabajar con archivos comprimidos desde Delphi: comprimir archivos, descomprimirlos, acceder a su contenido, etc., debes saber que cuentas con componentes que harán innecesario que WinZip esté o no instalado en el sistema. Unos muy buenos, gratuitos y de código abierto son los Turbo Power Abbrevia (http://sourceforge.net/projects/tpabbrevia/).

Jose Manuel
07-11-2006, 12:54:40
Hola, quiero saber el PATH del Winzip, porqué estoy utilizando la siguiente instrucción para actualizar el ejecutable. Ya tengo instalado en mi aplicación un componente zip, pero para actualizar el ejecutable, es necesario hacerlo con una aplicación externa, pues primero se cierra el ejecutable y se activa la instrucción, hay un hilo en este foro "actualización aplicaciones (http://www.clubdelphi.com/foros/showthread.php?t=36968)" donde explico como lo hago.

La instrucción funciona correctamente, siempre que el WINZIP esté instalado en 'C:\Archivos de programa\WinZip\WINZIP32.EXE' pero mejor sería asegurarse donde está realmente instalado.

He visto en Internet un script, que hace esto, no sé si sabré adaptarlo a Delphi6.


**
* Script: findZip.js
* Purpose: Finds the path of WinZip if present on yoursystem.
* Author: Daren Thiel (converted to js from newsgroup post).
* Date: 16 May 1999
* Web: http://www.winscripter.com
* Note: Rename this script findZip.js
* Copyright 1999 Daren Thiel **/
// Create a shell objectvar
ws = new ActiveXObject( "WScript.Shell" );
// Store the registry key we are looking for in a variable.
// You can also plug this value directly into regRead()
var key = "HKCR\\WinZip\\shell\\open\\command\\";
// Find the value stored for this key.
// If you get an error here you probably don't have
WinZip.var zip = ws.regRead( key );
// The key is store with a '%1' at the end. We should
// strip this off to get the path to winzip.var
zip = zip.substring( 0, zip.indexOf( " " ) );
// Tell them what you found.
WScript.Echo( zip );

Un saludo.
Jose Manuel.