Page 1 of 3

Adobe Reader und Acrobat inkl. Updates

Posted: 19. Jun 2009, 09:54
by Julia
Auf Wunsch von Herr Amborsius (http://www.matrix42.de/forum/viewtopic. ... 5&start=15) stelle ich hier mal meine Adobe Paket inkl. Updates zur Verfügung.

In dem Adobe Reader 9.1 Paket gibt es (nur) ein Abfrage, ob die Software bereits installiert ist, oder nicht. Wenn ja, wird nur die aktuellste MSP-Datei installiert, ansonsten der komplette Reader inkl. Updates.

In dem Adobe Acrobat Pro 9.1 Paket gibt es erst ein Abfrage, die prüft ob die Software bereits installiert ist. Wenn nicht, wird alles (Software & Updates) installiert. Wenn ja, gibt es eine weitere If-Abfrage, damit je nach vorhandener Version das/die entsprechende(n) Update(s) installiert werden.

Posted: 19. Jun 2009, 11:43
by bboehm
Hallo Julia,

Dein Paket schaut recht gut aus, allerdings würde ich noch ein Errorhandling zwischen den einzelnen Patches unterbringen, da sonst im Fehlerfall das Skript einfach hängen bleibt falls sich ein Patch nicht installieren läßt. Bei den einzelnen Update-Sektionen könnte man nach dem 1. Patch nochmal die Version prüfen und nach oben zu [UpdateMSI] springen, dann bleibt in jeder Sektion nur ein Patch übrig.

War als Vorschlag gemeint 8) , habe heute selber leider keine Zeit mehr...

Beste Grüße
Bernhard

Posted: 19. Jun 2009, 12:19
by mniemann
Hallo Julia,
vielen Dank für deine Mühe!
Welchen Unterschied gibt es zwischen INF 1 und INF 2?
Darf das Paket auch auf www.diew.eu veröffentlicht werden?

Gruß
Martin Niemann

Posted: 19. Jun 2009, 14:06
by Julia
Hallo Bernhard,
Deine Vorschläge hören sich nicht schlecht an, aber ich weiß noch nicht, wann ich dazu komme, das noch einzubauen. Ich weiß spontan auch noch nicht, wie ich das umsetzen kann. Aber trotzdem danke, werds mir bei Gelegenheit mal anschauen.

Hallo Herr Niemann,
Die Unterschiede sind in erster Linie, dass es sich einmal um die Reader und einmal um Acrobat handelt. Das Reader Paket prüft nur, ob die Grundinstallation bereits vorhanden ist oder nicht. Das Acrobat Paket beinhaltet zusätzlich eine If-Abfrage, die die installierte Version ausliest und dann nur die noch fehlenden Updates installiert.
An sich können Sie die Pakete auf Ihrer Seite veröffentlichen. Ich könnte aber vorher noch versuchen, Sie mit den Tipps von Bernhard noch zu verfeiern, bzw. verbessern. Vielleicht wollen Sie ja solange noch warten?

Posted: 19. Jun 2009, 16:55
by mniemann
da warte ich gerne :)

Posted: 20. Jun 2009, 10:26
by bboehm
Vielleicht Co-Produktion Julia & Bernhard. :-) Hab gestern doch noch etwas Zeit gefunden. Wir haben allerdings mit dem Adobe Customization Wizard den Acrobat Pro angepasst und deshalb eine etwas andere Installationsroutine.

Posted: 23. Jun 2009, 15:36
by bboehm
Hallo,

Ich habe nun in das Acrobat Paket von Julia sämtliche Überprüfungen eingebaut - Vorsicht ist die Mutter der Porzellankiste.

In der Sektion [Install2] muß der jeweilige Aufruf zur Installation eingetragen werden.

Code: Select all

[Set:Product]
Del %MSILogFile%
Del %MSILogFile%_9.1
Del %MSILogFile%_9.1.1
Del %MSILogFile%_9.1.2

IF DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004},UnInstallString") == "1" Then "RepairMSI" Else "Installation" EndIf

[Installation]
SET AcroVersion=%HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004}","DisplayVersion"%
If %AcroVersion% = 9.0.0 | %AcroVersion% = 9.1.2 Then "UpdateMSI" Else "Install2" EndIf

[Install2]
AddMeter 50
Call "%SRC%\Setup.exe" 
If %ErrorLevel% <> "0" Then "SET:InstallationError" Else "UpdateMSI" EndIf

[RepairMSI]
SET AcroVersion=%HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004}","DisplayVersion"%
If %AcroVersion% = 9.0.0 | %AcroVersion% = 9.1.2 Then "UpdateMSI" Else "Repair2" EndIf


[Repair2]
AddMeter 50
Call MsiExec /Fvomus "%SRC%\AcroPro.msi" REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qb /Li "%MSILogFile%"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%") == "0" Then "AbortMSIInst" Else "UpdateMSI" EndIf
Del %MSILogFile%

[UpdateMSI]
SET AcroVersion=%HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004}","DisplayVersion"%
If %AcroVersion% = 9.0.0 Then "Update900" EndIf
If %AcroVersion% = 9.1.0 Then "Update910" EndIf
If %AcroVersion% = 9.1.1 Then "Update910" EndIf

[Update900]
;Update von 9.0 > 9.1
AddMeter 10
Call MsiExec /p "%SRC%\Update\AcroProStdUpd910_T1T2_incr.msp" /qb /Li "%MSILogFile%_9.1"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%_9.1") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%_9.1") == "0" Then "AbortMSIInst" Else "Update910" EndIf
Del %MSILogFile%_9.1

[Update910]
;Update von 9.1 > 9.1.1
AddMeter 10
Call MsiExec /p "%SRC%\Update\AcrobatUpd911_all_incr.msp" /qb /Li "%MSILogFile%_9.1.1"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%_9.1.1") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%_9.1.1") == "0" Then "AbortMSIInst" Else "Update911" EndIf
Del %MSILogFile%_9.1.1

[Update911]
;Update von 9.1.1 > 9.1.2
AddMeter 10
Call MsiExec /p "%SRC%\Update\AcrobatUpd912_all_incr.msp" /qb /Li "%MSILogFile%_9.1.2"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%_9.1.2") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%_9.1.2") == "0" Then "AbortMSIInst" Else "Set:UpdateFertig" EndIf
Del %MSILogFile%_9.1.2

[SET:UpdateFertig]
Del %MSILogFile%
Del %MSILogFile%_9.1
Del %MSILogFile%_9.1.1
Del %MSILogFile%_9.1.2
Beste Grüße
Bernhard

Posted: 23. Jun 2009, 16:47
by mniemann
Eine Rückfrage, bevor wir uns "tod"absichern.
Ist im Hotfix 2 (9.1.2) von Adobe Reader nicht auch schon der 9.1.1 inkludiert? Damit würde die Installation von 9.1 auf 9.1.1 entfallen.

Posted: 24. Jun 2009, 07:30
by bboehm
Hallo Martin,

Die Updates müssen leider alle hintereinander installiert werden, sind "inkrementell" und nicht kumulativ - leider.

Beste Grüße
Bernhard

Posted: 24. Jun 2009, 09:45
by StadtWN
Herr Niemann hat recht denke ich. Auf der Downloadseite steht:
Users with version 9.1 or 9.1.1 can download and install the incremental patch.

Hier der vollständige Link zur Downloadseite:
http://www.adobe.com/support/downloads/ ... ftpID=4486

Posted: 24. Jun 2009, 10:15
by bboehm
Da hast du natürlich recht, dann können wir also den 9.1.1 Patch entfernen.

Posted: 24. Jun 2009, 10:25
by philipp.kiessler
Also offensichtlich hat man bei Adobe den Unterschied zwischen inkrementell und kummulativ noch nicht verstanden.

Posted: 24. Jun 2009, 10:28
by mniemann
ich habe dein Script nochmal angepasst, da mir die IF-Abfrage für die Grundinstallation nicht passend schien. Darüberhinaus habe ich die Namen für die zu erstellenden Logfiles angepasst, da ich keine MSI_Adobe_Adobe_Reader_9.1.0.log_9.1.2 Datei haben möchte.
MSI_Adobe_Adobe_Reader_912_9.1.0.log habe ich "lieber", wegen der Dateiendung LOG

Code: Select all

[Environment]
...
MSILogFile=%Temp%\MSI_%ProductName%.%Version%.%Revision%.log
MSILogFile91=%Temp%\MSI_%ProductName%_91.%Version%.%Revision%.log
MSILogFile911=%Temp%\MSI_%ProductName%_911.%Version%.%Revision%.log
MSILogFile912=%Temp%\MSI_%ProductName%_912.%Version%.%Revision%.log
...

[Set:Product]
Del %MSILogFile%
Del %MSILogFile91%
Del %MSILogFile911%
Del %MSILogFile912%

IF DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004},UnInstallString") == "1" Then "RepairMSI" Else "Installation" EndIf

[Installation]
SET AcroVersion=%HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004}","DisplayVersion"%
If %AcroVersion% = 9.0.0 | %AcroVersion% = 9.1.2 Then "UpdateMSI" Else "Install2" EndIf

[Install2]
AddMeter 50
;nachfolgend den gewünschten Installationsaufruf einfügen. Bsp: MsiExec /I "%SRC%\AcroRead.msi" TRANSFORMS=........ oder "%SRC%\setup.exe" /sAll /rs. Wie man es gewohnt ist. Bei Verwendung von msiexec könnte man die untere IF-Abfrage so umbauen, dass auf den UninstallString geprüft wird und nicht auf ErrorLevel
Call 
;Vorschlag für IF-Abfrage auf Uninstall-String
;IF DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004},UnInstallString") == "0" Then "SET:InstallationError" Else "UpdateMSI" EndIf
If %ErrorLevel% <> "0" Then "SET:InstallationError" Else "UpdateMSI" EndIf

[RepairMSI]
SET AcroVersion=%HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004}","DisplayVersion"%
If %AcroVersion% = 9.0.0 | %AcroVersion% = 9.1.2 Then "UpdateMSI" Else "Repair2" EndIf

[Repair2]
AddMeter 50
Call MsiExec /Fvomus "%SRC%\AcroPro.msi" REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qb /Li "%MSILogFile%"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%") == "0" Then "AbortMSIInst" Else "UpdateMSI" EndIf
Del %MSILogFile%

[UpdateMSI]
SET AcroVersion=%HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000004}","DisplayVersion"%
If %AcroVersion% = 9.0.0 Then "Update900" EndIf
If %AcroVersion% = 9.1.0 Then "Update910" EndIf
If %AcroVersion% = 9.1.1 Then "Update910" EndIf

[Update900]
;Update von 9.0 > 9.1
AddMeter 10
Call MsiExec /p "%SRC%\Update\AcroProStdUpd910_T1T2_incr.msp" /qb /Li "%MSILogFile91%"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%_9.1") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%_9.1") == "0" Then "AbortMSIInst" Else "Update910" EndIf
Del %MSILogFile91%

[Update910]
;Update von 9.1 > 9.1.1
AddMeter 10
Call MsiExec /p "%SRC%\Update\AcrobatUpd911_all_incr.msp" /qb /Li "%MSILogFile911%"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%_9.1.1") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%_9.1.1") == "0" Then "AbortMSIInst" Else "Update911" EndIf
Del %MSILogFile911%

[Update911]
;Update von 9.1.1 > 9.1.2
AddMeter 10
Call MsiExec /p "%SRC%\Update\AcrobatUpd912_all_incr.msp" /qb /Li "%MSILogFile912%"
IF DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%_9.1.2") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%_9.1.2") == "0" Then "AbortMSIInst" Else "Set:UpdateFertig" EndIf
Del %MSILogFile912%

[SET:UpdateFertig]
Del %MSILogFile%
Del %MSILogFile91%
Del %MSILogFile911%
Del %MSILogFile912% 

Posted: 24. Jun 2009, 10:30
by mniemann
na super, dann hätte ich mir meine Anpassung ja auch sparen können ;)

wer versucht sich nun an einer sparsameren, aber dennoch sicheren (gutes Errorhandling wie von bboehm vorgeschlagen)?

Posted: 29. Jun 2009, 13:47
by Julia
So, ich habe das Ganze versucht etwas zu überarbeiten und zu verbessern.

Bei dem Skript von Bernhard gibt es leider ein paar Sachen, die ich so ungern lösen würde oder so nicht wirklich gut funktionieren.
1. Warum brauche ich mehrere Logfiles? Es reicht doch eins. Die Logs von erfolgreichen Installationen sind uninteressant, ich brauche nur die letzte(n) um einen Fehler zu finden.
2. Brauch in der Sektion Installation nicht die Version geprüft werden, da diese Sektion nur aufgerufen wird, wenn die Software gar nicht installiert ist. Wie soll die Variable dann gesetzt werden?
3. Warum muss ich nur bei Version 9.0.0 oder 9.1.2 ein Update gemacht werden? Warum nicht z.B. bei Version 9.1?
Und genau dann kommt das große Problem... Wann mache ich ein Repair und wann ein Update???

Daher bin ich nun nach längeren Hin- und Her-Überlegen und rumprobieren zu dem Ergebnis gekommen, dass es (leider) doch besser ist ein seperates Update-Paket zu erstellen. Ansonsten muss ich ganz auf die Repair-Funktion verzichten.
Dieses Update-Paket prüft dann erst, ob der Adobe Reader installiert ist, ließt die Version aus und installiert die fehlenden Updates. Anschließend wird noch geprüft ob Adobe Acrobat auch installiert ist. Wenn ja, wird die Version auch ausgelesen und die fehlenden Updates werden installiert.
Das Skript wäre auch schon soweit fertig, ich würde es nur gerne vorher noch testen, bevor ich es euch hier zur Verfügung stelle.