PDA

Ver la Versión Completa : MDAC Instalar por Código


Deiv
17-06-2007, 15:54:12
Hola,
No se si existe forma con Delphi7 por código:
1ro.- averiguar si está instalado el programa MDAC en una máquina?
2do.- Si está instalado, ¿cómo comparar (saber) a través de código la versión instalada con la que tengo?
3ro.- De darse las posibilidades anteriores ¿cómo instalar el MDAC que poseo por código en una máquina?
Saludos

Wonni
18-06-2007, 01:24:57
hola;

Yo tambien he estado buscando informacion acerca de este tema, ya que me he iniciado hace poco en MDB-ADO.

Microsoft no te autoriza a instalar "por tu cuenta" una nueva versión de MDAC, lo que debes hacer es informar a tus usuarios que no está actualizada la versión de los mismos y solicitarles que lo hagan, enviándolos, por ejemplo, a la página de descarga de MDAC (http://www.microsoft.com/downloads/details.aspx?familyid=6c050fe3-c795-4b7d-b037-185d0506396c&displaylang=es), que va por la 2.8


Esta cita forma parte de este hilo (http://www.clubdelphi.com/foros/showthread.php?t=43666), al cual podrias hechar un vistazo a ver si te ayuda.

La versión 2.8 de MDAC puedes descargarla aqui:

http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=es

Pero he seguido investigando y he encontrado mucha información, ademas de (creo, no lo he probado aun) la solución:

Informacion:

http://support.microsoft.com/kb/301202/es#appliesto

Fijaros bien donde dice: "Esta versión no incluye Microsoft Jet, el proveedor Microsoft Jet OLE DB, el controlador ODBC para Desktop Database Drivers ni el controlador ODBC para Visual FoxPro."



http://www.myitforum.com/downloads/default.asp?srt=11&w=3&se=Scripting&p=4

Aqui se puede encontrar un Script para checkear la version del MDAC. Lo he probado y funciona. Hay que ejecutarlo por linea de comandos.


En estos dos siguientes enlaces se pueden descargar los MergeModule para InstallShield del MDAC 2.8 y el Jet 4.0 SP7:

http://support.installshield.com/kb/view.asp?articleid=q109806

http://support.installshield.com/kb/view.asp?articleid=q109889


Todavia no los he probado(Los MergeModule). En cuanto los pruebe lo posteo. Creo que es la mejor solución. Recuerdo cuando instalaba el BDE a mano, hasta que me hice un instalador con InstallShield.

Deiv
19-06-2007, 16:43:38
Gracias por las indicaciones, leeré las páginas y luego os comento, pero para hacer funcionar un Programa externo me parece que es con ShellExecute, verdad? y eso de la comprobación, me parece que se debe realizar desde el InstallShield, segun entiendo......

Deiv
05-07-2007, 01:41:47
Gracias Wonni,
Y de tanto consultar, me orientaron: ¿que les parece el siguiente código que comprueba la versión de MDAC y manda a instalar la nueva versión?

program TestMdac;
{$APPTYPE CONSOLE}
uses SysUtils, Windows, ShellAPI, Registry;
var
Mdac_typ, MDACVersion: string;
begin
with TRegistry.Create(KEY_READ) do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('SOFTWARE\Microsoft\DataAccess', false) then
MDACVersion := Copy(ReadString('FullInstallVer'), 1, 3)
else
MDACVersion := '';
finally
Free;
end;
if MDACVersion >= '2.8' then
exit;
Mdac_typ := ExtractFilePath(ParamStr(0)) + 'Mdac_typ.exe';
if FileExists(Mdac_typ) then
ShellExecute(0, 'open', PChar(Mdac_typ), nil, nil, 0)
else begin
writeln(Mdac_typ + ' - MDAC 2.8 No encontrado');
readln;
end;
end.

No sé, al código habrá que adapatarlo en algún momento donde muestre una ventana y diga que existe una versión mucho mas actualizada (adjunta en mi Aplicación) para sugerirle la instalación (o hacerlo algo obligatorio y necesario, digamos), lo que no me agrada DE TODO ESTO en el caso de que el Usuario tuviera una versión menor, es que arrancará el programa de MDAC y nos preguntará si aceptamos los términos de licencia y el mensaje de que se va a instalar el Programa. Me pregunto dos situaciones:

1.- ¿No existirá alguna forma que, por ejemplo he podido observar que cuando instalo Delphi 7, en un momento me presenta un CheckBox donde me da a elegir si deseamos instalar componentes o DLL de Access (No recuerdo bien en este momento, disculpen si estoy equivocado), no habrá misma forma de poder INSTALAR INTERNAMENTE la actualización del MDAC? sin que muestre sus ventanas del MDAC propio?

2.- ¿Necesariamente el MDAC tendré que adecuarlo dentro del InstallShield (o InnoSetup) para que en un inicio salga esta opción de comprobación de versiones e instalar el MDAC verdad? ¿Cómo se realizaría este paso con el InstallShield?
Saludos