Powershell – Verificar e encontrar o GUID do produto de instalação de uma instalação MSI

totalmente desbloquear esta secção que você precisa para Log-in

O código do produto é o GUID exclusivo de identificação de um aplicativo ou de lançamento de produtos; Em outras palavras, diferentes versões e idiomas de Produto deve ter códigos de produtos diferentes.

além disso, o ProductCode pode ser usado para consultar o estado do recurso e o estado do produto. Por exemplo, Installer API ” MsiQueryFeatureStateEx () “e” MsiQueryProductState ()”, etc.

as quatro abordagens a seguir podem nos dar vários métodos para encontrar e recuperar (também remotamente) o GUID dos pacotes MSI instalados:

Use o Powershell “one-liner”

qualquer auto-reparo acionado por esta opção geralmente deve ser possível cancelar. As verificações de integridade do pacote acionadas adicionam algum log de eventos “ruído”. Não tome que IdentifyingNumber seja o ProductCode (peculiaridade WMI).

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

início rápido do Powershell: segure a tecla Windows, toque em R, digite “powershell” e pressione Enter.

Use VBScript

esta opção pode ser mais segura do que o Powershell por razões explicadas em detalhes abaixo.

em essência, é (muito) mais rápido e não é capaz de acionar o auto-reparo MSI, pois não passa pelo WMI (acessa diretamente a API MSI com – na velocidade de bolhas). No entanto, está mais envolvido do que a opção Powershell (várias linhas de código).

você pode tentar um VBScript para acessar informações através da interface de automação MSI (recurso principal do Windows – não está relacionado ao WMI).

  • Copie o script abaixo e cole em um *.arquivo vbs em sua área de trabalho e tente executá-lo clicando duas vezes. Sua área de trabalho deve ser gravável para você ou você pode usar qualquer outro local gravável.
  • esta é uma amostra VBScript. Terseness tem sido preferido sobre o tratamento de erros e completude, mas deve fazer o trabalho com complexidade mínima.
  • o arquivo de saída é criado na pasta de onde você executa o script (a pasta deve ser gravável). O arquivo de saída é chamado msiinfo.csv.
  • Clique duas vezes no arquivo para abrir em um aplicativo de planilha, selecione vírgula como delimitador na importação – ou – basta abrir o arquivo no bloco de notas ou qualquer visualizador de texto. Abrir em uma planilha permitirá recursos avançados de classificação.
  • este script pode ser facilmente adaptado para mostrar uma quantidade significativa de mais detalhes sobre a instalação do MSI.
'#### Retrieve all ProductCodes (with ProductName and ProductVersion)Set fso = CreateObject("Scripting.FileSystemObject")Set output = fso.CreateTextFile("msiinfo.csv", True, True)Set installer = CreateObject("WindowsInstaller.Installer")On Error Resume Next ' we ignore all errorsFor Each product In installer.ProductsEx("", "", 7) productcode = product.ProductCode name = product.InstallProperty("ProductName") version=product.InstallProperty("VersionString") output.writeline (productcode & ", " & name & ", " & version)Nextoutput.Close

pesquisa de registro

você também pode encontrar o código do produto lendo o registro desta chave base: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \ Uninstall.

pressione a tecla F3 e procure o nome do seu produto. Se for um instalador de 32 bits em uma máquina de 64 bits, pode estar sob a seguinte chave: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall.

As seguintes chaves de registo são os locais mais comuns em que pesquisa e encontrar os GUIDs de pacotes MSI:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\UninstallHKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall

Arquivo MSI Original

Você pode encontrar o Código do Produto na tabela de Propriedades de qualquer arquivo MSI (e qualquer outra propriedade bem). No entanto, o GUID poderia concebivelmente (raramente) ser substituído por uma transformação aplicada no momento da instalação e, portanto, não corresponder ao GUID em que o produto está registrado (a abordagem 1 e 2 acima relatará o código real do produto – que está registrado no Windows – em cenários tão raros).

você precisa de uma ferramenta para visualizar arquivos MSI. Veja na parte inferior da seguinte resposta para uma lista de ferramentas gratuitas que você pode baixar( ou veja a opção rápida abaixo): como posso comparar o conteúdo de dois (ou mais) arquivos MSI?

Para a conveniência e necessidade para a velocidade, você pode baixar SuperOrca sem demora e barulho, a partir deste direct-download hotlink – a ferramenta é boa o suficiente para começar o trabalho feito – instalar, abra MSI e ir direto para a tabela de Propriedade e encontrar o Código de cores de linha (por favor, sempre a verificação de vírus direto-download hotlink – obviamente, você pode usar virustotal.com para fazer isso – scan online utilizando dezenas de anti-vírus e de malware suites para analisar o que você carregar).

outro, o original, Ferramenta Orca é a própria ferramenta da Microsoft, ele é instalado com o Visual Studio eo SDK do Windows. Tente pesquisar Orca-x86_en-us.msi, em arquivos de programa (x86) e instale o MSI se encontrado.

Obter Códigos de Produto

Fogo até Powershell (mantenha pressionada a tecla Windows, toque em R, solte a tecla Windows, digite em “powershell” e pressione OK) e execute o comando abaixo para obter uma lista de instalado o pacote MSI códigos de produto, juntamente com o local da cache do pacote caminho e o nome do produto (maximizar a janela do PowerShell para evitar nomes truncados).

Antes de executar esta linha de comando, leia o aviso abaixo (nada perigoso, apenas alguns possíveis incômodos). Se você estiver tentando desinstalar um pacote, há uma seção abaixo com alguns exemplos de msiexec.linhas de comando exe:

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

a saída deve ser semelhante a esta:

Powershell-verifique e encontre o GUID do produto de uma configuração MSI instalada

por algum motivo estranho, o” ProductCode “é referido como” IdentifyingNumber ” no WMI. Então, em outras palavras, na imagem acima o IdentifyingNumber é o ProductCode.

devido ao estranho design da Microsoft, qualquer chamada WMI para Win32_Product (como o comando PowerShell abaixo) acionará uma validação da propriedade do pacote. Além de ser bastante lento, isso pode, em casos raros, acionar um auto-reparo MSI. Este pode ser um pequeno pacote ou algo enorme – como o Visual Studio. Na maioria dos casos, isso não acontece, mas existe um risco.

não execute este comando antes de uma reunião importante, nunca é perigoso (é uma consulta somente leitura), mas pode levar a um reparo longo em casos muito raros.

Você também pode obter o resultado em forma de lista (em vez de tabela):

get-wmiobject -class Win32_Product

neste caso, a saída é semelhante a este:

Powershell - Verificar e encontrar o GUID do produto de instalação de uma instalação de MSI

Obter Códigos de Produto a Partir de Um Computador Remoto

Em teoria, você deve ser capaz de especificar um nome do computador remoto como parte do próprio comando. Aqui está o mesmo comando acima configurado para ser executado na máquina ” RemoteMachine “(- ComputerName RemoteMachine seção adicionada):

get-wmiobject Win32_Product -ComputerName RemoteMachine | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

isso pode funcionar se você estiver executando com direitos de administrador de domínio em um domínio adequado. Em um ambiente de grupo de trabalho (small office / home network), você provavelmente precisa adicionar credenciais de usuário diretamente às chamadas WMI para fazê-lo funcionar.Além disso, as conexões remotas no WMI são afetadas pelo (pelo menos) Firewall do Windows, Configurações DCOM e controle de conta de usuário (UAC) (além de quaisquer fatores adicionais que não sejam da Microsoft, por exemplo, firewalls físicos ou virtuais adicionais, firewalls de software de terceiros, software de segurança de vários tipos, etc.). Se vai funcionar ou não depende, geralmente, de sua configuração exata.

Powershell

PowerShell requer o .NET framework para ser instalado, mas na maioria dos sistemas Operacionais modernos (Windows Server e Windows plataformas Powershell já está incluído e disponível). O próprio aplicativo PowerShell real também pode estar faltando na máquina, mesmo que o. NET esteja instalado. Finalmente, o PowerShell pode ser desativado ou Bloqueado por várias políticas e privilégios do sistema.

se este for o caso, você pode tentar algumas outras maneiras de recuperar códigos de produto. Uma alternativa é o VBScript-é rápido e flexível (mas também pode ser bloqueado em certas máquinas, e o script está sempre um pouco mais envolvido do que o uso de ferramentas).Vamos começar com uma ferramenta integrada do Windows WMI, geralmente usada para testar componentes e funcionalidades do WMI: wbemtest.exe.

  • lançamento wbemtest.exe (mantenha pressionada a tecla Windows, toque em R, solte a tecla Windows, digite ” wbemtest.exe ” e pressione OK).
  • clique em Conectar e, em seguida, OK (o namespace padrão é root \ cimv2)e clique em “conectar” novamente.Clique em “Query” e digite este comando WQL (sabor SQL): selecione IdentifyingNumber,Name,Version FROM Win32_Product.
  • clique em “usar” (ou equivalente – a ferramenta será localizada).

a captura de tela da saída da amostra é a seguinte. Não é a formatação mais agradável, mas você pode obter os dados que você precisa. IdentifyingNumber é o código do produto MSI:

Powershell-verifique e encontre o GUID do produto de uma configuração MSI instalada

em seguida, você pode tentar uma ferramenta WMI personalizada e mais completa, como WMIExplorer.exe.

  • isso não está incluído no Windows. É uma ferramenta muito boa, no entanto.
  • Confira em: https://github.com/vinaypamnani/wmie2/releases.
  • inicie a ferramenta, clique em Conectar, clique duas vezes em ROOT \ CIMV2
  • na “guia de consulta”, Digite a seguinte consulta selecione IdentifyingNumber,nome,Versão do Win32_Product e pressione Executar.

obtenha pacotes MSI GUID (comparando ProductCode e UpgradeCode)

Inicie o PowerShell: mantenha pressionada a tecla Windows e R juntas, solte a tecla Windows, digite “powershell” e pressione OK ou pressione Enter.

Copie o script abaixo em sua totalidade e, em seguida, clique com o botão direito dentro da janela do PowerShell.

para Win32_Property filtramos linhas e Colunas (UpgradeCode é apenas um dos muitos tipos de linhas). Esteja preparado para uma operação lenta, o WMI é muito lento fazendo essas recuperações.

$wmipackages = Get-WmiObject -Class win32_product$wmiproperties = gwmi -Query "SELECT ProductCode,Value FROM Win32_Property WHERE Property='UpgradeCode'"$packageinfo = New-Object System.Data.Datatable$packageinfo.Columns.Add("Name")$packageinfo.Columns.Add("ProductCode")$packageinfo.Columns.Add("UpgradeCode")foreach ($package in $wmipackages) { $foundupgradecode = $false #Let's assume that no UpgradeCode is found yet. foreach ($property in $wmiproperties) { if ($package.IdentifyingNumber -eq $property.ProductCode) { $packageinfo.Rows.Add($package.Name,$package.IdentifyingNumber, $property.Value) $foundupgradecode = $true break } } if(-Not ($foundupgradecode)) { # No upgrade code found, add product code to list. $packageinfo.Rows.Add($package.Name,$package.IdentifyingNumber, "") }}$packageinfo | Format-table ProductCode, UpgradeCode, Name# Enable the following line to export to CSV (good for annotation). Set full path in quotes.# $packageinfo | Export-Csv "\MsiInfo.csv"

o código de atualização é o GUID exclusivo de identificar uma família de um produto. Ou seja, os mesmos produtos com versões diferentes provavelmente foram enviados para alguns lançamentos. Esses produtos têm diferentes códigos de produto, mas eles estão ligados entre si usando o mesmo UpgradeCode.

por exemplo, supondo que escrevemos um produto chamado “Happy MSI” e este produto tenha apenas um pacote MSI para implantação no sistema cliente.

a primeira versão deste produto é na verdade o pacote MSI com o nome ” version_1.msi”, e a segunda versão é ” version_2.pacote”. Então, esses dois MSI devem ter o mesmo UpgradeCode. Quando os usuários executam ” version_2.msi ” em seu sistema, o Windows installer usará o UpgradeCode para decidir se as versões anteriores deste produto já estão presentes no sistema.

Installer API “MsiEnumRelatedProducts ()” usa o UpgradeCode para consultar todos os produtos da família.

Desinstalar Pacotes MSI

Se o que você quer fazer é desinstalar o pacote do MSI e você encontrou o código do produto (GUID) para, você pode fazer isso da seguinte maneira usando um prompt de comando elevado (pesquisa por cmd.exe, clique com o botão direito e execute como administrador):

Opção 1: desinstalação básica e interativa sem registro (rápida e fácil):

msiexec.exe /x {00000000-0000-0000-0000-00000000000C}

explicação rápida do parâmetro:

  • /X = executar a desinstalação sequência
  • {00000000-0000-0000-0000-00000000000C} = código de Produto para produto para desinstalar

Você também pode habilitar (verbose) o registo e execute-o em modo silencioso, se você quiser, levando-nos para opção 2:

Opção 2: desinstalação silenciosa com registo verboso (melhor para arquivos em lotes):

msiexec.exe /x {00000000-0000-0000-0000-00000000000C} /QN /L*V "C:\My.log" REBOOT=ReallySuppress

Parâmetro Rápida Explicação:

  • /X = executar a desinstalação sequência
  • {00000000-0000-0000-0000-00000000000C} = código de Produto para produto para desinstalar
  • /QN = completamente silenciosa
  • /L*V “C:\My.log = log Detalhado no caminho especificado
  • REBOOT=ReallySuppress = Evitar inesperada, repentina de reinicialização

Leave a Reply

O seu endereço de email não será publicado.