Como posso encontrar o GUIA de produto de uma configuração MSI instalada?
Preciso de encontrar o guia de produto para um arquivo MSI instalado, a fim de efectuar manutenção como patching
, uninstall
([como desinstalar]1) e também para **auditoria
***.
58
2
Início rápido do Powershell: hold Windows key, tap R, digite in "powerhell" e prima Enter 2. Usar VBScript
Descrito abaixo em "Alternative Tools" (secção 3). Esta opção pode ser safer do que Powershell por razões explicadas em detalhe abaixo. Na sua essência é (muito) **mais rápido** e não é capaz de desencadear a auto-reparação MSI uma vez que não passa pela WMI (acede directamente à MSI COM API - à velocidade de bolhas). No entanto, está mais envolvido do que a opção Powershell* (várias linhas de código). 3. Consulta do Ministério
Alguns juram ao procurar coisas no registo. Não é a minha abordagem recomendada - gosto de passar por APIs apropriados (ou por outras palavras: chamadas de funções de SO). Há sempre estranhas excepções contabilizadas apenas pelos internos da implementação do API:
SOFTWARE
MicrosoftWindows
CurrentVersion`Uninstall"Arquivo MSI original / Fonte WiX".
Pode encontrar o
Código do produto
na Tabela de propriedades` de qualquer ficheiro MSI (e de qualquer outra propriedade também). No entanto, o GUID poderia ser (raramente) anulado por uma transformação aplicada no momento da instalação e, portanto, não corresponder ao GUID em que o produto está registado (a abordagem 1 e 2 acima relatará o código real do produto - que está registado no Windows - em cenários tão raros). É preciso uma ferramenta para visualizar os ficheiros MSI. Veja no final da seguinte resposta para uma lista de ferramentas gratuitas que pode descarregar (ou veja a opção rápida abaixo): https://stackoverflow.com/questions/48482545/how-can-i-compare-the-content-of-two-or-more-msi-files/48482546#48482546 UPDATE: Para conveniência e necessidade de velocidade :-), descarregue SuperOrca sem demora e sem alarido a partir de este hotlink de descarga directa - a ferramenta é suficientemente boa para fazer o trabalho - instale, abra o MSI e vá directamente para a tabela de propriedades e encontre a linhaProductCode
(por favor verifique sempre um hotlink de descarga directa - obviamente - pode utilizar virustotal.com para o fazer - verificação online utilizando dezenas de conjuntos de anti-vírus e malware para verificar o que carrega).A saída** deve ser semelhante a esta: Por alguma estranha razão o "ProductCode" é referido como "IdentifyingNumber" no WMI*. Por outras palavras - na imagem acima o número de identificação é o Código de Produto. Se precisar de executar esta consulta remotamente contra lotes de computadores remotos*, ver "Retrieve Product Codes From A Remote Computer*" secção abaixo.
Neste caso, a produção é semelhante a esta:
Recuperar Códigos de Produtos de um Computador Remoto
Em teoria, só deve ser possível especificar um nome de computador remoto como parte do próprio comando. Aqui está o mesmo comando acima definido para correr na máquina "RemoteMachine" (secção ``-ComputerName RemoteMachine'' acrescentada):
Isto pode funcionar se estiver a correr com direitos de administrador de domínio num domínio adequado. Num ambiente de grupo de trabalho (pequeno escritório / rede doméstica), provavelmente terá de adicionar credenciais de utilizador directamente às chamadas WMI para o fazer funcionar. Além disso, as ligações remotas na WMI são afectadas por (pelo menos) Windows Firewall, DCOM settings, e User Account Control (UAC) (mais quaisquer factores adicionais não-Microsoft - por exemplo microsoft firewalls reais, third party software firewalls, **software de segurança de vários tipos***, etc...). Se vai funcionar ou não depende da sua configuração exacta.
Ligação remota ao WMI com PowerShell **UPDATE***: Uma secção extensa sobre o funcionamento remoto do WMI pode ser encontrada nesta resposta: https://stackoverflow.com/questions/46637094/how-can-i-find-the-upgrade-code-for-an-installed-msi-file/46637095#46637095. Parece uma regra de firewall e a supressão da solicitação UAC através de um ajuste de registo pode fazer com que as coisas funcionem num ambiente de rede de grupo de trabalho. Não é recomendado alterar em termos de segurança, mas funcionou para mim.
Ferramentas alternativas
PowerShell requer a instalação do .NET framework (actualmente na versão 3.5.1 parece? Outubro, 2017). A própria aplicação PowerShell ** também pode estar em falta* da máquina, mesmo que o .NET esteja instalado. Finalmente, acredito que o PowerShell pode ser desabilitado ou bloqueado por várias políticas e privilégios do sistema. Se for este o caso, pode tentar algumas outras formas de recuperar códigos de produtos. A minha alternativa preferida é VBScript** - é rápido e flexível (mas também pode ser bloqueado em certas máquinas, e o scripting está sempre um pouco mais envolvido do que a utilização de ferramentas).
SELECT IdentifyingNumber,Name,Version FROM Win32_Product
e prima Execute.Explicação rápida dos parâmetros:
Também pode activar o registo (verboso) e correr em modo silencioso se o desejar, levando-nos à opção 2: Opção 2**: Desinstalação silenciosa com registo verboso*** (melhor para ficheiros de lote):
Explicação rápida dos parâmetros:
Existe aqui uma compreensiva referência para a desinstalação do MSI (várias formas diferentes de desinstalação de pacotes MSI): https://stackoverflow.com/questions/450027/uninstalling-an-msi-file-from-the-command-line-without-using-msiexec/1055933#1055933. Há uma infinidade de diferentes maneiras de desinstalar. Se estiver a escrever um ficheiro de lote, dê uma vista de olhos à secção 3 acima, com uma resposta ligada para algumas variantes de linha de comando de desinstalação comuns e padrão. E um link rápido para msiexec.exe (opções de linha de comando) (resumo da linha de comando para msiexec.exe da MSDN). E a versão Technet também.
Recuperação de outras propriedades / informações MSI (f.ex Código de actualização)
Aqui está um artigo semelhante com a poucas opções adicionais para a recuperação de informação MSI utilizando o registo ou a msi em cache: https://stackoverflow.com/questions/11251034/find-guid-from-msi-file?
Tópicos semelhantes (para referência e fácil acesso - devo limpar esta lista):
Se tiver demasiados instaladores para encontrar facilmente o que procura, aqui está uma concha de poder para fornecer um filtro e reduzi-lo um pouco por nome de exibição.