Instalador do Windows, verifique a existência do pacote

1

Usando o Windows, posso desinstalar o software via script / linha de comando da seguinte maneira:

msiexec /x {00000000-0000-0000-0000-000000000000}

Existe um método para testar apenas a existência do pacote fornecido, sem afetá-lo?

Estou interessado em uma entrada verdadeira / falsa ou qualquer outra entrada, indicando se o pacote existe na máquina e pode ser removida usando o instalador do Windows com o comando fornecido.

Egoísta
fonte

Respostas:

2

Você pode usar o comando REGEDIT e verificar se a chave com o nome correspondente ao código do produto está presente na chave a seguir.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Se não estiver lá, também pode estar aqui:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\

O comando BATCH a seguir pode fazer isso por você, substitua apenas o código do produto por um real:

@echo off
SET PRODUCTKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
REM *** Write your package code here
REG QUERY %PRODUCTKEY%\{00000000-0000-0000-0000-000000000000}
IF NOT %ERRORLEVEL% EQU 0 (GOTO :INSTALL) ELSE GOTO :ENDHERE  
:INSTALL
ECHO Not installed
GOTO :END 
:ENDHERE
ECHO Installed
GOTO :END
:END

Ou a versão de uma linha:

REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{00000000-0000-0000-0000-000000000000}

Como alternativa, você pode executar

msiexec.exe /fp {00000000-0000-0000-0000-000000000000}

que repara um pacote apenas se um arquivo estiver faltando; portanto, ele não deve fazer nada para instalar corretamente os pacotes. Mas o instalador seria iniciado e tentaria reparar o pacote instalado.

Vojtěch Dohnal
fonte