註冊表中重複但不同的 Windows 卸載

註冊表中重複但不同的 Windows 卸載

我試圖了解 HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall 中 GUID 和非 GUID 金鑰之間的差異。

有些東西有一個 GUID 金鑰和一個非 GUID 金鑰,具有非常不同的 UninstallStrings。例如,Autodesk Revit 在 GUID 鍵中有一個很好的 UninstallString

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

但在非 GUID 鍵中,我認為 UninstallString 實際上是一個 Patch 字串。

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

但其他軟體(例如 Autodesk 桌面應用程式)沒有 GUID 金鑰,而且非 GUID 金鑰中的 UninstallString 很好。

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

我想知道,這是正常現象,還是只有 Autodesk 才會這麼做?並且,是否有一個很好的 Microsoft 資源詳細說明了各個卸載資料夾中需要哪些資訊?到目前為止我還找不到任何詳細的內容。

編輯:類似地,我發現微軟也在做重複,但不是 GUID 與不重複。以下是三個具有相同 DisplayName 的不同卸載,但引用了三個不同的 GUID。此外,這些都是 x64 安裝,但可以在 WOW6432Node 中找到。令人沮喪。

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=""

答案1

好的答案已經發布,我仍然會發佈在你的問題被刪除之前我開始寫的內容。

GUID鍵一般是Windows Installer setups(文件與*.MSI擴展)- Microsoft 在企業中大量使用的部署的老化標準。

有許多不同類型的安裝程序,但它們通常包裝為setup.exe文件或MSI files更新類型的安裝程序格式,例如APPX(已過時)、MSIX(新興)等......確實有很多可能性。

歐特克setup.ex看起來正在使用不基於 的舊版e 安裝程序,儘管所指向的Windows Installer仍然有可能是啟動 Windows Installer 程序包的包裝器。setup.exe

我將在下面添加一些鏈接,以提供有關處理設定(例如文件提取)時涉及的各種類型的設定和任務的資訊。


一些連結

這些答案中還嵌入了許多其他類似內容的連結。

答案2

當開發人員創建應用程式時,他們通常會選擇一種安裝方法。一種流行的選擇是使用 Windows Installer,從而創建 MSI。 MSI 檔案本質上是一個資料庫,它告訴 Windows Installer 如何安裝軟體,即要刪除的檔案、要建立的登錄項目、要建立的服務等。維克斯或者安裝盾

作為創作 MSI 的一部分,應為產品指派一個名為 ProductCode 的唯一 GUID。您在卸載金鑰下看到的就是這個產品代碼。 UninstallString 值使用 ProductCode,因為 Windows Installer 可以使用該值透過 /X 開關卸載應用程式。

開發人員可以選擇不使用 Windows Installer 並編寫自己的安裝程式。不過,要使其出現在「程式和功能」中,開發人員需要手動為應用程式建立卸載密鑰。他們至少需要設定 DisplayName 和 UninstallString (參考)。他們不太可能創建 GUID 來識別應用程序,但他們可以。

如果開發人員創建了自訂安裝程序,那麼開發人員還需要提供某種方法來卸載應用程式。因此,大多數開發人員都會建立一個單獨的卸載應用程序,由 UninstallString 指向該應用程式。該應用程式還可用於提供修改、修復或卸載該應用程式的選項。

這確實是開發者的偏好。

相關內容