title image


Smiley Re: A97/A2K DB abhänig von vorh. Version mit Inno Setup installieren
Mit einem Pascal - Script bekommt man die Access - Version heraus:



http://www13.brinkster.com/vincenzog/isxart.asp?idart=20



Jetzt müsstest Du das ganze noch auswerten.



Ich denke, man könnte in der [Run] - Section das Kopieren der gültigen .mdb anstoßen. Im [Run] - Teil deswegen, weil man da eine Check() - Funktion erstellen könnte, die in Abhängigkeit, ob A97 oder A2000 vorhanden ist, true zurück gibt.



Ich habe das so noch nicht gemacht, sondern nur auf ähnliche Art und Weise geprüft, ob die Runtime drauf muss oder nicht. Hier mein Script für die Runtime, vielleicht kannst Du Dir das ein wenig zurechtmeißeln:





[Run]

;AccessRT

Filename: {sys}\msiexec; Parameters: /i {src}\Runtime\AccessRT.msi RebootYesNo=No REBOOT=ReallySuppress ALLUSERS=1 INSTALLLOCATION={pf}\Access2002RT /qn; Check: MitRuntime; StatusMsg: MS Access - Runtime Version wird jetzt installiert...

;So ähnlich könntest Du auch Deine verschiedenen Access-MDB unterbringen

;mit dem Unterschied, dass Du Deine Check-Funktion noch mit einem

;Parameter ausstatten müsstet, z.B. Check: AccessVersion(97)

;...oder für > A2000 Check: AccessVersion(2000)

;und dass bei Dir dann 2 oder 4 Zeilen (wenn mit Backend) drin wären.



[Code]



// Legende

// 8.00.00.3512 Access 97

// 8.00.00.4122 Access 97 SR1

// 8.00.00.5903 Access 97 SR2

// 9.00.00.2719 Access 2000

// 9.00.00.3822 Access 2000 SR1

// 9.00.00.4506 Access 2000 SR2

// 10.00.2627.1 Access XP





//Access Version auslesen

function AccessVersion(): String;

var accversion, accpath: String;

begin

accversion := '';



if RegQueryStringValue(HKEY_LOCAL_MACHINE,

'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MSACCESS.EXE',

'', accpath) then

begin

// in varResult there is path of msaccess.exe

GetVersionNumbersString( accpath, accversion );

end;

Result := accversion;



end;



//Access - Version ermitteln und feststellen,

//ob Runtime notwendig

//berücksichtigt momentan noch nicht

//die Parallelinstallation von A97 + A2000/2002/2003

//Stell auf die Version ab, die aktuell registriert ist.



function MitRuntime():boolean;

var accver: String;

var accverName:String;

var tmp:boolean;

begin



tmp :=true;

accver := AccessVersion();

if Length( accver ) > 0 then

begin

if Copy(accver,1,1) = '8' then begin

accverName := 'Access 97'

//OK, die Namen brauche ich jetzt nicht....

tmp:= true

// D.h. die Runtime muss drauf

end;

if Copy(accver,1,1) = '9' then begin

accverName := 'Access 2000'

tmp:= false

// D.h. die Runtime muss nicht drauf

end; // Access 97 SR1

if Copy(accver,1,2) = '10' then begin

accverName := 'Access XP'

tmp:=false

end;

if Copy(accver,1,2) = '11' then begin

accverName := 'Access 2003'

tmp:=false

end;

end;

result:=tmp;



end;





Mich würde später mal interessieren, wie Du es umgesetzt hast. Momentan brauch ich das noch nicht, aber evtl. später
Mit freundlichen Grüßen aus Wuppertal

Walter Grimm EasyPointer

MS Access 2000/XP, MS SQL Server 2005, Windows XP
C#.Net 2.0 - VS 2005 Std
Bitte immer Erfolgs- oder Misserfolgsmeldung abgeben
++ Emails und Dateianhänge bitte nur nach Absprache ++

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: