O pacote criado pelo pkgbuild não é instalado corretamente

4

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.

Robert
fonte
Você pode editar sua pergunta e adicionar os detalhes do pacote do instalador do aplicativo? Quais sinalizadores e opções você usou? O que o script pós-instalação faz? Idealmente, um instalador não precisa de um script pós-instalação.
Graham Miln
Ok, vai fazer. O script pós-instalação carrega um KEXT instalado, portanto é necessário.
Robert
É app.pkgo tamanho esperado após a chamada pkgbuild? Funciona app.pkgquando instalado por conta própria?
Graham Miln
O tamanho está correto (~ 3 MB) e não, também não funciona por conta própria.
Robert
11
Obrigado, bmike, vou mudar o texto amado, porque a resposta de Grahams é a correta. Meu problema está principalmente no "fato" de que o Installer.app mudou o aplicativo para onde o Xcode o criou. Eu acho que esse é um comportamento estranho, mas pode ser mitigado com o sinalizador BundleIsRelocatable. OSX é o mais recente El Capitan.
Robert

Respostas:

5

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 BundleIsRelocatablesinalizador para falseforç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.

  • Experimente o seu instalador com um Mac limpo com uma nova cópia do OS X.
  • Observe atentamente a saída do log do Installer.app ou 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 .

Graham Miln
fonte
Obrigado Graham. O problema que me levou a atacar o pkgbuild / productbuild foi esse . Você não teria nenhuma idéia de por que isso acontece? :) (. Btw também acontece com o meu pkg / instalador baseado productbuild recém-criado)
Robert
Seria bom poder dizer ao Installer.app para desconsiderar certos caminhos de possíveis locais de instalação :) Adicionarei isso como uma solicitação de recurso.
Robert