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!
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!
Comment