Por que os aplicativos da App Store transferidos para ~ / Aplicativos em outra máquina não são iniciados?

10

Comprei alguns aplicativos na Mac App Store e os instalei no meu computador pessoal. Eu gostaria de instalá-los em um computador de trabalho compartilhado. Infelizmente, não tenho acesso de administrador ao computador do trabalho, portanto não posso fazer isso da maneira usual.

Copiei os aplicativos do meu computador doméstico para o ~/Applicationsdiretório do computador do trabalho e tentei executá-los com sucesso misto:

  • Alguns aplicativos, quando você os executa pela primeira vez, abrem uma caixa de diálogo que diz "Entre para usar este aplicativo neste computador" e solicita seu ID e senha da Apple, após o que eles funcionam bem. (Exemplo: DayOne e a maioria dos aplicativos gratuitos)
  • A maioria dos aplicativos ainda mostrará essa caixa de diálogo, mas por algum motivo não funcionará, mesmo depois que você digitar seu ID e senha. (Exemplo: BBEdit, Soulver, Twitterrific)

As questões):

  • Existe algo que eu possa fazer para que o aplicativo seja executado?
  • Caso contrário, o que está fazendo com que o aplicativo se recuse a iniciar?

Editar : quando o aplicativo falha, é exibida uma mensagem do console "Saiu com o código de saída: 173". Se entendi corretamente, isso significa que o aplicativo não é válido (o que é esperado quando eu o copio de um computador para outro). No entanto, o processo pelo qual a App Store valida o aplicativo parece não funcionar quando o aplicativo não está no local apropriado. Além disso, parece provável que os aplicativos que funcionam, como o DayOne ou os aplicativos gratuitos, funcionem apenas porque não estão verificando se o aplicativo foi comprado validamente e, de fato, funcionariam em qualquer computador sem nenhum tipo de validação.

A questão permanece: existe uma solução alternativa?

Editar novamente: não tenho problemas ao copiar um aplicativo ~/Applicationsno meu computador doméstico, mesmo para um usuário diferente. Como investigar (para não mencionar a solução) esse problema exige muito trabalho (incluindo dois computadores ou pelo menos uma máquina virtual), estou oferecendo uma recompensa.

Nathan Grigg
fonte
Você está no leão ou no leopardo da neve?
bmike
O computador do trabalho é o Snow Leopard. O lar é o leão. hmmm.
precisa
É melhor entrar no computador do trabalho e fazer o download e, em seguida, mover os arquivos após o download, não?
bmike
11
Quando você baixa arquivos da App Store, os coloca /Applicationse, portanto, requer uma senha de administrador.
Gratg Nathan #
Fiz alguns testes e reescrevi completamente minha resposta abaixo. Receio dizer que não há solução, mas pelo menos uma explicação do que acontece.
26611 kopischke

Respostas:

12

Você encontrou um bug interessante (leia-se: altamente irritante) no processo de validação da App Store, ao que parece:

Para iniciantes, o local para o qual você copia seus aplicativos não entra nele e seu status de administrador / não administrador. Apesar do fato de a Apple afirmar que isso deve ser possível , em minhas duas máquinas, não consigo copiar um aplicativo manualmente para executar como usuário padrão, como administrador, dentro /Applicationsou dentro ~/Applications. Nem a chowning e a chmodingestão do pacote em conformidade com as instalações regulares ajudam. A folha de login da App Store aparece (uma vez), mas o aplicativo continua sendo encerrado com o código de saída 173 depois disso.

De acordo com a documentação do desenvolvedor da Apple para a validação de recibos da App Store , parte do recibo que valida o uso de um aplicativo é um GUID específico da máquina. Quando você copia um aplicativo para outra máquina, o GUID não corresponde mais, invalidando o recebimento (inversamente, na sua própria máquina, ele sempre corresponde ao usuário para o qual você instalou o aplicativo - portanto, você não tem nenhum problema com isso) . Os aplicativos devem sinalizar um recebimento inválido ao sair com o código de saída 173, e o storeagentprocesso da App Store deve assumir o controle depois disso, solicitando credenciais e gerando um novo recebimento e, em seguida, reiniciando o aplicativo com sucesso:

Se o sistema obtiver um recibo válido com êxito, reiniciará o aplicativo. Caso contrário, ele exibirá uma mensagem de erro para o usuário, explicando o problema.

Não exiba nenhuma mensagem de erro para o usuário se a validação falhar. O sistema é responsável por tentar obter um recibo válido ou informar ao usuário que o recibo não é válido.

O que acontece no seu caso (e no meu teste) é que a validação falha silenciosamente - conforme indicado pelo fato de o recebimento nunca ser atualizado, mas nenhuma mensagem de erro também é mostrada. Os logs mostram storeagentretornos:

promptResponse: <CKSignInPromptResponse:0x1080c4fb0 returnCode:1>

Esse código não é documentado pela Apple, e tudo o que encontrei foram discussões dos desenvolvedores sobre esse problema em um contexto de teste, no qual parece estar relacionado à incompletude dos dados do iTunes Connect (Geoff Pado tem um resumo conciso aqui ).

Seja como for, a imagem como um todo mostra claramente que a validação está falhando no caminho , o que deixa os aplicativos copiados manualmente com um recibo inválido, mesmo depois de inserir as credenciais corretas na App Store. Somente os aplicativos que não verificam sua própria validade ainda serão executados, como você observou.

Não muito útil no seu caso, a Apple recomenda apenas excluir e fazer o download novamente da App Store para solucionar o problema.

TL; DR: você não pode copiar manualmente os aplicativos comprados na App Store de um computador para outro até que a Apple corrija o processo de validação de recebimento necessário. O local da instalação e o privilégio do usuário não entram nele.

kopischke
fonte
Aparentemente, o erro foi corrigido (consulte apple.stackexchange.com/questions/46874/… ). Também funciona para mim, apesar de não ter atualizado a máquina Snow Leopard desde que eu fiz a pergunta originalmente.
18719 Nathan Grigg