Desinstalações duplicadas, mas diferentes do Windows no registro

Desinstalações duplicadas, mas diferentes do Windows no registro

Estou tentando entender a diferença entre chaves GUID e não GUID em HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall.

Algumas coisas têm uma chave GUID e uma chave não GUID, com UninstallStrings muito diferentes. Por exemplo, o Autodesk Revit possui um bom UninstallString na chave GUID

MsiExec.exe /X{7346B4A0-1900-0510-0000-705C0D862004})

Mas na chave não GUID, o UninstallString é na verdade uma string Patch, eu acho.

C:\Program Files\Autodesk\Revit 2019\Setup\Setup.exe /P {7346B4A0-1900-0510-0000-705C0D862004} /M RVT /LANG en-US)

Mas outros, como o Autodesk Desktop App, não possuem uma chave GUID, e UninstallString na chave não GUID é bom.

C:\Program Files (x86)\Autodesk\Autodesk Desktop App\removeAdAppMgr.exe

Eu estou me perguntando, isso é normal, ou talvez algo bobo que só a Autodesk faz? E existe um bom recurso da Microsoft detalhando quais informações são esperadas nas várias pastas de desinstalação? Até agora não consigo encontrar nada detalhado.

EDIT: Em uma nota semelhante, estou descobrindo que a Microsoft também está fazendo duplicatas, mas não GUID versus não. Aqui estão três desinstalações diferentes com o mesmo DisplayName, mas três GUIDs diferentes referenciados. Além disso, todas essas instalações são x64, mas são encontradas em WOW6432Node. Frustrante.

Visual C++ 2008 - x64 (KB958357) - v9.0.30729.177
C:\Windows\SysWOW64\msiexec.exe /x {8CCEA24C-51AE-3B71-9092-7D0C44DDA2DF} /qb+ REBOOTPROMPT=""

Visual C++ 2008 - x64 (KB958357) - v9.0.30729.177
C:\Windows\SysWOW64\msiexec.exe /x {C3A57BB3-9AA6-3F6F-9395-6C062BDD5FC4} /qb+ REBOOTPROMPT=""

Visual C++ 2008 - x64 (KB958357) - v9.0.30729.177
C:\Windows\SysWOW64\msiexec.exe /x {F6F09DD8-F39B-3A16-ADB9-C9E6B56903F9} /qb+ REBOOTPROMPT=""

Responder1

Boa resposta já postada, ainda postarei o que comecei a escrever antes de sua pergunta ser excluída anteriormente.

OGUIDas chaves são geralmenteWindows Installer setups(arquivos com*.MSIextensão) - o padrão antigo para implantação da Microsoft em uso intenso em corporações.

Existem muitos tipos diferentes de instaladores, mas eles geralmente são agrupados como setup.exearquivos ou MSI filestipos mais recentes de formatos de instalador, como APPX(já obsoleto), MSIX(emergente), etc... Existem realmente muitas possibilidades.

AutoDeskparece estar usando um setup.exinstalador de estilo legado que não é baseado em Windows Installer, embora ainda seja possível que o setup.exeapontado seja um wrapper que inicia um pacote do Windows Installer.

Adicionarei alguns links abaixo para obter informações sobre vários tipos de configurações e tarefas envolvidas ao lidar com configurações (como extração de arquivos).


Alguns links:

Existem muitos outros links incorporados nessas respostas para coisas semelhantes.

Responder2

Quando um desenvolvedor cria um aplicativo, normalmente escolhe um método para instalá-lo. Uma opção popular é usar o Windows Installer e, portanto, criar um MSI. Um arquivo MSI é essencialmente um banco de dados que informa ao Windows Installer como instalar o software, ou seja, arquivos a serem descartados, chaves de registro a serem criadas, serviços a serem criados, etc.WiXouInstalarShield.

Como parte da criação de um MSI, o produto deve receber um GUID exclusivo chamado ProductCode. É este código de produto que você vê na chave de desinstalação. O valor UninstallString usa o ProductCode, pois o Windows Installer pode usá-lo para desinstalar o aplicativo usando a opção /X.

O desenvolvedor pode optar por não usar o Windows Installer e escrever seu próprio instalador. Porém, para que apareça em Programas e Recursos, o desenvolvedor precisará criar manualmente as chaves de desinstalação do aplicativo. No mínimo, eles precisariam definir DisplayName e UninstallString (referência). É improvável que eles criassem um GUID para identificar o aplicativo, mas poderiam.

Se o desenvolvedor criou um instalador personalizado, ele também precisará fornecer algum método para desinstalar o aplicativo. Como resultado, a maioria dos desenvolvedores cria um aplicativo de desinstalação separado, que é apontado no UninstallString. Este aplicativo também pode ser usado para apresentar uma opção para modificar, reparar ou desinstalar o aplicativo.

É realmente a preferência do desenvolvedor.

informação relacionada