emite instalando o arquivo .pkg osx através do instalador

1

Eu tenho um .pkg que precisa ser instalado. Isso é basicamente para atualizar meu aplicativo com vários componentes. O pkg contém Agent, Daemon e um ajudante. Em Post script estou iniciando o Agente através do Sudo $ USER launchctl load /Library/LaunchAgent/myApp.plist. Eu quero automatizar a instalação do pacote. A linha de comando do instalador está sendo usada para instalar este pacote. Isso funciona bem quando eu executar o aplicativo do Xcode e pkg está instalado corretamente.

Mas quando não estou executando meu aplicativo do modo de depuração no Xcode e meu aplicativo é instalado e tento instalar o pacote com a ajuda da ferramenta auxiliar (em execução como root), o comando do instalador está em execução. Mas o problema é com o carregamento do agente. O agente nunca é iniciado.

Mas quando eu uso o comando Su em vez do comando SUDO para carregar o Agent que está usando o
   su -l $ USER -c "/ bin / launchctl load /Library/LaunchAgents/myApp.plist", o agente é iniciado.

Mas estou tendo problemas com o uso da SU em que a instalação da ferramenta auxiliar falha posteriormente.

Então 1. por que o comando SUDO está falhando e não é capaz de carregar o agente quando ele está sendo executado a partir de uma ferramenta em execução como root (essa ferramenta foi iniciada pelo daemon).

  1. Se eu carregar o agente por meio da SU, a instalação da ferramenta auxiliar falhará.

Atualizar :::: Eu fui capaz de iniciar o agente. Mas o problema persiste porque a instalação da ferramenta Helper falha, o que tenta autenticar. Aqui está o código de autenticação: AuthorizationRef authRef = NULL;     AuthorizationItem authItem = {kSMRightBlessPrivilegedHelper, 0, NULL, 0};     AuthorizationRights authRights = {1, & authItem};     AutorizaçãoFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights;

OSStatus status=AuthorizationCreate(&authRights, kAuthorizationEmptyEnvironment, flags, &authRef);
if (status != errAuthorizationSuccess) 
{
    DLog(@"Failed to create AuthorizationRef, return code %i", status);
}
else
{
    result = SMJobBless(kSMDomainSystemLaunchd, (__bridge CFStringRef)label, authRef, &outError);
    if (!result && error)
    {
        *error = (__bridge NSError *)(outError);
    }
}
    
por sac 11.04.2014 / 09:39

0 respostas