Programaticamente instalar um plugin do Eclipse de dentro do Eclipse?
-
19-09-2019 - |
Pergunta
Eu quero criar um instalador automatizado para um plugin do Eclipse (ou seja, não através do "Update Manager"). Meu cenário é simples:. O usuário fecha Eclipse, cai um JAR baixado nos dropins pasta, começa Eclipse eo resto do processo é automatizado
Em versões mais antigas do Eclipse, antes da era da P2, Eclipse tinha (ainda tem) uma classe chamada InstallCommand
que poderia ser usado para instalar pluings na plataforma atualmente em execução.
Enquanto isto ainda funciona no Eclipse 3.4 e 3.5, ele não está se comportando corretamente: mais visivelmente, plugins instalados dessa forma não pode ser desinstalado automaticamente (é esmaecido).
As reivindicações JavaDoc o InstallCommand
é obsoleto e deverá ser substituído por uma alternativa P2. No entanto, eu não poderia encontrar a ferramenta certa para o trabalho. Existe a P2 diretor , mas é construído para executar como uma aplicação separada da linha de comando. É possível invocá-lo de dentro do Eclipse, mas ele realmente não é cortado para isso. Por exemplo, a monitorização do progresso e relatório de erros não estão funcionando bem.
Alguém sabe de uma boa alternativa para isso?
Obrigado, Zviki
Solução
dropins parece muito próximo ao que você quer, especialmente se eles estão apenas baixando frascos sem os metadados associados (ou seja, os metadados terá de ser auto-gerada).
Você poderia considerar a definição de uma área de segundo dropins para gerenciar a si mesmo. Dê uma olhada em ProfileSynchronizer
em org.eclipse.equinox.p2.reconciler.dropins, em particular a createProfileChangeRequest método. Espero que o comportamento de desinstalação você não gosta é um resultado da propriedade IInstallableUnit.PROP_PROFILE_LOCKED_IU
sendo adicionado.
Os dropins são reconciliados na inicialização, consulte os Activator.watchDropins p2.reconciler.dropins (), você pode provavelmente fazer o mesmo a partir de seu próprio pacote para assistir a outra pasta.
Outras dicas
Eu sugiro para implantar o seu plugin como um JAR executável. O instalador no JAR deve perguntar para o Eclipse diretório de instalação e descompactar o plugin no lugar certo (além de mais algumas verificações, conforme necessário).
Opcionalmente incluir um pouco de plug-in "cão de guarda", que não depende de cheques muito e apenas que seus principais cargas de plugin corretamente e exibe uma mensagem de erro útil que o usuário pode enviar e-mail para você para o apoio.