Pergunta

Estou criando um provedor de WMI dissociado de uma biblioteca de classes. Tudo eu li pontos no sentido de incluir algo ao longo destas linhas:

[System.ComponentModel.RunInstaller(true)]
public class MyApplicationManagementInstaller : DefaultManagementInstaller { }

Eu recolho o objetivo desta instalação é porque as necessidades de infra-estrutura do Windows WMI estar ciente da estrutura do meu provedor de WMI antes de ser usado.

A minha pergunta é - quando é este ran "instalador"? MSDN diz que o instalador será invocado "durante a instalação de uma montagem", mas eu não tenho certeza o que isso significa ou quando isso iria acontecer no contexto de uma biblioteca de classe que contém um provedor WMI.

Eu estava sob a impressão de que esta era uma substituição automática para executar manualmente InstallUtil.exe contra o conjunto que contém o provedor WMI, mas muda eu faço para o provedor não são reconhecidos pela infra-estrutura do Windows WMI a menos que eu executar manualmente InstallUtil do prompt de comando. Eu posso fazer isso na minha própria máquina durante o desenvolvimento, mas se um aplicativo usando o provedor é implantado em outras máquinas - o que, em seguida,

Parece que esta combinação RunInstaller / DefaultManagementInstaller não está funcionando corretamente? - correta

Foi útil?

Solução

Como eu entendo, DefaultManagementInstaller é correu pelo installutil.exe - se você não incluí-lo, a classe não está instalado no WMI. Talvez seja possível criar um 'projeto de instalação' ou 'projecto de instalação' que executa-lo, mas não tenho certeza porque eu não usar o Visual Studio.

[editar]

para instalação remota, uma opção poderia ser a de usar installutil opção / MOF com a gerar MOF para o mofcomp montagem e utilização para movê-lo para WMI.

Outras dicas

Eu uso algo como isto para chamar InstallUtil programaticamente:

    public static void Run( Type type )
    {
        // Register WMI stuff
        var installArgs = new[]
                                   {
                                       string.Format( "//logfile={0}", @"c:\Temp\sample.InstallLog" ), "//LogToConsole=false", "//ShowCallStack",
                                       type.Assembly.Location,
                                   };

        ManagedInstallerClass.InstallHelper( installArgs );
    }

Chamar isso de seu método Main ().

-Dave

Uros obrigado. Ele se parece com tudo o que RunInstaller e DefaultManagementInstaller fazer é permitir-lhe executar InstallUtil com sucesso contra o conjunto. Isso é estranho, porque eu estou quase certo de que eu não sabia sobre InstallUtil no ponto onde eu tinha compilado e jogou com o meu primeiro provedor WMI.

Vou olhar para usando o arquivo MOF e para meu uso eu posso simplesmente executar a linha de comando InstallUtil como um evento pós construção em VS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top