Como excluir pacotes COM+ que não possuem a opção Delete no menu de contexto
Olá!
Estou trabalhando em um projeto de uma aplicação que faz instalações de componentes em servidores de forma automatizada. Uma das funcionalidades é criar diretórios virtuais no IIS. Acontece que durante alguns testes dessa funcionalidade, notei que cada vez que os diretórios virtuais eram criados, também era criado um pacote COM+ de nome IIS-{ //ROOT/ }. O engraçado é que mesmo excluindo os diretórios virtuais, esses pacotes permaneciam, e não podiam ser excluídos (não havia a opção Delete no menu de contexto).
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdhDNyEkxkvNE0PF48qCUiaAWM_8xurlt_GDcIpkI6V0D_NwHusUwI8m_JD7b5OWROvWDfdvIn5MEtU0mKpokNh7an5GoBL6mqZFXWaoCYv_bRL8RpzYOqi2Tv_p4G1tMTojMgpkc0_33h/s320/1.jpg)
O problema foi corrigido na aplicação de instalação (não cheguei a ver a causa e correção, mas prometo fazê-lo), no entanto restava a necessidade de remover esses pacotes COM+, já que eram inúteis. Procurei no Google e encontrei uma solução para permitir que os pacotes fossem "excluíveis": usando o COMAdmin, alterar uma propriedade do pacote que libera esta opção.
O código utilizado é o abaixo:
ICOMAdminCatalog catalogo;
ICatalogCollection pacotesCOMPlus;
ICatalogObject pacoteCOMPlus = null;
catalogo = (ICOMAdminCatalog)Microsoft.VisualBasic.Interaction.CreateObject("COMAdmin.COMAdminCatalog", string.Empty);
pacotesCOMPlus = (ICatalogCollection)catalogo.GetCollection("Applications");
pacotesCOMPlus.Populate();
foreach (ICatalogObject pacote in pacotesCOMPlus)
if (pacote.Name.ToString().ToLower().Equals(textBox1.Text.ToLower().Trim()))
{
pacoteCOMPlus = pacote;
break;
}
if (pacoteCOMPlus != null)
{
pacoteCOMPlus.set_Value("Deleteable", true);
pacotesCOMPlus.SaveChanges();
MessageBox.Show(string.Format("Pode apagar o pacote {0} agora...", textBox1.Text));
}
Obs. textBox1 é o controle da telinha que fiz para rodar o código, e que é preenchida com o nome do pacote COM+.
Com isso, a opção de excluir o pacote COM+ foi habilitada!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrKLDUQEZrG74cel0eyDqFGOhFe_1yhPNGRUlgQjHy8kEix-DmFppr3882GpxIT5vRR8v0uUiQU8EYDRoEGevlk5c1IUHqds5hwKL7CEHFLbLC_clwq5bZI3i9n7cMer4Pfrs6lDBF4C5d/s320/2.jpg)
[]'s
Estou trabalhando em um projeto de uma aplicação que faz instalações de componentes em servidores de forma automatizada. Uma das funcionalidades é criar diretórios virtuais no IIS. Acontece que durante alguns testes dessa funcionalidade, notei que cada vez que os diretórios virtuais eram criados, também era criado um pacote COM+ de nome IIS-{
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdhDNyEkxkvNE0PF48qCUiaAWM_8xurlt_GDcIpkI6V0D_NwHusUwI8m_JD7b5OWROvWDfdvIn5MEtU0mKpokNh7an5GoBL6mqZFXWaoCYv_bRL8RpzYOqi2Tv_p4G1tMTojMgpkc0_33h/s320/1.jpg)
O problema foi corrigido na aplicação de instalação (não cheguei a ver a causa e correção, mas prometo fazê-lo), no entanto restava a necessidade de remover esses pacotes COM+, já que eram inúteis. Procurei no Google e encontrei uma solução para permitir que os pacotes fossem "excluíveis": usando o COMAdmin, alterar uma propriedade do pacote que libera esta opção.
O código utilizado é o abaixo:
ICOMAdminCatalog catalogo;
ICatalogCollection pacotesCOMPlus;
ICatalogObject pacoteCOMPlus = null;
catalogo = (ICOMAdminCatalog)Microsoft.VisualBasic.Interaction.CreateObject("COMAdmin.COMAdminCatalog", string.Empty);
pacotesCOMPlus = (ICatalogCollection)catalogo.GetCollection("Applications");
pacotesCOMPlus.Populate();
foreach (ICatalogObject pacote in pacotesCOMPlus)
if (pacote.Name.ToString().ToLower().Equals(textBox1.Text.ToLower().Trim()))
{
pacoteCOMPlus = pacote;
break;
}
if (pacoteCOMPlus != null)
{
pacoteCOMPlus.set_Value("Deleteable", true);
pacotesCOMPlus.SaveChanges();
MessageBox.Show(string.Format("Pode apagar o pacote {0} agora...", textBox1.Text));
}
Obs. textBox1 é o controle da telinha que fiz para rodar o código, e que é preenchida com o nome do pacote COM+.
Com isso, a opção de excluir o pacote COM+ foi habilitada!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrKLDUQEZrG74cel0eyDqFGOhFe_1yhPNGRUlgQjHy8kEix-DmFppr3882GpxIT5vRR8v0uUiQU8EYDRoEGevlk5c1IUHqds5hwKL7CEHFLbLC_clwq5bZI3i9n7cMer4Pfrs6lDBF4C5d/s320/2.jpg)
[]'s
Comentários
Postar um comentário