Altes Paket mit neuen Paket entfernen

Antworten
malte
Beiträge: 51
Registriert: 24. Apr 2011, 22:47
Kontaktdaten:

Altes Paket mit neuen Paket entfernen

Beitrag von malte » 25. Okt 2012, 18:36

Hallöchen,

Ich habe bei unserem ersten Java Paket etwas getrieft und würde das nun durch ein neues Paket ändern wollen.

Das Alte trägt noch "update X" im Namen, mein Plan ist es, ein neues Paket mit der aktuellen Version zu Erstellen und das neue Paket soll nun das alte Paket deinstallieren.

Der Aufruf dafür wäre ja:
"C:\Program Files (x86)\Common Files\Setup32\Setup.exe" "C:\Program Files (x86)\java\jre7\Install\Setup.inf" /U /S1
In der Kommandeozeile funktioniert das auch einwandfrei, aber der Aufruf über das Paket klappt nicht. Entweder hab ich den Syntax falsch oder könnte es sein, das setup.exe keine zweite Instanz von sich selber während der Installation aufmachen kann?

Hier mal der relevante AUsschnitt:

Code: Alles auswählen

[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

#Set:Product, DONTDELETE
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Ini:Product, DONTDELETE
#Security:Product
#Set:Uninstall, DELETE
#Set:ChangeMSISourcelist, DONTDELETE

[Set:Product]
Del "%MSILogFile%"
;Prüfe auf altes Java Paket
If DoesRegKeyExist ("HKLM,SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Oracle Java(TM) 7 Update 5 (x86) 7.0.80,UnInstallString") == "1" Then "UninstallOldJavaPackage" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217009FF},UnInstallString") == "1" | DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217009FF},UnInstallString") == "1" Then "RepairMSI" Else "InstallMSI" EndIf

[RepairMSI]
AddMeter -1
Call MsiExec /Fvomus "%SRC%\jre1.7.0_09.msi"   REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qr /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesTextInFileExist ("%ReInstSuccessMessage1031%", "%MSILogFile%") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1031_1%", "%MSILogFile%") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033%", "%MSILogFile%") == "0" & DoesTextInFileExist ("%ReInstSuccessMessage1033_1%", "%MSILogFile%") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"

[InstallMSI]
AddMeter -1
Call MsiExec /I "%SRC%\jre1.7.0_09.msi"   REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qr /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217009FF},UnInstallString") == "0" & DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217009FF},UnInstallString") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"

[Set:Uninstall]
-Del "%MSILogFile%"
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217009FF},UnInstallString") == "1" | DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217009FF},UnInstallString") == "1" Then "AbortMSIUnInst" EndIf
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
-Call MsiExec /X {26A24AE4-039D-4CA4-87B4-2F83217009FF} REBOOT=REALLYSUPPRESS /qr /Li "%MSILogFile%"
-AddMeter -1

[RebootRequired]
SetReboot 1

[AbortMSIInst]
ErrorLogMsg %ErrorLogMessage% ErrorLevel: %ErrorLevel%
Abort

[AbortMSIUnInst]
-Abort
-ErrorLogMsg %ErrorLogMessage% ErrorLevel: %ErrorLevel%

[UninstallOldJavaPackage]
Call "C:\Program Files (x86)\Common Files\Setup32\Setup.exe" "C:\Program Files (x86)\java\jre7\Install\Setup.inf" /U /S1
Sleep 10000

[SET:ChangeMSISourcelist]
ReplaceRegValue (HKCR,"Installer\Products\%V_MSIInstallerID%\Sourcelist","LastUsedSource","\\%EmpirumServer%","\\%%EmpirumServer%%", 1)
ReplaceRegValue (HKCR,"Installer\Products\%V_MSIInstallerID%\Sourcelist\Net","1","\\%EmpirumServer%","\\%%EmpirumServer%%", 1)

[Reg:OnUninstallProduct]

[Reg:Product]

[Ini:Product]

[Security:Product]

[Shell:Product]

Er spirngt in die [UninstallOldJavaPackage] Sektion, aber macht sofort ohne Fehler weiter, ohne das er den befehl ausführt.

Wenn es sonst nicht geht, überschreib ich das alte Paket einfach und lass es mittels Cleanup Paket vom System entfernen.



Gruß

Malte

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7592
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Re: Altes Paket mit neuen Paket entfernen

Beitrag von Hendrik_Ambrosius » 25. Okt 2012, 21:54

Das ist zwar seeeeehr unsauber, sollte aber gehen.
Machen Sie doch einfach mal ein "CALL CMD.EXE" statt des Aufrufs und geben Sie dann den Befehl direkt ein.
Geht es dann?
Manchmal hilft auch der Aufruf aus einer Batchdatei:
call cmd.exe /c<pfad>\uninstall.bat
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

malte
Beiträge: 51
Registriert: 24. Apr 2011, 22:47
Kontaktdaten:

Re: Altes Paket mit neuen Paket entfernen

Beitrag von malte » 25. Okt 2012, 23:24

Danke für den Tipp, hab das gleich mal ausprobiert. Nachdem call cmd nicht wollte war das Problem auch recht schnell gefunden: Die SetupInfDir vom alten Paket und neuem Paket ist die gleiche... dadurch wird beim Aufruf die alte setup.inf von der neuen überschrieben und mein Aufruf läuft ins leere... Es funktioniert nun :).

Aber zum Thema unsauber, was wäre in solch einen Fall den die sauberste Lösung, abgesehen von der Deinstallation des alten pakets per zuweisung? Bin für Vorschläge offen :).

Die De- und Neuinstalation von Java kam mir sowieso ganz gelegen, um noch einige feinheiten wie das Entfernene des IE AddIns mit reinzubringen, so muss ich mir dafür nicht die Registry Keys raussuchen :).


Gruß Malte

Benutzeravatar
r.wiegel
Beiträge: 855
Registriert: 05. Feb 2010, 13:45
Wohnort: Regensburg
Kontaktdaten:

Re: Altes Paket mit neuen Paket entfernen

Beitrag von r.wiegel » 25. Okt 2012, 23:47

Hallo,
ich würde mich gerne zum Mitternachtsparty anschließen. :D
Deinstallation des alten pakets per zuweisung
Es ist keine schlechte Idee: mit einer zusätzlichen Abhängigkeit für das neue Paket: das alte soll nicht installiert sein. (für alle Fälle...)


Alternativ hätte ich so machen:
1. AskUninstallOld auf 0 setzen.
2. in [Set:Product]
msiexec /x {26A24AE4-039D-4CA4-87B4-2F83217009FF} /qn
; /qn-wenn die alte Version nicht installiert ist, schießt ins leere, keine Fehlermeldung bzw. unterdrückt...
3. in [Reg:Product]
; Löschen Empirum-Einträge zum Paket:
-HKLM,...

Wichtig ist dabei das alte Paket in der Gruppe einfach zu löschen, sonst wird es nach der Aktion wieder installiert.


Gruß
Roman
Viele Grüße
Roman Wiegel
IT-Consultant

MR Datentechnik - Vertriebs- und Service GmbH
Client Management

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7592
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Re: Altes Paket mit neuen Paket entfernen

Beitrag von Hendrik_Ambrosius » 26. Okt 2012, 09:17

Sauber wäre einfach das alte Paket vorher regulär zu deinstallieren.
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

Antworten

Zurück zu „Paketierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste