Pergunta

Estou usando um projeto de configuração e configuração do VS 2008 para implantar um aplicativo gerenciado / não gerenciado misto. Tive problemas para registrar as DLLs de modo misto usando a propriedade de registro interno (o valor enumerado "vsdracom" da propriedade "Register".) Como uma solução alternativa, adicionei um conjunto de instalação personalizado .NET (com uma classe que que deriva de system.configuration.install.installer.) Estou certo de que essa classe está em execução e várias operações instalam e desinstalam com sucesso o código nessa assembléia, incluindo a execução do ponto de entrada do DLL (un) RegisterServer de vários montantes .

No entanto, uma DLL não está se registrando com sucesso. É a única DLL que depende de alguns conjuntos redistribuíveis de terceiros que desejam ser instalados no GAC. Eu tenho esses conjuntos instalados no GAC, graças ao suporte interno para os projetos de configuração e implantação do VS 2008, e sei que isso está funcionando. Confirmei que o que está acontecendo é que a ação personalizada está executando antes do instalador executar a instalação do GAC.

Ufa. Portanto, minha pergunta é: existe uma maneira de forçar o instalador a executar a instalação do GAC antes de executar a ação personalizada? Existe uma maneira de usar a propriedade "Condição" da ação personalizada para fazer isso? Caso contrário, qual é a minha melhor alternativa? Capturando as entradas do registro da DLL e adicioná -las às configurações do Registro para o instalador (não goste disso, porque alguém pode adicionar novos servidores com a classe no futuro)? Usando o código .NET para instalar a montagem no GAC manualmente (ainda não sabe como fazer isso)?

Obrigado,

Dave

Foi útil?

Solução

Os projetos de configuração que você pode criar no Visual Studio são muito limitados. Ele apenas permite que ações personalizadas sejam agendadas em 4 pontos. No entanto, o MSI permite que ações personalizadas sejam agendadas em qualquer momento do processo com algumas restrições sobre o que elas podem fazer.

Minha primeira solução é parar de usar o Visual Studio 2008 como sua ferramenta de desenvolvimento de configuração. A equipe do Visual Studio tentou abstrair toda a complexidade de criar uma instalação. No entanto, no processo, eles também retiraram toda a flexibilidade do MSI. Wix, InstallShield ou Wise são produtos muito melhores para qualquer coisa, exceto instalações simples. Comecei usando o Visual Studio para nossas instalações e acabou sendo muito trabalho. Sempre havia mais uma solução alternativa a ser implementada e seus efeitos colaterais a serem tratados.

Se você não pode alternar a tecnologia, precisará aprender a modificar manualmente o arquivo MSI resultante. No seu caso, você precisará modificar a tabela Installexectesequence, http://msdn.microsoft.com/en-us/library/aa369500(vs.85).aspx. Você pode fazer isso manualmente através da orca, http://msdn.microsoft.com/en-us/library/aa370557(vs.85).aspx ou através da API MSI http://msdn.microsoft.com/en-us/library/aa372860(vs.85).aspx. Certifique -se de baixar o ORCA e executar os scripts de validação na sua instalação. Os scripts apontam vários problemas que a fixação economizará inúmeras horas ao implantar para máquinas de clientes.

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