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.
OGUID
as chaves são geralmenteWindows Installer setups
(arquivos com*.MSI
extensã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.exe
arquivos ou MSI files
tipos mais recentes de formatos de instalador, como APPX
(já obsoleto), MSIX
(emergente), etc... Existem realmente muitas possibilidades.
AutoDeskparece estar usando um setup.ex
instalador de estilo legado que não é baseado em Windows Installer
, embora ainda seja possível que o setup.exe
apontado 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:
- Extraia MSI do EXE(muitos outros links)
- Visualização de lista simples das ferramentas de implantação mais usadas(para instalador do Windows)
- Lista de links mais abrangente de ferramentas de implantação(de todos os tipos)
- Como posso encontrar o GUID do produto de uma configuração MSI instalada?
- Desinstalando um arquivo MSI da linha de comando sem usar msiexec
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.