Page 1 of 1

Probleme beim entfernen von RegistryKeys

Posted: 31. Oct 2011, 11:37
by MATSupport
Hallo Forum,

ich teste gerade das Paketieren mittels Empirum in einer Testumgebung.
Hierzu möchte ich auf einem Rechner mit alter Adobe Reader Version die aktuellste Version installieren und dabei ältere deinstallieren sowie die Registry bereinigen.

Installation und Update der aktuellsten Version funktioniert.

Das erste Problem, auf das ich gestossen bin ist folgendes:
Ich versuche, aus der Registry bestimmte Keys vor der Installation des neuen Pakets zu löschen.
Ich möchte mehrere keys löschen, daher habe ich mehrere if's verbaut:

Dazu habe ich folgendes gebaut:

Code: Select all

[Product]
If DoesRegKeyExist("HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Adobe Reader 9.3 9.3.0'") =="1" Then "Reg:DelOldKey2" EndIf
If DoesRegKeyExist("HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test key 1.0 1.0.0'") =="1" Then "Reg:DelOldKey1" EndIf


;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

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

[Reg:DelOldKey1]
-HKLM,"'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test key 1.0 1.0.0'"

[Reg:DelOldKey2]
-HKLM,"'\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Adobe Reader 9.3 9.3.0'"
Problem: durch die Punkte im Namen wird der Key scheinbar nicht gelöscht.
Wenn der Name keine Punkte enthält, gehts einwandfrei.

Frage1:
Mache ich einen Fehler in der Syntax?


Und meine 2. Frage:
Kann ich eigentlich eine if Abfrage bauen, die einen registry prüft, und wenn dieser vorhanden ist erst mal ein msiexec /x auf den key macht und dann erst in den Teil der Installation springt?

Die Idee ist klar, erst mal alles alte runter, dann das neue drauf.
Hat jemand da zufällig ein Beispiel parat?

Gruesse

Re: Probleme beim entfernen von RegistryKeys

Posted: 31. Oct 2011, 12:09
by Hendrik_Ambrosius
Das einfache Anführungszeichen im String sollte auf jeden Fall raus.
Vielleicht liegt es daran schon?!

Re: Probleme beim entfernen von RegistryKeys

Posted: 31. Oct 2011, 12:32
by MATSupport
Hallo Herr Ambrosius,
der Einwand ist korrekt, die Kombination habe ich auch schon gentestet:

Code: Select all

[Product]
If DoesRegKeyExist("HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Adobe Reader 9.3 9.3.0'") =="1" Then "Reg:DelOldKey1" EndIf
If DoesRegKeyExist("HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test Key 1.0 1.0.0'") =="1" Then "Reg:DelOldKey2" EndIf


;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

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

[Reg:DelOldKey1]
-HKLM,"\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Adobe Reader 9.3 9.3.0"

[Reg:DelOldKey2]
-HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test Key 1.0 1.0.0"
Nun löscht er den Testkey erfolgreich weg, nur der Adobe-Key ist immer noch da.

Ich denke schon das die Syntax generell richtig ist. Mir ist schleierhaft, warum nur der eine Schlüssel entfernt wird und der andere nicht.

Gruss

Re: Probleme beim entfernen von RegistryKeys

Posted: 31. Oct 2011, 12:48
by Hendrik_Ambrosius
Nehmen Sie mal das Löschen des Keys via Differenzverfahren auf.
Dann haben Sie die 100% richtige Syntax frei Haus.

Re: Probleme beim entfernen von RegistryKeys

Posted: 31. Oct 2011, 15:55
by MATSupport
Guten Tag Herr Ambrosius,

ich habe nun mal einen Diff drüberlaufen lassen.
Das Ergebnis führte leider nicht zum erfolg.

Der (oder die beiden) besagten Keys sind anschließend nach dem Diff nicht in der Setup.inf zu finden.
Die Keys befinden sich beide unterhalb von "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\", kann es sein das dieser Pfad beim Diff ausgenommen ist?

Gruesse

Ralf

Re: Probleme beim entfernen von RegistryKeys

Posted: 31. Oct 2011, 16:04
by Hendrik_Ambrosius
Ja, müssen Sie vorher aus der diff.inf entfernen.

Gelöst: Probleme beim entfernen von RegistryKeys

Posted: 11. Nov 2011, 14:44
by MATSupport
Hallo Forum,

hat hervorragend geklappt, vielen Dank.

Re: Probleme beim entfernen von RegistryKeys

Posted: 26. Jan 2017, 13:14
by doomsoul11223
Auch wenn hier schon länger nichts mehr geschrieben wurde, wollte ich dem nächsten admin der ein ähnliches Problem hat Stundenlange Recherchen ersparen :wink:
Ich hatte auch ein Problem mit dem entfernen eines Registry Keys, der nur mit Admin-Rechten zu löschen ging und bin auf diesen thread gestoßen. Allerdings konnte ich den Registry Key durch keinen der genannten Wege entfernen.
Konkret ging es um den Key, den PDF Creator beim deinstallieren setzt wenn ein Neustart erforderlich ist: HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce,PDFCreatorRestart

Ich hatte alle möglichen varianten ausprobiert, über Setup.inf mittel, Batch Datei, Regedit, cmds... Der Key war nicht zu löschen.


Schließlich konnte ich das Problem über den Aufruf einer Administrativen CMD lösen:

[Set:Product]
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce,PDFCreatorRestart") == "1" Then "Set:DelRestartPending" EndIf

[Set:DelRestartPending]
Call cmd /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "Start-Process cmd \"/c REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v PDFCreatorRestart /f\" -Verb RunAs"

Re: Probleme beim entfernen von RegistryKeys

Posted: 30. Apr 2019, 13:36
by pzaenker
Ich habe eine Lösung gefunden, welche bei mir die Reg Einträge bei der Deinstallation berücksichtigt.
Ein dem Diff erstelltes Paket, hat die Werte richtig gesetzt, nach langem suchen habe ich den kleinen Unterschied gefunden:

[Application]
DataDir=%Personal%

Nachdem ich die Zeile DataDir angelegt habe, wurden auch die Zeilen in Reg:OnUninstallProduct richtig ausgeführt.