Avaliando as avaliações de aplicativos no SCCM2012

4
Estou encontrando um problema interessante com alguns aplicativos que não estão avaliando adequadamente no SCCM 2012. O exemplo de software que tenho é o Adobe Reader 11. Quando instalo usando uma implantação do MSI por meio do software center, tudo funciona muito bem. O problema surge quando alguém acessa o site da Adobe e faz o download do instalador executável e o executa. Agora, o software center detecta o software como desinstalado e listará como um título disponível.

Estou usando o método de detecção "Instalador do Windows" e procurando por este GUID "{AC76BA86-7AD7-1033-7B44-AB0000000001}". Quando eu olho no AppDiscovery.log, tudo que eu obtenho é um "+++ Aplicativo não descoberto". mensagem.

Então, aqui está a pergunta: Onde posso ver o que o método de detecção está consultando e o que ele recebe de volta?

Pergunta bônus: Ao executar uma detecção do "Windows Installer", onde o sistema procura esse GUID?

Obrigado antecipadamente

    
por Doltknuckle 17.03.2014 / 21:43

6 respostas

7

OK, este será um post longo, mas há coisas boas aqui.

Primeiramente, os GUIDs do software instalado estão localizados nos seguintes locais ...

Para o Windows de 32 bits e o software de 64 bits no Windows de 64 bits:
HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall

Para software de 32 bits no Windows de 64 bits:
HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall

O problema que você está enfrentando é que a cadeia GUID está incorreta. O MSI que você baixou da Adobe é a versão em inglês dos EUA, portanto, o 1033 na 3ª parte da string GUID (1033 é a página de código ANSI para teclados dos EUA).

O instalador EXE, no entanto, é a versão MUI, que tem um GUID de {AC76BA86-7AD7-FFFF-7B44-AB0000000001} - observe o FFFF no lugar do 1033, o que significa que é multilíngüe.

No seu método de detecção, você precisa adicionar uma cláusula OR para reconhecer o GUID como uma instalação válida.

Duas dicas que você também deve saber:

1) Você deve especificar o número da versão no seu método de detecção. Todas as versões do Reader 11 têm o mesmo GUID (ou seja, 11.0.1 é o mesmo que 11.0.7), portanto, fará com que seu método de detecção retorne um falso positivo se os usuários estiverem em uma versão mais antiga.

2) Se você se preocupa com patches de segurança para o Reader, então você deve saber que a Adobe libera seus patches apenas para a versão MUI. Você não pode "atualizar" de, digamos 11.0.1 para 11.0.7 com seus MSIs sem fazer uma desinstalação / reinstalação de todo o produto. Se você tentar, ele apenas informará que o produto já está instalado (porque o GUID é o mesmo).

Aqui está a maneira correta de gerenciar o Adobe Reader com o SCCM: Você precisa de dois tipos de implantação em seu aplicativo.

1) Configure o 11.0.0 MSI como você já tem (certifique-se de que o método de detecção tenha o número da versão de 11.0.00 especificado - não apenas use o GUID) e salve e feche-o.

2) Volte e adicione outro tipo de implantação. Desta vez, selecione o Instalador de Script como o tipo (o SCCM não manipula arquivos MSP nativamente). Aponte para o seu arquivo MSP e use msiexec / update (ao invés do usual msiexec / i) como sua linha de comando. Para o método de detecção, use o mesmo GUID, mas 11.0.07 (ou qualquer outro) que a versão. Especifique o primeiro tipo de implantação como sua dependência. Em seguida, verifique se o patch tem uma prioridade mais alta na lista. Agora salve e feche novamente.

Agora, quando um cliente que não tem leitor instalado solicita o aplicativo, ambos serão instalados. Se a pessoa já tiver a versão EXE instalada, ela será corrigida. Se já estiver corrigido, será mostrado como já está instalado.

    
por 21.05.2014 / 02:18
1

Então, depois de um pouco de pesquisa e percebendo que era o Adobe Flash Player que estava me dando ajustes, eu formulei uma hipótese possível. Pelo que eu posso dizer, o SCCM procura no seguinte local do WMI:

Namespace: root\CCM\CIModels
Class: CCM_MSIProduct

Pelo pouco que sei sobre o WMI, isso é criado pelo cliente SCCM, o que faz um sentido distorcido quando você pensa sobre como o SCCM funciona.

Eu obtive este local na "Ferramenta de monitoramento de implantação" que você pode obter no Kit de ferramentas do System Center 2012 Configuration Manager . Se você olhar na área de implantações e na guia Aplicação, poderá consultar o DiscoverySourceXML para ver o que a detecção retornou.

Acabei de descobrir isso hoje, então ainda não consegui testá-lo totalmente. Esse local pode ser apenas o repositório de resultados para o processo de descoberta de aplicativos. Até agora, é bom o suficiente para me informar quais códigos de produto funcionam com o processo de avaliação de aplicativos do SCCM.

Eu realmente preciso de um desenvolvedor SCCM para ver isso e me endireitar.

Extra Stuff

Script Powershell para listar objetos WMI:

Get-WmiObject -Namespace root\ccm\CIModels -Class CCM_MSIProduct | Sort-Object ProductName |Format-Table ProductName,ProductCode,ProductVersion
    
por 18.03.2014 / 00:24
0

Where can I see what the detection method is querying and what it gets back?

Eu não acho que haja uma maneira de fazer isso de forma nativa no SCCM, embora realmente deseje que haja, especialmente para as Condições Globais. Não há nada mais frustrante do que criar seu Log de Detecção no assistente, pois ele não funciona como esperado e você fica com a opacidade da interface do usuário como sua informação de solução de problemas.

O que eu faria, é encontrar um computador de teste (ou, de preferência, uma VM para que você possa usar instantâneos) que esteja na condição de que quebre sua Lógica de Detecção, inicie ProcMon , execute o Ciclo de Avaliação de Implementação de Aplicativos e veja o que você encontra.


When performing a "Windows Installer" detection, where does the system look for that GUID?

Se a minha leitura de MSDN estiver correta, o registro MSIs o ProductCode em HKLM\Software\Classes\Installer\Products . Uma suposição razoável é que o Application Detection verifica esse local, novamente você pode confirmar isso com ProcMon .


Quanto ao seu problema em que o instalador executável do Adobe Reader quebra sua Lógica de Detecção, fiz um pequeno teste no meu "laboratório" (ou seja, minha estação de trabalho) e consegui reproduzir seu problema.

Acho que todo o Adobe Reader executável é descompactar e executar um instalador MSI.

Sevocêolharoconteúdodesetup.ini,vocêpodeverquetodooexecutáveléiniciaroinstaladorMSI:

[Startup]RequireOS=Windows2000RequireMSI=3.0RequireIE=6.0.2600.0[Product]msi=AcroRead.msi

Dequalquerforma,oinstaladorregistrouadequadamenteoProductCode,portanto,setudoissoestiverexecutandoasualógicadeDetecção,nãohaverádiferençaperceptívelentreosdoismétodosdeinstalação.Noentanto,sevocêfizerumacomparaçãodaschavesderegistroparaoinstaladorexecutáveleoinstaladorMSI,poderáveralgumasdiferenças:

Doinstaladorexecutável:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\ProductsAB67CA7DA73301B744BA0000000010]"ProductName"="Adobe Reader XI (11.0.06)"
"PackageCode"="08610D4D4ABC0E74BB0257B5EDD58107"

Do instalador do MSI:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\ProductsAB67CA7DA73301B744BA0000000010]
"ProductName"="Adobe Reader XI (11.0.06)"
"PackageCode"="26A6583616073E04583DBCA6F0289EEB"

O PackageCode é diferente. As fontes de instalação também devem ser diferentes.

Do instalador executável baixado pelo usuário:

C:\ProgramData\Adobe\Setup\{AC76BA86-7AD7-1033-7B44-AB0000000001}\

A partir do instalador MSI implementado pelo SCCM:

C:\Windows\ccmcachef\

Observe que a versão implementada do SCCM veio do cache local do CCM.

Você pode adicioná-los à sua Detection Logic ou Requirements, conforme apropriado, para corrigir essa condição.



    
por 17.03.2014 / 23:26
0

Isso faz sentido, o sccm não detectará quando os aplicativos forem instalados fora dele. Ele usa uma tabela wmi para acompanhar, por isso, se alguém excluir o wmi repo para "curar" a corrupção, ele reinstalará todos os pacotes sms necessários para essa estação de trabalho / usuário. Em 2007, a tabela wmi foi chamada SMS_InstalledSoftware, embora eu não consiga encontrar o que é chamado de '12.

Agora, eu não faço instalações do instalador do Windows, mas sei que há uma tabela wmi chamada Win32_Product que contém os guias para as instalações que você encontra em Adicionar / Remover Programas, meu palpite é que parece lá, embora Eu poderia estar errado. Uma desvantagem é que, se instalarem uma versão diferente do msi (portanto, um guia diferente), isso não aparecerá na sua detecção, possivelmente.

O que eu faço às vezes é uma verificação de inventário de software no .exe, para ver se alguém já instalou isso e, em caso afirmativo, qual versão. Eu não posso contornar as pessoas se encarregando de instalar aplicativos fora do sccm, mas isso é política e não é realmente o que o sccm é para.

    
por 18.03.2014 / 13:40
0

Eu sei que é antigo, mas não pude resistir em adicionar minha peça especialmente sobre o Win32_Product, já que ele pode ter efeitos negativos!

Não posso comentar a resposta @Dotknuckle acima, por isso tive que fazer uma nova resposta. O Win32_Product é uma má idéia e demora mais porque registra novamente todos os MSI que leem isso. link

Quanto ao SMS_InstalledSoftware, isso também existe com o SCCM 2012 e está sob a raiz do namespace \ cimv2 \ sms, é um pouco mais seguro que o Win32_Product e também é mais rápido.

O mesmo provavelmente se aplica à classe CCM_MSIProduct e por que é mais rápido. Eu estou usando SMS_InstalledSoftware como ele retorna mais informações.

Eu tenho usado meus próprios scripts de detecção personalizados no powershell que basicamente fazem algo assim.

$SPSS22 = Get-WmiObject -namespace Root\cimv2\sms -class SMS_InstalledSoftware -filter "ARPDisplayName LIKE '%SPSS Statistics%' AND ProductVersion='22.0.0.0'"
If($SPSS22){return $true}
    
por 28.01.2015 / 12:24
-1

Ocasionalmente, o aplicativo não é detectado; até os logs dizem que foi instalado sem problemas. Mas, em seguida, ele diz não detectado logo abaixo, onde diz que retornou o código de erro 0; sucesso.

Vá para Adicionar / Remover programas ou faça o Windows-R e digite appwiz.cpl para ver se o aplicativo está instalado. Se ele aparecer, anote o nome exato mostrado nos programas Adicionar / Remover. Remova. Se desinstala rapidamente, então há problemas maiores. O que você precisa fazer é abrir o editor de registro e pressionar F3 para fazer uma pesquisa. Digite o nome do aplicativo como listado em adicionar / remover. Uma vez que você começar a encontrá-lo no registro, você será excluído chaves ou valores com um depende. Você excluirá chaves se for algum lugar como Desinstalar, Instalar, Produto, Recurso no registro. Escusado será dizer ter muito cuidado com o que você excluir, você pode quebrar seu computador. Uma vez feito, basta fazer outra pesquisa para garantir que você apagou tudo. Agora tente instalar novamente via system center, se ele for instalado, então YAY! Se isso não ocorrer, ainda haverá algumas chaves ou valores de registro subjacentes que precisam ser excluídos.

    
por 19.08.2015 / 23:28