Pergunta

No windows aplicações são tipicamente empacotados como MSI, no RedHat Linux como RPM, o que seria um melhor método de embalagem de código aberto que pode ser usado para implantar aplicativos para todas as plataformas, incluindo diferentes sabores de Unix e Windows?

Conteúdo incluiria exes, binários Unix, arquivos java jar, dados do usuário, scripts de banco de dados até mesmo para ser executado.

(I reconhecer conteúdos que variam per OS destino, ie. Binários seria diferente, vitória exe vs unix binário etc, mas, por exemplo, arquivos de configuração pode ser a mesma ou, no caso de java mesmo os frascos de bytecode)

recurso Key eu gostaria a embalagem para o apoio é diferentes usuários e permissões para diretórios diferentes, porém reconheço apoiar este multiplataforma recurso pode ser muito difícil.

Foi útil?

Solução

Eu tenho um cliente que usa IzPack para criar um único instalador (é Java-baseado) que instala o aplicativo no Windows, OS X e Linux.

http://izpack.org/

Outras dicas

Ao invés de construir um pacote que deve funcionar em todas as suas plataformas, o que é provavelmente impossível, você deve ter seu sistema de construção construir pacotes diferentes para cada plataforma de destino.

Com CPack (Ele vem com CMake ) você pode criar pacotes para Windows (com NSIS), Linux (rpm e deb), e OS X com o "pacote make". CMake também simplificam a construção de plataforma cruzada.

Para uma amostra você pode olhar de Avogadro CMakeLists.txt e AvoCPack.cmake

NSIS é uma solução de código aberto que, tanto quanto eu sei é capaz de instaladores de construção que funcionam em Windows e UNIX gosta tanto. No entanto, para implantação de software no Windows (especialmente em ambientes corporativos) MSI é o caminho a percorrer e NSIS é mais uma dor de cabeça.

Então, eu não recomendaria que você tentar criar um único pacote / instalador para diferentes plataformas. Mas sim, como RibaldEddie indicado, vários pacotes: um para cada plataforma. Isso também permite restringir o conteúdo do pacote para os arquivos relevantes para cada plataforma.

Se você gostaria de apoiar embalagem para múltiplas distribuições, eu sugiro ajudando os empacotadores para essas distribuições fora; usar algum tipo de sistema de construção bem conhecida por seu software (autotools do GNU ou algo parecido scons ou waf), e documentar a construção, dependências opcionais, e assim por diante muito bem.

Dessa forma, quando um Debian, Ubuntu, Red Hat, SuSE, qualquer que seja, embalador vem, eles vão ser capazes de criar o pacote para você. Você opcionalmente pode incluir modelos de embalagens para uma ou mais distribuições em uma árvore VCS separado que está disponível, se você gostaria.

Se você está olhando para empacotamento de um aplicativo fechado-source / proprietário para vários sistemas, você provavelmente fazer o melhor para empacotar um arquivo .tar.gz e documentar o processo de instalação para ele. Você também vai querer ter certeza de que o processo de construção usado não incorpora qualquer informação de caminho para o aplicativo, de modo que ele pode ser executado em /opt, /usr, ou /usr/local, que são algumas escolhas populares para de terceiros add-on software.

BitRock InstallBuilder permite criar instalador pacotes para cada uma das plataformas que você mencionou (bem como a criação de RPM, DEB, pacotes etc. partir de um único arquivo de projeto)

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