簡體   English   中英

Wix:如何卸載使用其他安裝程序安裝的以前安裝的應用程序

[英]Wix: how to uninstall previously installed application that is installed using different installer

假設您有從某個地方下載的安裝程序(不是wix安裝程序)。 您如何知道該安裝程序的UpgradeCode,以便可以在准備的新安裝程序的UpgradeCode部分中填寫它?

我可以以某種方式從注冊表中學習嗎? 因此,問題基本上是,如何知道計算機中安裝的程序的UpgradeCode。

實際上,我的問題是我的產品已與另一個安裝程序一起安裝,現在我正嘗試將其移至wix安裝程序。 但是,我在以前的安裝程序中找不到升級代碼,我想從已安裝的軟件中找到它。

謝謝。

假設它是一個基於Windows Installer的安裝程序(WiX,InstallShield等),則可以使用ORCA對其進行編輯,然后查看“屬性”表以查看其UpgradeCode。 如果將其打包為自解壓安裝程序,則可能必須先將其解壓縮。

您也可以查詢MSI API或在注冊表(HKCR \\ Installer)中查找此信息。 如果您使用注冊表路由,則最簡單的方法是查看Products / GUID / Sourcelist項並將其追溯到緩存的MSI,然后在ORCA中進行查看。 否則,您必須學習如何加入不同的數據集並將達爾文轉換后的GUIDS轉換回其原始GUID格式。

啟動PowerShell (以管理員身份運行)並運行以下命令以獲取具有產品代碼的已安裝產品列表

Get-WmiObject Win32_Product | Format-Table Name, LocalPackage

您將獲得所有已安裝的MSI產品的列表,以及通往本地緩存的MSI數據庫的奇怪路徑。 通常看起來像這樣:

C:\Windows\Installer\235bbf8.msi

235bbf8.msi文件名是random ,並且對於每個已安裝的產品而言都是不同的。 它是最初安裝的MSI文件的緩存副本。 它不包含cab文件(或至少在舊版本的Windows中不包含)。

您可以從Orca中使用隨機名稱打開該文件,方法是選擇“ 文件”->“打開” ,然后粘貼文件打開對話框的完整路徑,然后按“打開”。 除了檢查屬性表中升級代碼外不要進行任何更改 您還可以使用其他MSI工具,例如Installshield。

請注意,在啟用“顯示隱藏文件夾”並禁用“保護操作系統文件”選項之前,路徑C:\\ Windows \\ Installer“超級保護” ,甚至在Windows資源管理器中都不可見。 我仍然相信,如果您將整個路徑粘貼到Orca中,則可以直接打開文件-無需通過Windows資源管理器。

當我發布給WiX用戶時:

我已經看到升級是通過從注冊表中獲取卸載字符串來完成的,該注冊表中應該有一個可以使用的命令,因為它不是基於MSI的。 您是否應該在UI序列中還是在執行序列中調用它,還是在UI序列中調用它,取決於您對靜默安裝的要求,這意味着您需要在執行序列中靜默地執行它,並且可能需要更改卸載命令以使其靜默。 。

如果該安裝具有可從中獲取命令的標准卸載快捷方式,則相同的一般想法也應起作用。 無論哪種方式,您都只是使用CA運行外部程序,或者使用Util CAQuietExec之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM