Seite 1 von 1

Deinstallation eines Diff-Paketes erzeugt Fehlermeldung

Verfasst: 22. Mär 2006, 11:13
von Thomas Weinberger
Hallo,

bei der Deinstallation eines "gedifften" Paketes kommt die Fehlermeldung

"Kann Schlüssel bzw. Wert 'C:\Programme\Mozilla\Firefox\plugins\NPSWF32.dll" in der Registrierungsdatenbank nicht löschen.
Fehler 2!"

Dies tritt vermutlich deshalb auf, da die Setup.exe an dieser Stelle eine DLL-Datei deinstallieren (und löschen) möchte, die auf einigen PCs nicht vorhanden und/oder nicht registriert ist.

Wir suchen nun eine Möglichkeit, dass Setup.exe bei der Deinstallation diese Fehlermeldung nicht angezeigt und den Fehler still übergeht.

Die Silent-Levels /S2 oder /S3 bewirken dies leider nicht!

Danke,
Thomas Weinberger

Verfasst: 22. Mär 2006, 11:24
von Hendrik_Ambrosius
Frage: Erfolgt die Registrierung der DLL via Reg-Sektion oder innerhalb des Kopierbefehls (REGISTER-Flag)?

Optimal wäre, wenn Sie mal die entsprechenden Zeilen der setup.inf (Kopierbefehl und Registrierung) hier posten könnten.

Verfasst: 22. Mär 2006, 11:30
von Thomas Weinberger
Die Datei wird in der [Set:Product] Sektion kopiert und (durch den SHAREDLL Parameter) als gemeinsam genutzte Datei eingetragen:

; Macromedia Flash Plugin
1:plugins\NPSWF32.dll, , SHAREDDLL, 832728

Verfasst: 22. Mär 2006, 12:28
von Hendrik_Ambrosius
Dann dürfte es aber bei der Deinstallation keine Fehlermeldung geben.
Aber wie auch immer - zur Not einfach die Datei beim Deinstallieren überspringen:

1:plugins\NPSWF32.dll, , SHAREDDLL DONTDELETE, 832728

Eigentlich müßte das gesamte App-Verzeichnis am Ende der Installation sowieso pauschal gelöscht werden, so dass die Datei dann nicht stört.

Verfasst: 22. Mär 2006, 12:47
von Thomas Weinberger
ja, wenn alles passt sollte die Deinstallation bei allen PCs möglich sein.

Dennoch hat es stellenweise nicht funtkioniert und wir mussten uns mit einem Workaround helfen, in dem wir die Deinstallation gezielt in eine besondere Sektionen leiten und dort alles notwendige tun und dann mit exit das Skript abbrechen.

Allerdings ist das genau wie Ihr Vorschlag eben nur ein Workaround und es wäre sinnvoller, wenn die Empirum Setup.exe den Fehler selbst abfangen und mit Parametern steuerbar reagieren würde! Schließlich meckert Setup.exe ja auch nicht, wenn bei der Deinstallation Registry-Keys gelöscht werden sollen, die nicht (mehr) da sind.

Vorschlag für Setup.exe:
/I = Ignorieren von Deregistrierungsfehlern bei der Deinstallation

Verfasst: 22. Mär 2006, 12:52
von Hendrik_Ambrosius
Wie gesagt - eigentlich müßte es automatisch von der setup.exe behandelt werden. Wenn nicht haben wir es hier eindeutig mit einem Fehler zu tun. Zum Nachvollziehen bitte das Paket an den support senden mit einer Referenz zu diesem Forums-Eintrag.

Die gesonderte Sektion ist aber nicht notwendig wenn Sie die o.a. von mir vorgeschlagene Option hinzufügen.

Verfasst: 22. Mär 2006, 13:08
von Thomas Weinberger
Inzwischen sind wir dem Fehler genauer auf die Spur gekommen:

auf einigen PCs wurde die DLL-Datei

C:\Programme\Mozilla\Firefox\plugins\NPSWF32.dll

trotz des Aufrufs in

[Set:Product]
1:plugins\NPSWF32.dll, , SHAREDDLL, 832728


nicht oder nicht erfolgreich als gemeinsame Datei registriert. Es fehlt der Reg-Eintrag unter HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDlls für diese Datei!

Eine Deinstallation erzeugt dann das oben beschriebene Fehlerfenster bzw. bricht bei /S2 erfolglos ab.

Dies kann einfach nachvollzogen werden, indem man ein Paket baut, was eine DLL-Datei mit SHAREDLL kopiert, man anschließend den zu dieser Datei gehörigen Schlüssel unter HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDlls manuell löscht und dann das Paket deinstalliert.

Daß dies nicht der Normalfall ist dürfte klar sein, aber meiner Meinung nach sollte Setup.exe diesen Sonderfall abfangen und ohne Fehlermeldung (=silent) reagieren können.

Gruß,
T. Weinberger

Verfasst: 22. Mär 2006, 13:29
von Hendrik_Ambrosius
Habe es mal nachgestellt und bei mir tritt es auch so auf.
Werde dazu einen Call aufmachen.

Verfasst: 23. Mär 2006, 11:10
von epeters
Hallo Herr Weinberger,

Ich habe das jetzt soweit nachgestellt:

Das Verhalten ist so korrekt. Diese Fehlermeldung wird ausgegeben, wenn der entsprechende Registry- Schlüssel nicht mehr vorhanden ist. Das führt aber nicht zum Abbruch der Deinstallation sondern ist nur ein Hinweis an den Benutzer.

Dieser Hinweis läßt sich allerdings auch unterdrücken, indem Sie den Parameter /S2 in den Befehlsaufruf aufnehmen.