title image


Smiley Re: Problem mit Verpackungs-Assistenten von Office XP/2002
Zum VuW könnte es noch sein, dass die Installation generell irgendwie einen Schlag weg hat, genaues weiß ich aber nicht.



Ja, ich mache es mit Inno, wobei ich Inno 'nur' nutze, um meine Anwendung zu installieren (man achte auf die Möglichkeiten) und das Setup der AccessRT.msi anzustoßen. Ich packe mal hier mein Setup-Script hier hin, kann es aber jetzt nicht in Ausführlichkeit erläutern. Du solltest Dich intensiv mit Inno auseinandersetzen, um das nachvollziehen zu können. Möglicherweise werde ich`s mal überarbeiten. Bis jetzt klappt das aber ganz gut so.





[Setup]

AppName=EasyPointer

AppVerName=EasyPointer Version 1.5

DefaultDirName={pf}\EasyPointer

DefaultGroupName=EasyPointer

UninstallDisplayIcon={app}\EasyPointer.exe

AppPublisher=doron Verlag

AppPublisherURL=http://www.doron.de

AppSupportURL=http://www.doron.de

AppUpdatesURL=http://www.doron.de

AllowNoIcons=true

LicenseFile=I:\EasyPointer\EasyPointerSetupdateien\Lizenz.txt

InfoBeforeFile=I:\EasyPointer\EasyPointerSetupdateien\Readme.txt

MinVersion=4.1.1998,4.0.1381

WindowVisible=true

AppVersion=1.50

AppID={68D7DA17-E1DD-49F5-AAD9-72D2F916B4F5}

UninstallDisplayName=EasyPointer entfernen

WizardImageFile=E:\Programme\Inno Setup 3\WizModernImage.bmp

OutputDir=I:\EasyPointer\EasyPointerSetupdateien

OutputBaseFilename=Setup

Compression=zip/9

AllowRootDirectory=true

OnlyBelowVersion=0,0

AppCopyright=Walter Grimm

PrivilegesRequired=admin

RestartIfNeededByRun=true



;InfoAfterFile=I:\EasyPointer\EasyPointerSetupdateien\HinweisNT.txt

[Tasks]

Name: desktopicon; Description: Möchten Sie eine Verknüpfung zum Desktop erstellen?; GroupDescription: Additional icons:

[Files]

;Anwendungsdaten

Source: EasyPointer.mde; DestDir: {app}\

Source: EasyDaten.mdb; DestDir: {app}\

Source: sevZip32.dll; DestDir: {sys}

;Bilder-Ico

Source: EasyPointer.bmp; DestDir: {app}\

Source: EasyPointer.ico; DestDir: {app}\

Source: EasyPointer.JPG; DestDir: {app}\

;Info`s

Source: EasyPointerFAQ.htm; DestDir: {app}\

Source: Lizenz.txt; DestDir: {app}\

Source: Readme.txt; DestDir: {app}\

; Gittarre stimmen

Source: Tune\tune*.mp3; DestDir: {app}\Tune

;Bilder einfügen: Farbverläufe

Source: Arbeit\Bilder\Farbverläufe\Verlauf*.*; DestDir: {app}\Arbeit\Bilder\Farbverläufe

;Bilder einfügen: Hintergründe

Source: Arbeit\Bilder\Hintergründe\Hintergr*.*; DestDir: {app}\Arbeit\Bilder\Hintergründe

;Bilder einfügen: Pausenbilder

Source: Arbeit\Bilder\Pausenbilder\Pause*.*; DestDir: {app}\Arbeit\Bilder\Pausenbilder

[Dirs]

Name: {app}\Arbeit

Name: {app}\Arbeit\Akkorde

Name: {app}\Arbeit\Bilder

Name: {app}\Arbeit\Bilder\Farbverläufe

Name: {app}\Arbeit\Bilder\Hintergründe

Name: {app}\Arbeit\Bilder\Pausenbilder

Name: {app}\Arbeit\Gottesdienste

Name: {app}\Arbeit\ImpEx

Name: {app}\Arbeit\Klangbeispiele

Name: {app}\Arbeit\Lieder

Name: {app}\Arbeit\Noten

Name: {app}\Arbeit\PP

Name: {app}\Arbeit\Proben

Name: {app}\Tune



[Icons]

Name: {group}\EasyPointer; Filename: {app}\EasyPointer.mde; IconFilename: {app}\EasyPointer.ico

Name: {group}\EasyPointer FAQ; Filename: {app}\EasyPointerFAQ.htm

Name: {group}\Uninstall EasyPointer; Filename: {uninstallexe}; Comment: EasyPointer entfernen

Name: {commondesktop}\EasyPointer; Filename: {app}\EasyPointer.mde; IconFilename: {app}\EasyPointer.ico



[Registry]

Root: HKLM; Subkey: SOFTWARE\EasyPointer; ValueType: string; ValueName: Pfad; ValueData: {app}\EasyPointer.mde; Flags: createvalueifdoesntexist uninsdeletekey

Root: HKLM; Subkey: SOFTWARE\EasyPointer; ValueType: string; ValueName: Seriennummer; ValueData: Demo; Flags: createvalueifdoesntexist uninsdeletekey



[Run]

Filename: {src}\Service\InstMsiA.exe; Parameters: /q; Flags: skipifdoesntexist; MinVersion: 4.1.1998,0; OnlyBelowVersion: 4.90.3000,0; StatusMsg: Windows - Installer aktualisieren / installieren; Check: MSICheck

Filename: {src}\Service\InstMsiW.exe; Parameters: /q; Flags: skipifdoesntexist; MinVersion: 0,4.0.1381sp6; OnlyBelowVersion: 0,5.01.2600; StatusMsg: Windows - Installer aktualisieren / installieren; Check: MSICheck

;Powerpointviewer

Filename: {src}\Service\ppview97.exe; Parameters: /Q; Check: PPCheck; StatusMsg: Power Point - Viewer installieren; Flags: skipifdoesntexist

;Systemupdate

Filename: {sys}\msiexec; Parameters: /i {src}\Runtime\osp.msi RebootYesNo=YES REBOOT=ReallySuppress ALLUSERS=1 /q /l*v {win}\OSPLog.txt; StatusMsg: Ihr System und die Datenzugriffskomponenten werden aktualisiert...

;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...

;Die RT soll nicht ins Office-Verzeichnis, um Konflikte mit älteren Versionen zu vermeiden, das klappt soweit.

Filename: {app}\EasyPointer.mde; Description: EasyPointer jetzt starten?; Flags: shellexec postinstall skipifsilent

;Hinweis: NT-Nutzer müssen Verzeichnisse für Nicht-Admins freischalten.

Filename: {src}\HinweisNT.txt; Flags: skipifdoesntexist shellexec; MinVersion: 0,4.0.1381sp6; OnlyBelowVersion: 0,0

;Check: MitRuntime; Runminimized

[Code]

function NeedRestart(): Boolean;

begin

result:=MitSystemUpdate;

end;



// Legenda

// 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'

tmp:= true

end;

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

accverName := 'Access 2000'

tmp:= false

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;

//Powerpoint vorhanden?

function PPCheck():boolean;

var PPPath, PPVPath: string;

var tmp: boolean;

begin

tmp:=false;

if RegQueryStringValue(HKEY_LOCAL_MACHINE,

'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\PowerPnt.exe',

'Path', PPPath) then tmp:= true;

if RegQueryStringValue(HKEY_LOCAL_MACHINE,

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

'Path', PPVPath) then tmp:= true;

//jetzt nachfragen, ob der PPViewer installiert werden soll,

//wenn kein PP vorhanden

if tmp = false then begin

result := MsgBox('Auf Ihrem Systm befindet sich kein MS Powerpoint oder MS Powerpoint - Betrachter'#13#13 'Dies ist für den EasyPointer zwar nicht unbedingt erforderlich, kann aber u.U. hilfreich sein.', mbConfirmation, MB_YESNO) = idYes;

end; //if tmp = true

end;



//Windows-Installer vorhanden?

// ggfls. nachinstallieren!

function MSICheck(): Boolean;



var

MSIPfad: String;

begin

result:=false;

if MitRuntime then begin

MSIPfad:= GetSystemDir + '\msiexec.exe';

result:= Not FileExists(MSIPfad);

end;

end;



function MitSystemupdate

Var ErrorCode: Integer;

Var FileName: String;

begin

result:=true;

FileName:=ExpandConstant('{src}\EasySetup.exe');

if FileExists(GetWinDir+'\OSPlog.txt') then begin

result:=false;

if not InstShellExec(FileName, '', '', SW_SHOWNORMAL, ErrorCode) then

MsgBox('Script.DeInitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);

end;



[_ISTool]

Use7zip=false





[InstallDelete]

Name: {win}\OSPLog.txt; Type: files





So sieht das Script für das Systemupdate aus. Da ich die Setups auch einzeln einsetze (z.B. kommt bei der Download-Version das SystemUpdate nicht zum Tragen) ist einiges redundant. Dat stört aber nicht wirklich :-).





[Setup]

AppName=Systemaktualisierung für EasyPointer

AppPublisher=doron Verlag

AppPublisherURL=http://www.doron.de

AppSupportURL=http://www.doron.de

AppUpdatesURL=http://www.doron.de

AllowNoIcons=false

;InfoBeforeFile=I:\EasyPointer\EasyPointerSetupdateien\SystemReadme.txt

MinVersion=4.1.1998,4.0.1381sp6

WindowVisible=true

UninstallDisplayName=EasyPointer entfernen

WizardImageFile=E:\Programme\Inno Setup 3\WizModernImage.bmp

OutputDir=I:\EasyPointer\EasyPointerSetupdateien

OutputBaseFilename=SystemUpdate

Compression=zip/9

AllowRootDirectory=true

OnlyBelowVersion=0,5.0.2195

AppCopyright=Walter Grimm

PrivilegesRequired=admin

RestartIfNeededByRun=false



;InfoAfterFile=I:\EasyPointer\EasyPointerSetupdateien\HinweisNT.txt

AlwaysRestart=true

CreateAppDir=false

UsePreviousGroup=false

Uninstallable=false

AppVerName=die Systemaktualisierung für EasyPointer

DisableFinishedPage=true

AlwaysShowComponentsList=false

ShowComponentSizes=false

FlatComponentsList=false

DisableReadyPage=true

InfoBeforeFile=I:\EasyPointer\EasyPointerSetupdateien\SysReadme.txt

[Run]

Filename: {src}\Service\InstMsiA.exe; Parameters: /q; StatusMsg: MS Windows - Installer installieren...; Flags: runminimized; MinVersion: 4.1.1998,0; OnlyBelowVersion: 4.90.3000,0

Filename: {src}\Service\InstMsiW.exe; Parameters: /q; StatusMsg: MS Windows - Installer installieren...; Flags: runminimized; MinVersion: 0,4.0.1381sp6; OnlyBelowVersion: 0,5.0.2195

Filename: {sys}\msiexec; Parameters: /i {src}\Runtime\osp.msi RebootYesNo=YES REBOOT=ReallySuppress ALLUSERS=1 /q /l*v {win}\OSPLog.txt; StatusMsg: Ihr System und die Datenzugriffskomponenten werden aktualisiert...

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

;AccessRT still installieren

;Die RT soll nicht ins Office-Verzeichnis, um Konflikte mit älteren Versionen zu vermeiden, das klappt soweit.



;Filename: {src}\Service\ppview97.exe; Parameters: /q; Check: PPCheck; StatusMsg: Power Point - Viewer installieren; Flags: skipifdoesntexist

;Filename: {app}\EasyPointer.mde; Description: EasyPointer jetzt starten?; Flags: shellexec postinstall skipifsilent

;Filename: test.bat

; Hinweis: NT-Nutzer müssen Verzeichnisse für Nicht-Admins freischalten.

;Parameters: /q; Flags: runminimized;

;Parameters: /q; Flags: runminimized;



;Check: MitRuntime; Runminimized

[_ISTool]

Use7zip=false

[Code]

// Legenda

// 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



//Windows-Installer vorhanden?

//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'

tmp:= true

end;

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

accverName := 'Access 2000'

tmp:= false

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;

//Powerpoint vorhanden?

function PPCheck():boolean;

var PPPath, PPVPath: string;

var tmp: boolean;

begin

tmp:=false;

if RegQueryStringValue(HKEY_LOCAL_MACHINE,

'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\PowerPnt.exe',

'Path', PPPath) then tmp:= true;

if RegQueryStringValue(HKEY_LOCAL_MACHINE,

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

'Path', PPVPath) then tmp:= true;

//jetzt nachfragen, ob der PPViewer installiert werden soll,

//wenn kein PP vorhanden

if tmp = false then begin

result := MsgBox('Auf Ihrem Systm befindet sich kein MS Powerpoint oder MS Powerpoint - Betrachter'#13#13 'Dies ist für den EasyPointer zwar nicht unbedingt erforderlich, kann aber u.U. hilfreich sein.', mbConfirmation, MB_YESNO) = idYes;

end; //if tmp = true

end;



function OSPReady():Boolean;

begin

result:=FileExists(GetWinDir+'\OSPLog.txt');

end;



//Hier könnte man auch auf das EasySetup verweisen.

//Das überlasse ich aber der CD - Start.exe

//damit die Setup ggfls. seperat gestartet werden können



function InitializeSetup(): Boolean;

Var ErrorCode: Integer;

Var FileName: String;

begin

result:=true;

FileName:=ExpandConstant('{src}\EasySetup.exe');

if FileExists(GetWinDir+'\OSPlog.txt') then begin

result:=false;

if not InstShellExec(FileName, '', '', SW_SHOWNORMAL, ErrorCode) then

MsgBox('Script.DeInitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ErrorCode) + '.', mbError, MB_OK);

end;

end;



Ob das Systemupdate erfolgt oder nicht, liest das CD - Startprogramm aus, das darüberhinaus auch die Funktion hat, nachzusehen, ob z.B. SP 6 für WinNT drauf muss.

Da das in Delphi ist, nützt der Quelltext sehrwahrscheinlich nicht viel. Nach dem Systemupdate sollte man auf jeden Fall einen Neustart 'erzwingen'. Damit das Setup nach dem Neustart nicht von vorne anfängt.



Damit der ganze Remmel läuft, müssen die Dateien entsprechend auf CD mitgeliefert werden.


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: