Agora usei o pkgbuild / productbuild para criar um arquivo do produto, composto por três pacotes (aplicativo, desinstalador, KEXT), que, de acordo com o instalador, instalam corretamente, sem erros.
O KEXT está corretamente colocado em / Library / Extensions e o script pós-instalação o carrega bem.
Mas meus aplicativos não são movidos para a pasta / Applications / Company /. A pasta é criada, mas os aplicativos não são colocados lá.
O processo de execução do componente plist + Distribution XML é tão simples que não consigo entender o que diabos pode dar errado?
O pacote pode ser "instalado" via Pacifist, embora o script pós-instalação não seja executado.
Socorro?
Atualizar:
Fase de análise (o aplicativo reside na pasta ./pkgbuild/app_path/):
pkgbuild --analyze --root "./pkgbuild/app_path/" app.plist
Fase de construção:
pkgbuild --root "./pkgbuild/app_path/" \
--component-plist ./app.plist \
--install-location "/Applications/Company/" \
--identifier "com.company.myapp.pkg" \
--version "1.0" \
app.pkg
Em seguida, o arquivo do produto, etapa 1:
productbuild --synthesize --package app.pkg distribution.xml
O distribution.xml é modificado com a imagem de fundo, licença, etc. corretas
Passo 2:
productbuild --distribution ./distribution.xml output.pkg
(Omiti o pacote KEXT, pois funciona perfeitamente)
Ao instalar o "output.pkg", a pasta / Applications / Company / é criada, mas está vazia.
RESOLVIDO (veja a resposta de Grahams abaixo):
Ao definir BundleIsRelocatable nos arquivos de lista de componentes como false , os aplicativos são colocados no local correto.
Visualizando o log do instalador, o aplicativo foi "realocado" para onde meu projeto do Xcode construiu o aplicativo, mas ainda cria a pasta / Application / Company. Um comportamento "levemente" peculiar, eu diria.
A versão do OSX é 10.11.1.
app.pkg
o tamanho esperado após a chamadapkgbuild
? Funcionaapp.pkg
quando instalado por conta própria?Respostas:
Aplicativos movidos
O instalador provavelmente está atualizando a primeira cópia do aplicativo que encontra e não o aplicativo no local de instalação padrão.
Esse comportamento é deliberado e permite que os usuários movam aplicativos, mantendo a capacidade de usar pacotes do Instalador para aplicar atualizações.
Como desenvolvedor, você provavelmente tem várias cópias do aplicativo de destino no seu Mac. Provavelmente, a última cópia que você - ou o Xcode - lançou foi a que está sendo atualizada. Isso pode incluir cópias dentro de pastas de construção ocultas.
Aplicar o local com
BundleIsRelocatable
A configuração do
BundleIsRelocatable
sinalizador parafalse
força o Installer.app a usar o caminho exato fornecido pelo pacote.Sem esse sinalizador definido, o Installer.app pesquisará os aplicativos correspondentes no Mac de destino e gravará a nova cópia no local descoberto.
installer
; você verá entradas relacionadas à pesquisa e localização final do aplicativo realocado.Report the Bug
O fato de o Instalador ainda ter criado a pasta da empresa-mãe parece um erro. Por favor, reporte um bug com a Apple .
fonte