Pergunta

Eu tenho um programa (criado por um colega, portado do Linux, mas compilado com sucesso no Mac) que preciso implantar em várias estações de trabalho Mac.Atualmente fazemos isso enviando arquivos pkg (não aqueles que criamos).

Minha pergunta geral (que outros podem achar as respostas úteis) é como faço para empacotar um programa/script de linha de comando em um arquivo pkg que instala o programa?O método usual para empacotar um arquivo .app parece bem documentado, mas há poucos detalhes sobre como pegar um programa arbitrário e envolvê-lo em um instalador pkg.

As páginas de manual do pkgbuild (etc) fazem muitas suposições - que você já construiu um aplicativo com xcode, que pretende usar um .app e pode gerar plists, etc.Tudo o que queremos fazer é deixar o servidor Mac instalar um programa que não seja de aplicativo e usar pacotes.

Seria melhor se a solução fosse programável para que toda vez que atualizarmos o programa pudéssemos criar facilmente um novo arquivo pkg.Se um recurso decente que já explique esse processo puder ser vinculado, isso também funcionaria muito bem.A questão aqui: Tornando os pacotes do instalador do OS X como um pacote pronto para Pro - Xcode Developer ID não corresponde à necessidade de simplesmente instalar um programa CLI básico.

Foi útil?

Solução

eu recomendaria Pacotes.

É programável para que possa se tornar parte do seu processo de construção e gerar um bom mpkg para você.

Estamos usando-o para automatizar o download de bibliotecas de terceiros e, em seguida, a invocação do make para compilar, bem como a instalação dos arquivos compilados.

Como observação, embora isso gere um mpkg, a maioria das distribuições é feita com imagens de disco, então também usamos hdiutil para criar uma imagem esparsa, copiar o mpkg nela, convertê-la em um dmg somente leitura compactado e depois distribuí-la.

Um exemplo deste procedimento seria:

1) Crie um arquivo RW DMG esparso.

hdiutil create -size 100M -type SPARSE -volname "MyInstaller" -fs HFS+ MyInstaller.dmg.sparseimage

2) Anexe à imagem.Anote o nome do disco e do volume montado na saída (ex./dev/disk2s1 e /Volumes/MyInstaller)

hdiutil attach MyInstaller.dmg.sparseimage

3) Copie no instalador mpkg

cp -R Packages/build/My_Packages.mpkg /Volumes/MyInstaller/

4) Detech da imagem.

hdiutil detach -force {mounted disk} (ex. hdiutil detach -force /dev/disk2s1)

5) Crie uma imagem compactada somente leitura a partir de uma imagem esparsa gravável.

hdiutil convert "MyInstaller.dmg.sparseimage" -format UDZO -o "MyInstaller.dmg" -ov -imagekey zlib-level=9
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top