Announcement

Collapse
No announcement yet.

Über COM+ Admin dll Anwendungen löschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Über COM+ Admin dll Anwendungen löschen

    Hallo,

    da das importieren von *.msi Dateien über die Komponentendienste
    vorhandene Anwendungen nicht überschreibt (wenn man dutzende Pakete auf mehrere Server updatet nervt das), schreibe ich gerade ein eigenes Tool um diese Pakete vor dem erneuten Import automatisch zu löschen.

    Der Code zum löschen eines Paketes sieht etwa wie folgt aus :

    COMAdminCatalog1.QueryApplicationFile(MSIFilename, Appname, AppDesc, HasUsers, isProxy, FileNames);
    COMAdminCatalogCollection1.ConnectTo((COMAdminCata log1.GetCollection('Applications') as ICatalogCollection));
    COMAdminCatalogCollection1.Populate;
    for i := 0 to COMAdminCatalogCollection1.Count-1 do
    begin
    COMAdminCatalogObject1.ConnectTo(COMAdminCatalogCo llection1.Item[i] as ICatalogObject);
    if COMAdminCatalogObject1.Name = Appname then
    begin
    COMAdminCatalogCollection1.Remove(i);
    iErr := COMAdminCatalogCollection1.SaveChanges;
    break;
    end;
    end;

    Ich hole mir also zuerst aus dem MSIFile den Anwendungsnamen
    durchsuche die Collection dann nach einer Anwendung die so heißt,
    und versuche dann die Anwendung zu löschen.
    Es bleibt aber beim Versuch den SaveChanges liefert S_FALSE und die
    Anwendung ist nicht richtig gelöscht.

    a.) Muß ich vor dem löschen alle an dieser Anwendung hängende
    Komponenten,Rollen,Abonnements u.s.w. auch explizit löschen?
    b.) Wie ließt man die ErrorInfo Collection richtig aus
    GetCollection('ErrorInfo',null) oder GetCollection('ErrorInfo','')
    funktioniert nicht.
    c.) Wo bekommt man eine Beschreibung der Funktionalität der COM+ Admin Dll
    her die aktueller ist als die der MSDN. Stand von MSDN Online zum Thema
    COM+ ca NOV2000. Ausgeschmückt mit meinen aktuellen Lieblingsspruch
    '[This is preliminary documentation and subject to change]' AARRGGGHH!

  • #2
    Hallo,

    über <b>RemoveEnabled</b> stellt ICatalogCollection einen Weg zur Verfügung, über den der Aufrufer vorher nachfragen kann, ob der Aufruf von Remove zur Zeit zulässig ist.

    P.S: Der Hinweis "<i>This is preliminary documentation and subject to change</i>" bezieht sich auf Windows XP, denn Microsoft dokumentiert bereits im Voraus. Die Doku für Windows 2000 ist auf dem neuesten Stand

    Comment


    • #3
      Hallo,

      danke für den Hinweis. Ich habe den entsprechenden Test auf RemoveEnabled eingebaut. Die Collection sagt ich darf die Applikation löschen ,SaveChanges liefert danach aber einen Fehler und die entsprechenden Applikationen ist nicht richtig gelöscht (noch vorhanden aber nicht mehr benutzbar). SaveChanges scheint nicht transaktional zu arbeiten, schade eigentlich.
      Um an den Fehlergrund zu kommen würde ich gerne die ErrorInfo Collection abfragen , wie muß ich dazu vorgehen ?

      P.S : M$ ist entschuldigt. Hoffentlich kommen in XP dann auch die genannten Goodies wie z.B. TxIsolationLevel

      Comment

      Working...
      X