1 回答

TA貢獻1951條經(jīng)驗 獲得超3個贊
自我修復(fù),簡單而簡短的解釋:
如果我刪除一個文件,為什么MSI安裝程序要重新配置?
可供選擇的答案
更新: 有一個更短、更“以解決方案為重點”的答案可用。
意外的Windows安裝程序自修復(fù)問題-快速修復(fù)?
如果你經(jīng)歷 意料之外的自我修復(fù), 你能做的第一件事
是為了 手動創(chuàng)建桌面快捷方式
在問題發(fā)生時直接啟動應(yīng)用程序可執(zhí)行文件。這就繞過了最常見的自修復(fù)觸發(fā)器,“ 宣傳的捷徑
如果這有效,你的問題就會“解決”(或避免)。 如果問題仍然發(fā)生,或者您的問題與加載 辦公室, Outlook外接程序
或者類似的(您不能通過快捷方式啟動),那么您很可能在您的系統(tǒng)上有一個COM注冊沖突,而修復(fù)則要復(fù)雜得多。這個 最簡單
嘗試就是 禁用任何加載項
您不需要在所討論的應(yīng)用程序的加載項對話框中查看這是否會使問題消失。 如果您仍然看到問題,那么您通常需要調(diào)試 真正的COM注冊沖突
(或沖突的文件/MIME關(guān)聯(lián),或命令謂詞)。這通常涉及(至少)你的系統(tǒng)上的兩個相互沖突的應(yīng)用程序,它們在每次運行應(yīng)用程序后,在每次啟動時更新注冊表(總是啟動其中一個應(yīng)用程序不會觸發(fā)自修復(fù)-當(dāng)您在應(yīng)用程序之間交替時,沖突就會出現(xiàn))。權(quán)限問題也可能導(dǎo)致同一個應(yīng)用程序無法更新系統(tǒng),并且通過反復(fù)運行自修復(fù)來不斷地嘗試。下面還有更多的可能性,更多的細節(jié) “ 實修
“就是 與兩個應(yīng)用程序供應(yīng)商聯(lián)系
和 請他們解決這個問題
(因為修復(fù)通常需要兩個供應(yīng)商MSI的修復(fù)),但根據(jù)我的經(jīng)驗,這很少成功。盡管試一試吧-因為這是幫助每個人克服長期煩惱的方法!我個人已經(jīng)為銀行部署提供了一個修復(fù)程序,并且很高興在我的包中解決了這個問題。 要調(diào)試自己,您需要獲得一個打開系統(tǒng)上緩存的msi文件的工具,并且需要“黑”數(shù)據(jù)庫-這是一個非常復(fù)雜的任務(wù)。 需要專家技能
,如果桌面環(huán)境的問題非常嚴重,建議您尋求安裝專家的幫助。它可以工作,但不要期待奇跡。 請參閱下面題為“ 找出扳機或罪魁禍首進行自我修復(fù)
“有關(guān)獲取查看和修改msi文件的工具的詳細信息
總體問題:開發(fā)人員調(diào)試和自修復(fù)
Windows安裝程序
自我修復(fù)的主要原因
1.包裝不良的公司msi文件或供應(yīng)商的msi設(shè)計缺陷
過度或錯誤地使用 每個用戶文件
或 每個用戶注冊表項
通常將錯誤的密鑰路徑設(shè)置到用戶配置文件中(而不是HKCU)。有關(guān)更多細節(jié),請參見下文第5節(jié)(以及這種情況的彩色說明)。 包裝干擾 COM服務(wù)器注冊錯誤
(特別是 VB6COM文件
或 VBA文件和庫
從諸如 AutoCAD
來自Autodesk和類似產(chǎn)品)。 兩個MSI包從兩個不同的位置注冊相同的COM文件(ActiveX/OCX),并在每次啟動應(yīng)用程序時進行“自修復(fù)戰(zhàn)斗”,以保持它們的版本正確注冊。 最后一個要啟動的應(yīng)用程序?qū)⒆员碓O(shè)置為自己的權(quán)限,它將一直持續(xù)到其他應(yīng)用程序啟動并執(zhí)行同樣的操作。一旦您在應(yīng)用程序之間交替使用,問題就會發(fā)生。看見 第7節(jié)
下面是更多的vb/com自修復(fù)細節(jié)。 組件密鑰路徑設(shè)置為 空文件夾
Windows安裝程序刪除的自修復(fù)(觸發(fā)無休止的刪除循環(huán)和隨后的自修復(fù)) ACL鎖定
權(quán)限問題(登錄用戶無法訪問密鑰文件,Windows安裝程序會多次觸發(fā)修復(fù))。這也可能是由外部進行的acl更改造成的,但通常是由msi本身完成的。
2.從(登錄)腳本到標(biāo)準OS功能、病毒、安全軟件等外部原因的干擾,刪除了文件或注冊表項。
臨時檔案
是 自動刪除
在被MSI包錯誤地安裝到臨時文件夾之后 干擾
從壞 登錄并觸發(fā)愉快的清理腳本
和 清理應(yīng)用程序
防病毒應(yīng)用
阻塞或刪除文件或注冊表項,使Windows安裝程序無法再檢測或訪問這些文件或注冊表項 計算機病毒
更改或刪除文件和注冊表設(shè)置 過度活躍的計算機修補程序
用戶刪除他們不理解的文件和設(shè)置
3.導(dǎo)致部署有缺陷或有問題的windows設(shè)計更改、缺陷或限制
阿 廣告宣傳的msi包
安裝失敗(可能會被取消,因為安裝時間太長),并不斷竊聽人。嚴格地說,這不是自我修復(fù),而是一個被取消的廣告中的安裝,但結(jié)果是一樣的:無休止的重新安裝。 終端服務(wù)器
并發(fā)癥。自修復(fù)通常在終端服務(wù)器上完全禁用。這通常不會導(dǎo)致自修復(fù)問題,但是應(yīng)用程序安裝時沒有需要的每個用戶文件或注冊表項,這些文件或注冊表項可以通過自我修復(fù)的良性使用來添加(請參閱下面的內(nèi)容)。然后用戶文件和用戶注冊表項就會丟失并出現(xiàn)問題。 UAC
干擾, 證書驗證失敗
產(chǎn)生的其他問題 窗口設(shè)計更改
..對于Windows的每一個版本,都會增加這樣的安全特性,并且通常會為可靠的部署增加新的障礙 甚至肯定 Windows更新
(更新、安全更新、修補程序等)可以對msi包的安全性強制執(zhí)行方式進行劇烈的更改,從而導(dǎo)致嚴重的問題行為。 雖然這與msi的創(chuàng)建有關(guān),而不是主要與最終用戶的使用有關(guān),但 更新Windows檢查的方式。 撤銷根證書
,破壞InstallShield命令行構(gòu)建的舊版本(用于數(shù)字簽名的設(shè)置)。到目前為止,很大程度上是一個已解決的問題,但它說明了微軟如何不斷地改變核心msi功能 以類似的方式 安裝Microsoft更新MS14-037“Internet Explorer版本6、7、8、9、10和11的安全更新”(KB 2962872) 阿 極有問題的變化
在WindowsInstaller中,安裝后出現(xiàn)基本功能 (Vista)。 突然,簡單的msi修復(fù)操作需要管理員憑據(jù)。
..這徹底削弱了msi的一個核心優(yōu)勢:常規(guī)用戶運行已批準安裝的能力。 臨時管理權(quán)
..在安裝該修復(fù)程序后,還報告了其他MSI問題。另一個Windows更新程序似乎修復(fù)了以下問題: (后來改為KB 3072630)
關(guān)于自我修復(fù)
彈性
找出扳機或罪魁禍首進行自我修復(fù)
自我修復(fù)的觸發(fā)裝置
右擊“我的電腦” 單擊管理 如果收到UAC提示,請單擊“繼續(xù)”。 轉(zhuǎn)到事件查看器部分,檢查Windows日志
看“ 申請部分
在事件日志中,您應(yīng)該可以從帶有ID 1001和1004的事件源“MsiInstaller”中找到警告。 在上面的示例屏幕截圖中 產(chǎn)品代碼
顯示在紅色框中。 為了確定產(chǎn)品代碼用于什么產(chǎn)品,您可以 查找產(chǎn)品名稱
通過這里解釋的程序: 如果您真的想深入檢查MSI文件的實際內(nèi)容,您必須掌握一個能夠查看MSI文件的工具( 例如Orca,InstallShield,AdvancedInstaller或類似的
)。然后打開“LocalPackage”路徑列表中列出的包,如在前面的項目點鏈接到的答案中的屏幕截圖所示。 對系統(tǒng)緩存的MSI文件和/或注冊表進行實際修改以刪除公告的入口點,例如(已公布的)快捷方式、COM注冊、文件關(guān)聯(lián)、MIME關(guān)聯(lián)或命令謂詞,這是一項專門的工作。這是非常復(fù)雜的,不是很好的做法,但這是我所知道的唯一的“最后手段”。 最后,應(yīng)用程序可以顯式調(diào)用WindowsInstaller本身來觸發(fā)共享組件的自修復(fù),例如拼寫檢查器。據(jù)我所知,有幾個版本的MicrosoftAccess做到了這一點,而且據(jù)我所知,這種行為是無法改變的。
MSI-專家
一些典型的自修復(fù)問題場景:
組件 關(guān)鍵路徑
是 設(shè)置為空文件夾
Windows安裝程序刪除自修復(fù)(觸發(fā)無休止的刪除循環(huán)和隨后的自修復(fù))。通過將文件夾添加到 相反( )。根據(jù)我的經(jīng)驗,這是最常見的情況下,不必要的自我修復(fù)。 非常普遍.
許多自我修復(fù)問題實際上是由 試圖調(diào)試應(yīng)用程序的開發(fā)人員通過動態(tài)替換文件,刪除文件或重命名它們。或者他們可能會使用清理 注冊表腳本和/或 批處理腳本若要注銷和注冊COM文件、COM-Interop、GAC文件、文件關(guān)聯(lián)或其他常見的開發(fā)人員調(diào)試和開發(fā)任務(wù),請執(zhí)行以下操作。 這,這個 熱交換當(dāng)應(yīng)用程序通過廣告中的快捷方式啟動時,可以觸發(fā)自修復(fù)。 開發(fā)人員的頂級提示
掙扎著 自修復(fù)期間 應(yīng)用調(diào)試是為了 不從 廣告捷徑,而是直接從Windows Explorer或手動創(chuàng)建的快捷方式啟動主EXE。這將繞過最常見的“ 自修復(fù)入口點 “- 廣告捷徑..自修復(fù)仍然可能是由損壞的com數(shù)據(jù)、廣告中的文件關(guān)聯(lián)和其他一些特殊情況造成的( 閱讀本賽門鐵克文章 有關(guān)入境點的資料)。 其他應(yīng)用
或者更確切地說 其他MSI軟件包通過干擾注冊表數(shù)據(jù)(通常是COM設(shè)置)以及其他設(shè)置和文件,可以破壞安裝并導(dǎo)致自修復(fù)。這些可能是最難解決的問題之一,因為應(yīng)用程序基本上正在解決這個問題,最后一個要運行的應(yīng)用程序每次都會更新注冊表。通常,必須重新設(shè)計兩個MSI文件,以便應(yīng)用程序在同一臺計算機上運行?;蛘撸凑债?dāng)天的順序,整個應(yīng)用程序可能被虛擬化(例如: Microsoft App-V虛擬包 )和運行在自己的沙箱,這似乎是越來越多的做法,在公司這一天。此錯誤場景經(jīng)常出現(xiàn)在 在企業(yè)環(huán)境中嚴重重新打包應(yīng)用程序..來自不同包的COM片段覆蓋來自另一個包的COM服務(wù)器的磁盤路徑,并且在每次應(yīng)用程序啟動時都會通過廣告中的快捷方式進行自修復(fù)斗爭。具有不同文件版本的相同文件名也可以從不同的文件位置注冊,并共享一些干擾的注冊表設(shè)置。據(jù)我回憶,要使COM服務(wù)器正確實例化,文件系統(tǒng)和注冊表中的至少7個變量或設(shè)置必須是同步的??匆?/trans>第7節(jié) 上下文中COM干擾的更專門描述,請參見 VB6和 VBACOM應(yīng)用程序 組件鍵路徑指向 臨時檔案這已經(jīng)被應(yīng)用程序刪除,或者系統(tǒng)最終會通過某種清理機制(也可以是一個清理工具,比如CCleaner)將其刪除。這對于臨時文件夾本身中的文件來說很常見。這可以通過不安裝臨時文件,或者將文件放在其他地方并使其永久化來解決。我在世界上經(jīng)??吹竭@個錯誤 公司應(yīng)用程序重新包裝如果捕獲映像的錯誤清理導(dǎo)致臨時文件的安裝,而該臨時文件根本不應(yīng)該包含在包中。通常,它們可能是臨時文件,等待重新啟動安裝到它們想要的、可能是受保護的位置,而重新啟動從來沒有執(zhí)行過-這是一個常見的應(yīng)用程序打包錯誤。在較小的程度上,我從 自動生成的軟件包從自動構(gòu)建系統(tǒng)出來。 許可問題
如果組件的密鑰文件安裝到調(diào)用應(yīng)用程序的用戶無法訪問的位置。Windows安裝程序可能無法“查看”已安裝的文件/密鑰路徑,或無法將該文件添加到文件夾中。這些問題可以更多 異域調(diào)試,而且可能不會經(jīng)常發(fā)生。在這個問題上有幾個不同的地方: 這方面的一個示例是將文件安裝到 %USERPROFILE%路徑
然后忘記設(shè)置HKCU注冊表鍵盤,而將鍵盤設(shè)置為指向%USERPROFILE%文件夾/文件。這通常會產(chǎn)生一個不可訪問的硬編碼密鑰路徑,該路徑是特定于用戶的: C:\文檔和設(shè)置\user 1\桌面
..對于其他登錄的用戶,將找不到此路徑,并且自修復(fù)將在圈內(nèi)運行。這里有一個 彩色插圖 .另一個示例是設(shè)置為系統(tǒng)帳戶不可寫文件夾的關(guān)鍵路徑。這可能看起來很奇怪,但可能是由于MSI錯誤地修改了系統(tǒng)ACL條目,或者是由于奇怪的系統(tǒng)管理員安全設(shè)置,或者是任何其他非標(biāo)準的ACL/Security描述符。 另一類自修復(fù)問題出現(xiàn)在 終端服務(wù)器和 西德里克斯..整體 Windows安裝程序服務(wù)可能會被鎖定,因此任何被調(diào)用以添加每個用戶數(shù)據(jù)的自修復(fù)都可能失敗,從而導(dǎo)致自修復(fù)失敗,或者更有可能根本不運行。這足以說明為什么不像一些msi文件那樣依賴于自修復(fù)作為添加用戶數(shù)據(jù)的方法,這樣的構(gòu)造必須替換為從每個機器位置復(fù)制的用戶文件的應(yīng)用程序部署或效率較低的用戶文件。 動態(tài)安裝 每個用戶運行一次的Microsoft特性。 VB6應(yīng)用程序
和 VBA應(yīng)用,它們是 重COM有巨大的潛力 COM干擾(COM設(shè)置相互覆蓋并變得不一致),已知這些設(shè)置會引發(fā)幾個神秘的自修復(fù)問題,其中大多數(shù)問題都沒有得到正確的解釋。在啟動VisualBasic 6(VB6)或VisualStudio(和許多其他應(yīng)用程序)時也會發(fā)生這種情況。公分母是,當(dāng)前安裝狀態(tài)中的某些錯誤觸發(fā)了自修復(fù),您可以跟蹤 罪魁禍首產(chǎn)品和部件通過遵循上面一節(jié)中概述的步驟,稱為“ 找出扳機或罪魁禍首進行自我修復(fù)". 一定要在這里報告你的發(fā)現(xiàn)。(我再也不使用VB6或VBA了-你的詳細發(fā)現(xiàn)可以幫助那些長期困擾別人的人)。 雖然我從未非常詳細地調(diào)試過這樣的vb6問題,但這些問題似乎是由安裝的應(yīng)用程序造成的。 共同控制, VB6COM文件, 模板
和 VBA文件和庫
這與現(xiàn)有的文件、注冊表設(shè)置和框上的注冊相沖突,或者每個用戶的注冊表項或用戶配置文件可能需要為每個用戶添加一次(允許自我修復(fù)完成一次,并查看問題是否消失)。特別是我在發(fā)射時聽說過這些神秘的自我修復(fù)問題。 AutoCAD
(來自Autodesk), ,以及其他一些產(chǎn)品(通常在工具中提供VBA自動化)。 有些應(yīng)用程序甚至錯誤地從VB6運行時自行安裝零碎,導(dǎo)致這些設(shè)置在卸載這些應(yīng)用程序時被“撕開”。這肯定會導(dǎo)致自修復(fù)觸發(fā),以修復(fù)現(xiàn)在(部分?)壞的VB6運行時。這個問題有幾個變體,“Catch all”解決方案可能是VB6運行時的完全卸載和重新安裝。 這里描述了一個非常常見的“特定”問題,涉及幾個com注冊表項。
..它很好地說明了在這個場景中發(fā)生了什么。 如果您在啟動時遇到意外的自我修復(fù) VB6, AutoCAD, VisualStudio
或者其他產(chǎn)品,你可以 首先,嘗試一個解決辦法。
為了防止這些意想不到的自我修復(fù),首先(這不能解決問題,但可能繞過它的癥狀): 關(guān)于VB6風(fēng)格的最典型的自我修復(fù)之一,請參閱我對本主題中的問題的評論: 為什么我的應(yīng)用程序會觸發(fā)另一個應(yīng)用程序的安裝程序? (ActiveX控件從磁盤上的兩個不同位置注冊了兩次)。 在我看來“ 一般固定
-這應(yīng)該總是有效的-對于VB-com自我修復(fù)的問題,是讓供應(yīng)商更新他們的項目,以使用最新的官方和正確安裝和共享ActiveX控件/OCX可用,而不是依靠自己的版本安裝冗余和注冊在錯誤的地點。 Windows安裝程序修復(fù)或自修復(fù)的一個特例,值得提及的是幾年前MicrosoftOffice的問題。 自修復(fù)會被觸發(fā),你會 要求插入MicrosoftOffice安裝媒體(在那些日子里,CD-ROM或DVD-今天可能是拇指驅(qū)動器)。據(jù)我所知,這與對內(nèi)置Windows安裝程序標(biāo)準操作的錯誤調(diào)用有關(guān)“ ResolveSource“這意外地(并且不必要地)觸發(fā)了安裝媒體的提示。 非常常見的支援呼叫回到過去,為了完整起見在這里提到。重要的是要注意 這個問題仍然可能發(fā)生。每當(dāng)MS Office從任何 可移動介質(zhì)(而不是更好的選擇 網(wǎng)絡(luò)共享)。當(dāng)MS Office檢測到需要進一步安裝未安裝的產(chǎn)品的可選組件(通常是共享組件)時,就會發(fā)生這種情況。例如,不尋常的拼寫檢查器、各種模板或特定且很少使用的工具。可以將這些組件安裝為“在第一次使用時安裝”(廣告中的特性是正確的Windows安裝程序術(shù)語)。 還有許多其他可能的情況。舉幾個例子: a 不良登錄腳本
可以刪除系統(tǒng)上的內(nèi)容并觸發(fā)自修復(fù)。 阿 廣告包裝可能失敗
安裝和繼續(xù)竊聽人 兩個應(yīng)用程序可能會啟動 為同一文件關(guān)聯(lián)而戰(zhàn)
電腦,計算機 修補工
黑客可以手動刪除觸發(fā)自我修復(fù)的數(shù)據(jù)。 反病毒可以隔離文件和注冊表設(shè)置
觸發(fā)修復(fù) 病毒可以改變或刪除事物。
觸發(fā)自修復(fù) a 磁盤和注冊表清理工具
例如ccleaner可以刪除文件并觸發(fā)自修復(fù)。 毫無疑問還有很多其他情況.。
自我修復(fù)的良性用途
自修復(fù)
有時習(xí)慣 添加每個用戶的數(shù)據(jù)
到 香港大學(xué)
而 用戶配置文件
..這種設(shè)計主要是有效的,但是隨著新的部署障礙的出現(xiàn),每個版本的Windows都會變得更糟。首先,自我修復(fù)通常根本不起作用。 終端服務(wù)器
呈現(xiàn)設(shè)置不完整。盡管這是討論的重點,但最好是將應(yīng)用程序復(fù)制文件復(fù)制到每個用戶的位置。另一個問題是UAC。每個新的Windows版本都會出現(xiàn)其他問題,甚至上面描述的一些Windows更新(虛擬文件夾重定向、證書提示、以前不存在的目標(biāo)路徑限制等)。 當(dāng)需要自我修復(fù)時 設(shè)置用戶數(shù)據(jù)
,可能要花很長時間 用戶中止并繼續(xù)這樣做。
..這會導(dǎo)致自我修復(fù)一直出現(xiàn),直到允許完成為止。 共同的支持電話.
還可以用“ “設(shè)計要安裝的” 按需
在應(yīng)用程序使用過程中觸發(fā)。很少有應(yīng)用程序使用它,但是當(dāng)它被使用時,一個冗長的“自修復(fù)樣式”安裝程序可能會運行-拉下所需的文件和設(shè)置。 如果取消此過程,則會回滾該功能的安裝,并可再次觸發(fā)該功能。
..這個安裝可以是 慢的
為 幾個原因:
如果安裝程序使用 大型壓縮CAB文件
首先下載,然后 提取
本地的 慢盤
在那里 抗病毒
開始掃描整個CAB,然后每次提取文件,操作可能需要很長時間。 如果 網(wǎng)絡(luò)連接是無線的
還有 很多小文件
下載( 高延遲
),反病毒又會減慢速度。 如果從可移動媒體安裝,則可以獲得插入源媒體的提示,以允許復(fù)制文件。如果在辦公環(huán)境中使用可移動媒體(不應(yīng)該使用 等等.。
添加回答
舉報