A implementação do MSI do SCCM falha com 0x87D00324

1

Eu tenho um MSI criado pelo WIX que pode ser executado localmente como um administrador sem erros. Mas, quando implantado via SCCM, uma Implantação de Aplicativo importada do MSI é mostrada no Software Center como tendo falhado com o código 0x87D00324 . Em qualquer um dos casos, a instalação real é bem-sucedida (nos arquivos e entradas de registro são criados como esperado e o aplicativo é carregado).

O erro do SCCM sugere que o produto não seja detectado após a instalação. Se instalado manualmente usando a mesma linha de comando que o SCCM está configurado para usar ( msiexec /i [msi goes here] /qn ), o Software Center mostra o aplicativo como Instalado, indicando que as regras de detecção estão corretas - a detecção está configurada para procurar o código do produto instalado. AppEnforce.log vestígios sugerem que o acima está acontecendo:

  • O SCCM instala o MSI sem erros
  • A pós-instalação tenta detectar o MSI
  • Falha ao detectar, marca a implantação como uma falha

O MSI está configurado para instalar todos os usuários ( ALLUSERS=1 como uma propriedade MSI, não na linha de comando) e requer elevação para ser executado. O trabalho do SCCM é configurado como 'Instalar para o sistema' e 'somente quando nenhum usuário está conectado' e tem como alvo máquinas específicas e não usuários.

Com o registro MSI de toda a máquina ativado, existem algumas diferenças na saída de log que, acredito, podem estar contribuindo:

  • A instalação emitida pelo SCCM tem uma entrada de log: PROPERTY CHANGE: Deleting ALLUSERS property. Its current value is '1' , embora não esteja claro o que está causando isso
    • Isso acontece mesmo se ALLUSERS = 1 for fornecido como um argumento de linha de comando para msiexec - como 'Adicionando ALLUSERS ...' e depois 'Excluindo ALLUSERS ...' algumas linhas depois
  • A entrada ProductPublish step / log tem um valor Assignment de 0 quando instalado via SCCM (equivalente a Por usuário, de acordo com a documentação), mas 1 quando instalado manualmente (equivalente a Por máquina)
  • A instalação do SCCM faz com que três logs MSI sejam criados, não um único log como o caso manual
    • Um mostrando o MSI sendo chamado com ADVERTISE action
    • Um que não parece chamar msiexec , mas talvez seja o restante da criação de log da ação ADVERTISE em um arquivo diferente por algum motivo
    • MSI chamado com uma ação em branco (que aparece no log como uma ação de INSTALL )

Pós-instalação, Get-WmiObject -Namespace root\ccm\CIModels -Class CCM_MSIProduct tem saída diferente para os dois métodos de instalação:

  • Instalado via SCCM, não há entrada para o novo aplicativo - Acredito que é por isso que o SCCM acha que o aplicativo não está instalado
  • Instalado manualmente, o novo aplicativo é exibido com os detalhes corretos

Ambos os métodos mostram o aplicativo como instalado ao consultar por meio de wmic product get .

Cliente: Windows 10 Enterprise, cliente SCCM 5.0.0.8577.1115

Servidor: SCCM 1710 (5.0.0.8577.1115)

Atualização 12 de abril de 2018, informações adicionais:

  • O trabalho do SCCM funciona em algumas máquinas, mas não há uma semelhança óbvia entre eles
  • O trabalho do SCCM pode ser permanentemente corrigido em uma determinada máquina usando pstools para executar o MSI como SYSTEM - se feito uma vez, desinstalar o MSI manualmente e reinstalar via SCCM funciona e detecta corretamente (isso é obviamente inútil, mas um resultado interessante)
  • Fazer logon nas máquinas com falha indica que as coisas estão sendo feitas no contexto do usuário, não no contexto por máquina
    • Using cached product context: User assigned for product: 6176BC215761514458869E9B9ABB08BC
  • Fazer logon nas máquinas com falha mostra múltiplos da linha acima, enquanto o registro nas máquinas em funcionamento parece estar atingindo vários códigos de produtos múltiplos no contexto da máquina
  • Uma vez instalado via SCCM no estado de falha, a única diferença de registro óbvia é em relação a HKLM\Software\Classes\Installer\Products\[[Product Code]]\AdvertiseFlags , que é 0x180 no estado com falha e 0x184 no estado de aprovação
  • Nossa equipe de operações sugere que as falhas começaram quando a substituição foi ativada para o trabalho, embora eu não possa confirmar se esse é o caso de todas as falhas

O que poderia causar a diferença de comportamento entre o trabalho do SCCM e uma instalação manual? O que poderia fazer com que o trabalho do SCCM fosse executado no contexto do usuário, embora pareça estar sendo executado como SYSTEM e esteja configurado para Instalar para o Sistema?

    
por Pablissimo 09.04.2018 / 13:01

1 resposta

0

Como você mencionou, ele tenta anunciar o MSI ao invés de instalar o que é estranho. Talvez você tenha que recolocar o script ou lê-lo em orca e ver.

Por acaso você verificou o código do produto que é definido na detecção também aparece no registro.

32 bits: HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Desinstalação \ Código do produto

ou

64 bits: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ código do produto

    
por 11.04.2018 / 13:11

Tags