我試圖了解 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
我將在下面添加一些鏈接,以提供有關處理設定(例如文件提取)時涉及的各種類型的設定和任務的資訊。
一些連結:
- 從 EXE 提取 MSI(很多進一步的連結)
- 最常用部署工具的簡單清單視圖(適用於 Windows 安裝程式)
- 更全面的部署工具連結列表(各種)
- 如何找到已安裝的 MSI 設定的產品 GUID?
- 從命令列卸載 MSI 檔案而不使用 msiexec
這些答案中還嵌入了許多其他類似內容的連結。
答案2
當開發人員創建應用程式時,他們通常會選擇一種安裝方法。一種流行的選擇是使用 Windows Installer,從而創建 MSI。 MSI 檔案本質上是一個資料庫,它告訴 Windows Installer 如何安裝軟體,即要刪除的檔案、要建立的登錄項目、要建立的服務等。維克斯或者安裝盾。
作為創作 MSI 的一部分,應為產品指派一個名為 ProductCode 的唯一 GUID。您在卸載金鑰下看到的就是這個產品代碼。 UninstallString 值使用 ProductCode,因為 Windows Installer 可以使用該值透過 /X 開關卸載應用程式。
開發人員可以選擇不使用 Windows Installer 並編寫自己的安裝程式。不過,要使其出現在「程式和功能」中,開發人員需要手動為應用程式建立卸載密鑰。他們至少需要設定 DisplayName 和 UninstallString (參考)。他們不太可能創建 GUID 來識別應用程序,但他們可以。
如果開發人員創建了自訂安裝程序,那麼開發人員還需要提供某種方法來卸載應用程式。因此,大多數開發人員都會建立一個單獨的卸載應用程序,由 UninstallString 指向該應用程式。該應用程式還可用於提供修改、修復或卸載該應用程式的選項。
這確實是開發者的偏好。