簡體   English   中英

Wix / MSI:無法卸載

[英]Wix / MSI : Unable to uninstall

我已經為內部項目開發了Wix安裝程序,但是由於偶然,我發現由於以下錯誤消息,我無法在開發計算機上卸載安裝程序:

您嘗試使用的功能位於不可用的網絡資源上

對話框指向我從功能部件安裝的.msi的路徑。 (.msi在那里,但是已經被重建,因此自從我安裝它以來就進行了更改)

我擔心此對話框,因為我相信Windows Installer會跟蹤已安裝的.MSI文件,但是此對話框似乎表明我可以通過刪除,移動或更改安裝程序來破壞我的卸載程序。

是這樣嗎

我需要怎么做才能確保不以此方式破壞卸載程序? (我們是否需要保留已在計算機上安裝的所有版本安裝程序的副本?)

擺脫這種情況的最簡單方法是重新緩存/重新安裝。 構建一個不會“損壞”的MSI新版本(以任何方式損壞,在這種情況下,它可能根本不會損壞,您只需要一個新的源即可)。 然后,您使用如下命令行:

msiexec /fv path\to\your.msi /l*v i.txt

這將通過緩存的MSI復制your.msi並進行修復。 這樣您會在一個更好的地方。

編寫安裝的第一個痛苦的教訓是,永遠不要在自己的盒子上運行安裝。 當然,直到達到成熟點並經歷了多個質量檢查周期。 這就是我們擁有集成實驗室和虛擬機的目的。 (有句俗話說,你不應該在自己的后院做。)

就是說,通常MSI卸載不需要MSI,但在某些情況下可能需要MSI。 例如,如果要在卸載過程中調用ResolveSource操作,則MSI將查找.MSI。

現在,有幾種方法可以使泡菜擺脫困境:

  1. 取得一個您確實擁有的MSI,然后使用ORCA對其進行編輯,使其與您安裝的MSI的文件名,UpgradeCode,ProductCode和PackageCode匹配。 通過查看%WINDIR%\\Installer中存在的已剝離的緩存MSI,您應該能夠獲得所有這些信息。 CD到該目錄,然后執行findstr -i -m SOMESTRING *.msi ,其中SOMESTRING是唯一的東西,例如您的ProductName屬性。 一旦知道了緩存的MSI的名稱,就可以在Orca中將其打開以獲取所需的屬性。 然后將這些屬性放入您可用的MSI副本中,然后嘗試進行卸載。 不,不是您安裝的確切MSI,但通常它已經足夠接近了。

要么

  1. 使用前端Windows Installer清理實用程序(如果仍有)和/或后端MSIZAP實用程序,可以清除MSI和Add / RemovePrograms中有關應用程序的所有知識。 請注意,這實際上並沒有卸載程序,因此您還必須編寫腳本或以其他方式手動卸載程序的所有痕跡。

要么

  1. 重新映像您的工作站

如果您確切知道出了什么問題(在開發過程中通常是這種情況),我更喜歡打開Windows將用於卸載的MSI文件,並使用Orca之類的工具直接編輯該MSI文件,以修復或刪除導致故障的部分。

例如:

  • 在%WINDIR%\\ Installer中找到MSI文件。 在您執行失敗的卸載之后,MSI應該是該文件夾中最后編輯的MSI文件。
  • 使用Orca打開msi文件。
  • 刪除發生故障的部分-例如,發生異常情況的InstallExecuteSequence操作失敗。
  • 保存msi並關閉Orca以釋放對msi文件的鎖定。

1-您在安裝過程中是否嘗試過“ 從源代碼運行 ”?

這是功能樹中的一個選項,它使您可以從安裝源中運行某些文件。 這通常與網絡上的管理映像結合在一起。 參見下圖。 我沒有嘗試過,但是我認為這可能會導致:“如果網絡斷開並且您嘗試卸載,則您正在嘗試使用的功能位於不可用的網絡資源上 ”。 僅從理論上講,還有其他可能發生的方式。

在此處輸入圖片說明

2-您是否正在運行腳本自定義操作 如果是這樣,您是解壓縮到tmp文件夾還是從已安裝的文件或二進制表運行? 如果是這樣,是否將自定義操作設置為僅在安裝時運行?

3-您是否正在運行指向已安裝文件的EXE自定義操作 如果是這樣,則該文件在網絡上可能無法訪問。

4-您的任何用戶配置文件文件夾是否都重定向到網絡共享?

5-您是否將任何東西直接安裝到網絡上的文件夾

還有許多其他可能性。

暫無
暫無

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

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