2011-03-25 92 views
1

雖然卸載VS2010安裝項目我正在開發其安裝一個服務,我收到以下錯誤(從詳細MSI日誌記錄拍攝):Windows安裝程序錯誤卸載服務(無法打開鍵未知)

MSI (c) (60:90) [13:37:59:038]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg 

Error 1402. Could not open key: UNKNOWN\Components\216B73E88467B322BBFF14C949E03D05\F1DB4DDE64042404E8863AB2CA9520DF. System error 5. 
Verify that you have sufficient access to that key, or contact your support personnel. 
MSI (s) (84:A4) [13:38:01:678]: User policy value 'DisableRollback' is 0 
MSI (s) (84:A4) [13:38:01:678]: Machine policy value 'DisableRollback' is 0 
Action ended 13:38:01: InstallExecute. Return value 3. 

請注意,該服務是使用本地計算機帳戶或域用戶帳戶安裝的。它不使用內置帳戶,如網絡服務,本地系統或本地服務。

使用Windows安裝程序詳細日誌分析器(wilogutl),它告訴我這段代碼是安裝程序日誌中的第一個錯誤。此外,它告訴我可能的解決方案:

標準操作或自定義操作 導致失敗。

Installer Version: 5.0.7601 
Client Side Privilege Details: None 
Server Side Privilege Details: 

MSI(一個或多個)(84:A4)[13:37:55:306]: 產品 {EDD4BD1F-4046-4042-8E68-A32BAC5902FD} 進行管理。 MSI(s)(84:A4) [13:37:55:306]:正在運行的產品 '{EDD4BD1F-4046-4042-8E68-A32BAC5902FD}' 具有提升的權限:產品被分配爲 。

我試過運行ProcMon來嘗試和診斷問題,但沒有運氣。安裝程序似乎沒有問題。安裝程序使用自定義操作(C#InstallerClass)來安裝該服務。但是,系統無法卸載我的計算機上的服務。

更新1: 下面是從原木的人類可讀的錯誤:

(SERVER)  MSI (s) (84:A4) [13:38:02:186]: Product: MyService -- Removal failed. 
(UNKNOWN)  
(SERVER)  MSI (s) (84:A4) [13:38:02:186]: Windows Installer removed the product. Product Name: MyService. Product Version: 1.0.0. Product Language: 1033. Manufacturer: ManufacturerName. Removal success or error status: 1603. 
(UNKNOWN)  
(SERVER)  MSI (s) (84:A4) [13:38:02:187]: Deferring clean up of packages/files, if any exist 
(SERVER)  MSI (s) (84:A4) [13:38:02:187]: MainEngineThread is returning 1603 

和誤差1603可以被解釋爲下面的(雖然這不是在日誌中示出):

文件[2] [3]被在使用 通過以下方法保持:名稱:[4], ID:[5],窗口標題: '[6]'

+0

我想以某種方式損壞封裝的組件之一。你可以發佈一個鏈接到完整的日誌,所以我們可以看看嗎? – 2011-03-28 06:28:16

回答

1

好的,我從另一位開發人員那裏得到了一些幫助,結果問題是用於安裝軟件的用戶帳戶是一個域用戶帳戶,它有權創建註冊表項,但沒有在卸載過程中刪除它們的權限。

此過程在註冊表中留下很多密鑰,導致卸載/重新安裝時出現問題。

解決的辦法是將自己添加爲計算機管理下的本地用戶帳戶。接下來,我不得不將這個用戶分配給用戶和管理員組(爲了好的措施)。最後,我必須進入註冊表並找到所有軟件註冊表項的殘餘並強制刪除它們。

這不是一件容易的事情,因爲刪除涉及約六步一鍵一個鍵的值,當你右鍵單擊並選擇權限的過程:

  • 授予完全訪問權限的管理員帳號
  • 授完全訪問用戶帳戶
  • 單擊高級,並添加我的域用戶帳戶
  • 將業主和「嘗試」添加管理員作爲所有者(W /遞歸兒童適用)
  • 回到用戶選項卡,授予完全控制到我的域用戶帳戶
  • 單擊確定,確定,然後我可以刪除鍵
相關問題