PDA

Vollständige Version anzeigen : Install von Acces97 Runtime incl. MDB für User die schon Access besitzen.


difras
08.05.2005, 12:06
Hallo !

Ich habe in diesem Access Forum schon soviel Hilfe bekommen, dass ich mal etwas davon zurückgeben möchte.

Ich habe nicht locker gelassen und ein sehr schönes prof. Setup zum installieren von Access97 Runtime mit Inno-Setup 5.0.8 kreiert.

Dieser Script installiert nicht nur die runtime, sondern prüft auch, ob schon eine Version von Access (ab 97) auf der Mashine vorhanden ist. Ist das der Fall, so ignoriert er die runtime und installiert nur die MDB, die dann auf höhere Access Versionen kompiliert werden kann.

Viel Spaß damit !

Dirk :five:

; -- Lauffähiges Inno-Setup Access Runtime 97
; -- Erstellt von Dirk Rohmann
; -- mit Hilfe des Script's von Bernhard Martin - www.unofactura.de --
; -- basierend auf einem Musterscript von Bernd Oberfeld
; -- und
; -- mit der großmütigen Unterstützung von -msi- - www.inno-setup.de-Forum
; -- Verwendung auf eigenes Riskio --

; -- Dieses Script installiert mit einem Setup Deine Runtime auf Basis A97 und prüft
; -- dabei per [Code], ob eine Version von Access -ab Verion 97- vorhanden ist.

; -- Ist eine Version von Access ab 97 vorhanden, dann wir lediglich die kompilierfähige MDB installiert.

; -- Ist keine Version von Access vorhanden, dann wird Deine Runtime installiert.

; -- Namen und Pfade mußt Du natürlich auf Deine Bedürfnisse ändern.

[Setup]
AppID=Difras Komponenten
AppName=Difras Komponenten
AppVerName=Difras Komponenten
AppCopyright=Difras Softwareentwicklungen
AppPublisher=Difras Softwareentwicklungen
AppPublisherURL=http://www.difras.de
AppSupportURL=http://www.difras.de
AppUpdatesURL=http://www.difras.de
AppVersion=3.2
DirExistsWarning=no
DisableDirPage=true
DefaultDirName={pf}\Difras\Komponenten
DefaultGroupName=Difras Komponenten
DisableProgramGroupPage=true
SetupIconFile=C:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Komponenten\Fertiges Programm\Programm Versandfertig Test\Icon-Difras.ico
DiskSpanning=false
AdminPrivilegesRequired=true
MinVersion=4.0.950, 4.0.1381sp3
DisableStartupPrompt=true
LicenseFile=C:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Lizenz Difras Komponenten.txt
Password=TESTVERSION

[Tasks]
;MDB
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; Check: AccessInstalled



[Files]
;Eigene Anwendungsdateien
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\Komponenten.mde; DestDir: {app};Check: AccessIsNotInstalled
Source: c:\Eigene Dateien\Versuch.mdw; DestDir: {app};Check: AccessIsNotInstalled
Source: c:\Programme\Difras\Komponenten\Icon-Difras.ico; DestDir: {app};Check: AccessIsNotInstalled
;MDB
Source: "C:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Komponenten\Fertiges Programm\Arbeitsversion\Komponenten.mdb"; DestDir: "{app}"; Check: AccessInstalled

;Die Accessdateien.
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msacc8.olb; DestDir: {cf}; Flags: regtypelib sharedfile uninsneveruninstall;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msacc8.olb; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msaccess.exe; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\MSACCESS.srg; DestDir: {app}\office; destName: msaccess.srg;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msacnv30.exe; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msacnv30.dll; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msain800.dll; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\soa800.dll; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\utility.mda; DestDir: {app}\office;Check: AccessIsNotInstalled

;Die VBA und einige Office Dateien
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\mso97rt.dll; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\mrt7enu.dll; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\vba332.dll; DestDir: {app}\office; Flags: regtypelib;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\vba3en.dll; DestDir: {app}\office;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\vbacv20.dll; DestDir: {app}\office;Check: AccessIsNotInstalled

;Die SelbstregistrierungsDLL
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\selfreg.dll; DestDir: {app}\office;Check: AccessIsNotInstalled

;Die DAO Dateien
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\dao350.dll; DestDir: {dao}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\dao2535.tlb; DestDir: {dao}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regtypelib;Check: AccessIsNotInstalled

;Die Jet Dateien
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msjet35.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msjint35.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\msjter35.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile;Check: AccessIsNotInstalled

;System-Dateien u.a. für die OLE-Automation.
;Runtime
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\Mfcans32.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile uninsneveruninstall;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\Asycfilt.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile uninsneveruninstall;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\StdOle2.tlb; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall regtypelib;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\OleAut32.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall regserver;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\OlePro32.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall regserver;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\Comcat.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall regserver;Check: AccessIsNotInstalled
Source: c:\Dokumente und Einstellungen\Dirk Rohmann\Eigene Dateien\Setup Komponenten\Comct232.ocx; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall regserver;Check: AccessIsNotInstalled

[Icons]
;Runtime
Name: {group}\Komponenten; Filename: {app}\office\msaccess.exe; Parameters: "/wrkgrp ""{app}\versuch.mdw"" /runtime ""{app}\Komponenten.mde"""; IconFilename: {app}\Icon-Difras.ico;Check: AccessIsNotInstalled
Name: {commondesktop}\Komponenten; Filename: {app}\office\msaccess.exe; Parameters: "/wrkgrp ""{app}\versuch.mdw"" /runtime ""{app}\Komponenten.mde"""; IconFilename: {app}\Icon-Difras.ico;Check: AccessIsNotInstalled
Name: "{group}\{cm:UninstallProgram,Komponenten}"; Filename: "{uninstallexe}";Check: AccessIsNotInstalled
;MDB
Name: "{group}\Difras Komponenten"; Filename: "{app}\Komponenten.mdb"; Check: AccessInstalled
Name: "{group}\{cm:UninstallProgram,Difras Komponenten}"; Filename: "{uninstallexe}"; Check: AccessInstalled
Name: "{userdesktop}\Difras Komponenten"; Filename: "{app}\Komponenten.mdb"; Tasks: desktopicon; Check: AccessInstalled

[Run]
;MDB - Start nach der Installation, damit wenn nötig, sofort auf die höhere Access Verion kompiliert werden kann
Filename: "{app}\Komponenten.mdb"; Description: "{cm:LaunchProgram,Difras Komponenten}"; Flags: shellexec postinstall skipifsilent; Check: AccessInstalled

[Registry]
;Runtime
;Dies setzt eine legale Version der ODE voraus!!
Root: HKCR; Subkey: Licenses\8CC49940-3146-11CF-97A1-00AA00424A9F\Runtime; ValueType: String; ValueData: okpvasjwmvjfrcatkskctmtjahdnkccdgjds;Check: AccessIsNotInstalled

[Languages]
Name: "de"; MessagesFile: "compiler:languages\German.isl"


[Code]

// Erstellt mit der großen Hilfe von msi - www.Inno-setup.de-Forum.

function GetOfficeComponent(const CompName: string): string;
begin
if(not RegQueryStringValue(HKLM,
Format1('Software\Microsoft\Windows\CurrentVersion\App Paths\%s',CompName),
'',
Result)) then

Result := '';
end;


function GetComponentVer(const FileName: string): integer;
var
ver : string;
begin

if(FileExists(FileName)) and (GetVersionNumbersString(FileName,ver)) then
Result := StrToInt(copy(ver,1,pos('.',ver)-1))

else
Result := -1;
end;
var

MsAccessVer : integer; // <-- steht schon im Skript!!!

function ExpectedAccessVer(VerNum: integer): boolean;
begin

Result := MsAccessVer = VerNum;
end;


function InitializeSetup: boolean;
begin
MsAccessVer := GetComponentVer(GetOfficeComponent('msaccess.exe'));
Result := (MsAccessVer >= 8) or (MsAccessVer = -1)
end;

function AccessIsNotInstalled: boolean;
begin
Result := MsAccessVer = -1;
end;

function AccessInstalled: boolean;
begin
Result := MsAccessVer >= 8;
end;

perlfan
02.04.2013, 08:27
Hi - wo wird denn hier das Setup der Runtime angestossen? Muss das nicht über ShellExec erfolgen? Danke für einen kleinen Tipp.