Pergunta

Nós estamos usando um modelo de objeto de automação COM para tornar a nossa aplicação disponível para os nossos clientes.

Eles estão usando na maior parte python para acessar nossa interface applicaton.

Como queremos ser capaz de instalar (ainda não funcionar, isso é outra questão) diferentes versões do aplicativo, estamos mudando nossos componentes COM a ser regfree.

Mas isso conflitos com o acesso a partir de linguagens de script por meio da automação IDispatch uma vez que precisam as entradas no registro.

A nossa abordagem é criar uma aplicação que gere a versão ativa da nossa aplicação real. Ele permite que o usuário decidir qual versão ele quer ter e que cuida das entradas de registro.

Quais são as alternativas para a nossa abordagem?

Foi útil?

Solução

Há um protocolo dentro COM para fazer isso. Se você versão os Interfaces (e alterar as GUIDS para cada versão), você pode instalar várias versões. Microsoft faz isso com PALAVRA etc.

É possível criar uma classe Word.Document.5 que é específico para a versão 5 da biblioteca, ou apenas Word.Document que irá criar uma instância da maior presente na máquina. Eu não tenho certeza se esta funcionalidade é construir em COM ou precisa ser impemented mas vale a pena olhar em.

Outras dicas

Regfree COM objetos podem ser acessados ??através do Microsoft. Windows.ActCtx objeto.

Como para automação IDispatch requerendo entradas no registro - que não é estritamente correto. Eu presumo que você está usando a implementação ATL padrão, IDispatchImpl. Resolvemos esta solução, fornecendo a nossa própria implementação, IRegFreeDispatchImpl, que usou o APIs de manipulação de contexto activação na forma sugerida aqui para envolver todos os pontos de entrada para a DLL com um contexto de ativação de ativação / desativação.

Bem, a resposta é sugerido por si mesmo. Você pode escrever uma aplicação que tem a lista completa de todas as versões de componentes COM. Uma vez que uma versão for selecionada pelo usuário, você pode chamar a aplicação regsvr32 para registrar essa versão particular.

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