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?