Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Unregister COM Provider


11 replies to this topic

Hensz

Hensz
  • Full Members
  • 23 posts

Posted 28 April 2005 - 12:49

Hallo Leute!

Wie kann man dafür sorgen, dass ein bei der Installation registrierter COM Provider (DLL, einzige Datei einer Komponente, als key file gesetzt) bei der Deinstallation wieder entfernt wird? Ich habe drei Möglichkeiten der Registrierung gefunden, bei keiner davon hat das "unregistrieren" funktioniert. sad.gif

Zunächst habe ich in den Einstellungen der Datei "self-register" ausgewählt. Im zweiten Versuch habe ich in den Einstellungen der Kompontene "COM extract at build" auf YES gesetzt. Der letzte Versuch: unter Advanced Settings-COM Registration der Kompontene habe ich die entsprechenden Informationen eingetragen ("Extract COM Data from Key File").

Woran liegt es, dass in keinem dieser Fälle der Provider korrekt "unregistriert" wird? Die in der Komponente enthaltene Datei wird korrekt entfernt. Manuell kann ich den Provider auch "unregistrieren". Ich bin für jede Hilfe und Hinweise zur Lösung des Problems dankbar!

CU, Hensz

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 April 2005 - 13:30

Der Installer sollte alle Registry-Einträge die er angelegt hat, um die Komponente zu registrieren, auch wieder entfernen. Schreib mal eine Logdatei um zu sehen was bei der Installation wirklich vor sich geht.

Hensz

Hensz
  • Full Members
  • 23 posts

Posted 29 April 2005 - 13:38

QUOTE
Der Installer sollte alle Registry-Einträge die er angelegt hat, um die Komponente zu registrieren, auch wieder entfernen.

Das "sollte" ist wohl das Problem. Irgendwie macht er das wohl nicht.

Ich habe die Log-Dateien der Installation und Deinstallation als Zip-Datei angehängt. Die beiden Provider pgole.dll und RobaseOleDbProvider.dll sind in der aktuellen Version als Self-Register markiert. Sie werden laut Log-Datei auch beim Deinstallieren erkannt, nur funktioniert das Entfernen der Registrierung wohl nicht...

CU, Hensz

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 April 2005 - 13:52

Probiers mal mit dem Extrahieren der COM-Informationen. Die ZIP-Datei war übrigens nicht angehängt (bitte Größenlimit beachten)

Hensz

Hensz
  • Full Members
  • 23 posts

Posted 02 May 2005 - 11:55

Extrahieren der COM-Information habe ich auch schon probiert, ohne den gewünschten Erfolg (siehe auch mein erstes Posting).

Wie hoch ist denn das Größenlimit? Und welcher Log-Level brauchst du, damit du etwas anfangen kannst? Ist habe /lv* gemacht, das ist natürlich ziemlich viel Text.

CU, Hensz

Hensz

Hensz
  • Full Members
  • 23 posts

Posted 02 May 2005 - 12:17

Ok, das Größenlimit wird beim Posten angezeigt. Hier nun die "normale" Log-Variante /l. Oder mag das Forum Zip-Dateien nicht?

CU, Hensz

Attached Files

  • Attached File  log.zip   3.31KB   51 downloads


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 03 May 2005 - 17:14

Du wirst ein ausführliches Log der Deinstallation benötigen. Dort drin suchst du nach den betreffenden Komponenten und schaust nach, welche Action ihnen zugeordnet ist. Zusätzlich kannst du im Log auch nach den Registry-Einträgen suchen.

Hensz

Hensz
  • Full Members
  • 23 posts

Posted 04 May 2005 - 07:42

Ok, dann hier noch einmal die ausführlichen Logs. Die Datei ist btw. nur 35kB groß, sollte also ins Forum hoch geladen werden können. Ich frage mich nur, wieso das vorher nicht geklappt hat...

Mit dem Uninstall-Log kann ich nicht wirklich was anfangen, dort stehen die Provider (pgoledb.dll und RobaseOLEDBProvider.dll) nur ISSelfRegisterCosting, dann erst wieder unter RemoveFiles.

Bei der Installation erscheinen die beiden Provider unter ProcessComponents (Updating component registration), dies klingt für mich nach Registrierung.

CU, Hensz

Attached Files

  • Attached File  log.zip   34.63KB   51 downloads


Sascha M.

Sascha M.
  • Full Members
  • 57 posts

Posted 04 May 2005 - 09:06

Hallo!
Falls es gar nicht geht, benutze das tool regsvr32.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 May 2005 - 13:58

Ich hatte jetzt nicht die Zeit, die Logdatei im Detail zu analysieren, aber mir sind Einträge wie dieser aufgefallen:
QUOTE
MSI (s) (EC:2C) [08:34:10:533]: Disallowing uninstallation of component: {12D9861B-FEE6-4D52-AB50-851C683ECDE4} since another client exists

Könnte das dein Problem sein?

Ausserdem kannst du im Log mal nach den GUIDs der betreffenden Komponenten suchen.

Hensz

Hensz
  • Full Members
  • 23 posts

Posted 24 May 2005 - 08:40

QUOTE (Sascha M. @ 2005-05-04 09:06)
Falls es gar nicht geht, benutze das tool regsvr32.

Hi!

Wie meinst du das? Nach der Deinstallation existieren die Dateien nicht mehr, daher funktioniert ein Aufruf von regsvr32 auch nicht. Oder meinst du, dass ich eine Custom Action schreiben soll, die regsvr32 aufruft?

Eigentlich sollte das doch schon automatisch passieren, denn das ist doch afaik der Sinn von "self-register" oder dem Registrierungs-Mechanismus von DevStudio...

@Stefan: Die GUID ist von einer anderen Komponente (MFC7.1), das ist schon ok. Wenn ich nach der GUID der entsprechenden Komponente suche finde ich keine Hinweise auf Fehler. Allerding kann ich auch nicht erkennen, wo die Komponenten "deregistriert" werden sollen. Die Operation ComponentUnregister wird für die Komponente aufgerufen, außerdem ISSelfRegisterCosting. Bei den Operationen ISUnSelfRegisterFiles, UnRegisterCOMProviders und UnregisterTypeLibraries passiert nicht, nach der letzteren wird eine "remote custom action" UnRegisterProviders aufgerufen, zu der auch nichts im Logfile steht.

Bei der Installation habe ich übrigens auch nicht gefunden, wo konkret die Provider registriert werden. Hast du mir vielleicht einen Hinweis, wonach ich suchen muss?

CU, Hensz

Sascha M.

Sascha M.
  • Full Members
  • 57 posts

Posted 24 May 2005 - 09:37

Ich würde die Datei ganz normal installieren. Ohne irgendwelche Einstellungen mit SelfRegister. Beim Installieren, nachdem alle Files kopiert sind, das Programm regsvr32 aufrufen. Wie Du das machst ist eigentlich egal. Wenn Du in die Windowskonsole gehst und regsvr32 aufrufst, dann bekommst Du alle Parameter, die Du brauchst.
Beim Deinstallieren, bevor die Dateien gelöscht werden, rufst Du wieder regsrv32 auf, nur mit dem Parameter /u /s.

Viel Spass
Sascha