Hallo,
wir wollen in unserer Firma die LibreOffice Version von 3.5.5.3 auf 4.1.5 aktualisieren, aber leider gelingt es mir nicht die veraltete Version zu deinstallieren. Ich habe im Produktpaket folgendes für die Deinstallation stehen:
;Variable f den msiexec Aufruf zur Deinstallation
DefVar $UninstallCommand$
;Variable f die jeweilige Version. Wird aus der Registry ausgelesen
DefVar $DisplayName$
;Uninstall LibreOffice 3.5.5
Set $DisplayName$ = GetRegistrystringvalue32("[HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0E8E4718-0702-4D33-B007-5E95849BAB3C}] $
if not ($DisplayName$ = "")
Message "Deinstalliere "+$DisplayName$
set $UninstallCommand$ = "MsiExec.exe /qn /x {0E8E4718-0702-4D33-B007-5E95849BAB3C}"
Winbatch_Uninstall
sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins"
endif
Ich dachte, es reicht, wenn ich den Uninstall-String aus der Registry suche und ihn hinter "[...]\Uninstall\{" eintrage. Wenn ich nun die Deinstallation "anstupse" wird diese auch beim Systemstart ausgeführt, aber LibreOffice befindet sich immer noch auf dem Rechner :/
Ich hoffe, dass mir da wer weiterhelfen kann.
Gruß
D1Ck3n
Zuletzt geändert von D1Ck3n am 12 Mär 2014, 14:28, insgesamt 1-mal geändert.
Set $DisplayName$ = GetRegistrystringvalue32("[HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0E8E4718-0702-4D33-B007-5E95849BAB3C}] $
Die muss eher so aussehen (habe ich direkt aus meinem Paket kopiert). Bei dir steht ein Dollar Zeichen, wo eigentlich DisplayName") stehen sollte.
Set $DisplayName$ = GetRegistrystringvalue32("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B1F9C834-0594-4563-B344-4ED9599A5945}] DisplayName")
Wow6432Node im Pfad sollte bei Verwendung von GetRegistrystringvalue32 nicht notwendig sein, ich denk aber mal dass es auch nicht schadet.
Set $DisplayName$ = GetRegistrystringvalue32("[HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0E8E4718-0702-4D33-B007-5E95849BAB3C}] $
Die muss eher so aussehen (habe ich direkt aus meinem Paket kopiert). Bei dir steht ein Dollar Zeichen, wo eigentlich DisplayName") stehen sollte.
Set $DisplayName$ = GetRegistrystringvalue32("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B1F9C834-0594-4563-B344-4ED9599A5945}] DisplayName")
Wow6432Node im Pfad sollte bei Verwendung von GetRegistrystringvalue32 nicht notwendig sein, ich denk aber mal dass es auch nicht schadet.
Hallo Matze,
da habe ich einen kleinen Fehler bei dem kopieren aus dem Putty gemacht
Set $DisplayName$ = GetRegistrystringvalue32("[HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0E8E4718-0702-4D33-B007-5E95849BAB3C}] DisplayName")
Warum macht ihr euch das Leben mit den kryptischen und sich ändernden Uninstall-Strings so schwer? Gerade bei MSI-Methoden, wo sich die Software sauber ins System einträgt, kann ich mit einer Zeile sogar grundverschiedene Versionen einer Software vom Rechner fegen:
; Angabe der Deinstallationsroutine
Set $local_wmic$ = "wmic.exe"
; Angabe des WMIC-Actionsstrings
Set $local_wmic_actionstring$ = EscapeString: product where "name like 'Java(TM) 6%%' or name like 'Java(TM) 7%%' or name like 'Java 7%%'" call uninstall /nointeractive
[DosInAnIcon_uninstall]
"$local_wmic$" $local_wmic_actionstring$
mensch90 hat geschrieben:Warum macht ihr euch das Leben mit den kryptischen und sich ändernden Uninstall-Strings so schwer? Gerade bei MSI-Methoden, wo sich die Software sauber ins System einträgt, kann ich mit einer Zeile sogar grundverschiedene Versionen einer Software vom Rechner fegen:
; Angabe der Deinstallationsroutine
Set $local_wmic$ = "wmic.exe"
; Angabe des WMIC-Actionsstrings
Set $local_wmic_actionstring$ = EscapeString: product where "name like 'Java(TM) 6%%' or name like 'Java(TM) 7%%' or name like 'Java 7%%'" call uninstall /nointeractive
[DosInAnIcon_uninstall]
"$local_wmic$" $local_wmic_actionstring$
Zack, aus die Maus
Hi mensch90,
könntest du mir dein ganzes Uninstall Skript posten?
Das ist im Grunde mein Uninstall-Script Das läut so bereits.
Danach kann man einfach das neue LO installieren. Um Profilsicherungen etc. muss man sich natürlich noch kümmern.
Du kannst dir in einer cmd mit "wmic product list > C:\suchdirwasaus.txt" die Liste der installierten Software ausgeben lassen und brauchst deinen Softwarenamen nur in mein Script einbauen.
; Angabe der Deinstallationsroutine
Set $local_wmic$ = "wmic.exe"
; Angabe des WMIC-Actionsstrings
Set $local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
mensch90 hat geschrieben:Das ist im Grunde mein Uninstall-Script Das läut so bereits.
Danach kann man einfach das neue LO installieren. Um Profilsicherungen etc. muss man sich natürlich noch kümmern.
Du kannst dir in einer cmd mit "wmic product list > C:\suchdirwasaus.txt" die Liste der installierten Software ausgeben lassen und brauchst deinen Softwarenamen nur in mein Script einbauen.
; Angabe der Deinstallationsroutine
Set $local_wmic$ = "wmic.exe"
; Angabe des WMIC-Actionsstrings
Set $local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
Das habe ich versucht, aber ich bekomme beim Start der Deinstallation folgende Fehlermeldung:
Section sub "P:\install\libreoffice3.5.5\SubUninstall.in" (Command in line 10):
$local_wmic$ ="wmic.exe"
Variable unbekannt
und
Section sub "P:\install\libreoffice3.5.5\SubUninstall.in" (Command in line 13):
$local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
Variable unbekannt
mensch90 hat geschrieben:Das ist im Grunde mein Uninstall-Script Das läut so bereits.
Danach kann man einfach das neue LO installieren. Um Profilsicherungen etc. muss man sich natürlich noch kümmern.
Du kannst dir in einer cmd mit "wmic product list > C:\suchdirwasaus.txt" die Liste der installierten Software ausgeben lassen und brauchst deinen Softwarenamen nur in mein Script einbauen.
; Angabe der Deinstallationsroutine
Set $local_wmic$ = "wmic.exe"
; Angabe des WMIC-Actionsstrings
Set $local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
Das habe ich versucht, aber ich bekomme beim Start der Deinstallation folgende Fehlermeldung:
Section sub "P:\install\libreoffice3.5.5\SubUninstall.in" (Command in line 10):
$local_wmic$ ="wmic.exe"
Variable unbekannt
und
Section sub "P:\install\libreoffice3.5.5\SubUninstall.in" (Command in line 13):
$local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
Variable unbekannt
Opsi erkennt die Variablen nicht :/
Du musst natürlich Variablen auch selbst vorher definieren, sonst kann es nicht funktionieren. (Opsi Grundlagen)
mensch90 hat geschrieben:Das ist im Grunde mein Uninstall-Script Das läut so bereits.
Danach kann man einfach das neue LO installieren. Um Profilsicherungen etc. muss man sich natürlich noch kümmern.
Du kannst dir in einer cmd mit "wmic product list > C:\suchdirwasaus.txt" die Liste der installierten Software ausgeben lassen und brauchst deinen Softwarenamen nur in mein Script einbauen.
; Angabe der Deinstallationsroutine
Set $local_wmic$ = "wmic.exe"
; Angabe des WMIC-Actionsstrings
Set $local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
Das habe ich versucht, aber ich bekomme beim Start der Deinstallation folgende Fehlermeldung:
Section sub "P:\install\libreoffice3.5.5\SubUninstall.in" (Command in line 10):
$local_wmic$ ="wmic.exe"
Variable unbekannt
und
Section sub "P:\install\libreoffice3.5.5\SubUninstall.in" (Command in line 13):
$local_wmic_actionstring$ = EscapeString: product where "name like 'LibreOffice%%'" call uninstall /nointeractive
Variable unbekannt
Opsi erkennt die Variablen nicht :/
Du musst natürlich Variablen auch selbst vorher definieren, sonst kann es nicht funktionieren. (Opsi Grundlagen)
Ups, da war ja was
Aber leider deinstalliert er das LO aber immer noch nicht Opsi zeigt mir am Anfang, dass er das deinstalliert, aber es ist immer noch auf dem PC.