Feel free for technical discus.
背景
安裝SolidWorks失敗,卸載不干凈,也刪除清除不了,不想重裝,邊搜索解決方案邊整理。截止2021-1-14,搜索了眾多中英文條目。
雖然是針對自己的問題,最終自己調試解決,但感覺覆蓋了很多相關問題。蘿卜L發於博客園
本文范圍
- 以SolidWorks (SW) 2020為主,應該涵蓋2019、2018、2016、2015。
- 以64位(64-bit)為主,應該適用於32位(32-bit)。
- 涉及的組件:
- Microsoft Visual Studio Tools for Applications 2015 (VSTA)。安裝程序包名稱vsta_setup.exe。
- Visual C++ Redistributable Packages for Visual Studio 2013(VC Redistributable),安裝程序包文件名稱VCRedist15\vcredist_x86.exe(vc_redist.x86),vcredist_x64.exe(vc_redist.x64)。
- VCRedist15,VCRedist12,VCRedist11是一類,VCRedist10,VCRedist9是一類。
- vcRuntimeMinimum/Additional。
- 涉及的問題/故障:
- 安裝管理程序無法在此注冊表位置生成注冊表項: HKLM\Software\Wow6432Node\SolidWorks
- 0x80070005 - 拒絕訪問
- 0x80070005 Failed to create registration key
- 0x80070659 系統策略禁止這個安裝。請與管理員聯系。,系統管理員設置了系統策略,禁止進行此安裝。(This installation is forbidden by system policy. Contact you system administratior)
- Error 0x80070659: Failed to install MSI package,Failed to execute MSI package.,Failed to configure per-machine MSI package.,Error 0x80070659: Failed to execute MSI package.
- 安裝管理程序遇到嚴重錯誤
- Could not open key: UNKNOWN\Components\xx\yy. Verify that you have sufficient access to that key, or contact your support personnel.
- 涉及的系統配置:
- 注冊表(Registry)
- 策略組(GPO: Group Policy Object)。(實質為注冊表的圖形界面)
- 權限(Permissions、Rights)。關於用戶、用戶組,分文件夾,注冊表訪問權限。
- 用戶賬戶控制設置(UAC)。即以管理員身份運行。
- 注冊表(Registry)
- 涉及的日志記錄:
- SolidWorks的記錄:C:\Users\用戶名\AppData\Roaming\SOLIDWORKS\Installation Logs\SummaryIMLog_20200-XXXXXX_XXXXX.txt
- (如后安裝過程提及的)各基礎運行庫的記錄:
- C:\Users\用戶名\AppData\Local\Temp\dd_vcredist_amd64_XXXXXXXXXXXXXX.log、dd_vcredist_x86_XXXXXXXXXXXXXX.log
- C:\Users\用戶名\AppData\Local\Temp\dd_vsta_setup_(var.MajorVersion)_XXXXXXXXXXXXXX.log
- C:\Users\用戶名\AppData\Local\Temp\dd_vcredist_amd64_XXXXXXXXXXXXXX.log、dd_vcredist_x86_XXXXXXXXXXXXXX.log
安裝過程:
- .\setup.exe實際調用\sldim\sldIM.exe。由其主導安裝以下基礎運行庫、安裝包。
- 先安裝基礎運行庫。位於.\PreReqs\。為可執行文件(后綴.exe),可(無配置、參數)獨立運行。
- 再安裝子安裝包(后綴.msi,即microsoft installer)。
- 如.\swwi\data\SolidWorks.Msi、.\swwi\lang\chinese-simplified\chinese-simplified.msi等。
- 可運行,但可能需要傳遞參數、配置。
任意子過程失敗可能導致整個安裝過程失敗。
失敗后,SolidWorks會有故障描述,生成(如上)日志記錄。各運行庫亦可能有自己的記錄。蘿卜L發於博客園
故障分析:
調試能精准定位故障,但畢竟麻煩,建議先嘗試常規方法。
同時我覺得大多數用戶不會特別配置系統(注冊表、策略組、用戶賬戶、權限等),不論主動,或由其他軟件所設置。
故障通常源於未卸載干凈(卸載過程中斷、甚至卸載后沒及時重啟、死機等)。
不能具體問題具體分析,就先多嘗試吧。蘿卜L發於博客園
常規故障處理:
- 對基礎運行庫故障。
- 按提示安裝;
- 當已安裝,若有選項嘗試修復;
- 若修復失敗,嘗試先卸載,后安裝;
- 嘗試安裝高版本覆蓋。
高版本不是指VC2019高於VC2015,而是主版本號相同,子版本號更高。
版本號可能不體現在文件名上(VC2019、VC2015可能都叫vc_redist.exe)。
運行時會有版本號,或者文件的屬性\詳細信息\文件版本處。 - 安裝/卸載/覆蓋失敗,處理見后。
注意,運行庫雖然不算系統組件,不會導致系統故障,但可能被其他軟件依賴使用,卸載后應及時安裝,且一個一個卸載嘗試。
- 對SolidWorks子安裝包。
雖然可以從(如上)日志記錄里、任務管理器里找到參數配置,從命令行手動調用,但難以手動進行整個安裝流程,可能僅適合分離出來便於調試。
最終應使用setup.exe安裝。
異常故障處理:
- 硬盤檢查。
貌似不多余。若系統未正常關閉,可能安全描述符異常,文件、文件夾鏈接、權限異常。
運行 chkdsk /f /r ,下次開機后掃描,持續半小時左右。 - 策略組。
- 運行 gpedit。
- 檢查項:
[計算機配置|用戶配置]\管理模板\Windows 組件\Windows Installer)(Computer Configuration -> Administrative Templates -> Windows Components -> Windows Installer)下的配置狀態。
默認均為未配置即可。
- 批量檢查:
gpresult /h /f gpreport.html導出當前配置報告。查看是否有修改過。 - 重置:
- 方法1:運行 secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose。
- 方法2:刪除目錄 %WinDir%\System32\GroupPolicyUsers 、 %WinDir%\System32\GroupPolicy 。(可命令行 RD /S /Q <path> 執行)
更改后可 gpupdate /force 更新。
- 注冊表
- 運行 regedit 。
- 檢查項:
- HKEY_CURRENT_USER\SOFTWARE
- \eDrawings
- (官方建議)如果安裝了PDM,謹慎操作,僅可刪除IM & \SolidWorks SOLIDWORKS [版本]、. **
- \SOLIDWORKS 20XX
- \SolidWorks BackOffice
- \SRAC
- \Microsoft\VSTAHOST
- \Microsoft\VSTAHostConfig
- HKEY_LOCAL_MACHINE\SOFTWARE **Wow6432Node適用於64位環境**
- \eDrawings
- \SolidWorks the IM & SOLIDWORKS [version] subkeys. **
- \SolidWorks Corporation
- \SRAC
- (官方建議)如果安裝了PDM,謹慎操作,僅可刪除IM & \SolidWorks SOLIDWORKS [版本]、. **
- \Wow6432Node\SolidWorks Corporation
- \Wow6432Node\Microsoft\VSTAHOST
- \Wow6432Node\Microsoft\VSTAHostConfig
- HKEY_CURRENT_USER\SOFTWARE
以上為SolidWorks在注冊表中的位置。
建議先導出,后更改(刪除或者改名使失效)。
-
- 更改項的權限:
適用於(上述)報錯:安裝管理程序無法在此注冊表位置生成注冊表項: HKLM\Software\Wow6432Node\SolidWorks
在上一級路徑處右鍵菜單、任務欄菜單編輯中有權限。
當前用戶(用戶名)或其所在組有完全控制權限即可。 - 重置注冊表權限繼承:
下載SubInACL.exe,安裝。運行如下腳本(保存為.bat):
cd /d "%programfiles(x86)%\Windows Resource Kits\Tools" subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f
32位環境將第一行%programfiles(x86)%中的%86%去掉。
時間可能半小時左右,隨后建議手動重啟電腦,可能導致關聯軟件重置(如默認瀏覽器)。
- 更改項的權限:
- 用戶賬戶權限(UAC)
(Win10)開始菜單直接輸入(而非運行) UAC 。 - 用戶組
確保運行安裝有管理權限即可。
運行 netplwiz 可設置。 - Windows 安全中心
(Win10)開始菜單直接輸入(而非運行) Windows 安全中心 。
可能誤刪映像文件(.iso)。可以嘗試臨時關閉實時保護、篡改保護。
其他殺毒軟件建議都臨時關了。 - 開啟日志記錄
運行 Msiexec.exe /i 安裝包文件名.mis /log 記錄名.txt - 文件、文件夾權限
- 方式1:程序 takeown , icacls 。
如 "cmd.exe" /c takeown /f "C:\XXX" /r /d y && icacls "C:\XXX" /grant administrators:F /t 。 - 方式2:(上面提及的)程序 SubInACL 。運行如下腳本(保存為.bat):
cd /d "%programfiles(x86)%\Windows Resource Kits\Tools" subinacl /subdirectories "C:\Program Files"\*.* /grant=administrators=f /grant=system=f subinacl /subdirectories %programfiles(x86)%*.* /grant=administrators=f /grant=system=f
- 方式1:程序 takeown , icacls 。
其他工具軟件:
- Windows Installer CleanUp Utility(msicuu2.exe)
- Microsoft Program Install and Uninstall.diagcab(MPIU)MicrosoftProgram_Install_and_Uninstall.meta.diagcab
- Visual C++ Runtime Installer (All-In-One) v56(AIO)
- Msiexec.exe
- Process Monitor
要還不行建議分析日志記錄,以及監控整個安裝過程進行分析。
蘿卜L發於博客園
后續:
- 為什么沒人寫個自動清理注冊表、文件夾的腳本呢,相關條目數量不多樣;
- 分析日志,監控安裝過程還是有跡可循,費點時..
相關參考:(我的流水記錄,無序,不分重要程度...到文末)蘿卜L發於博客園
安裝軟件時無法將注冊值寫入注冊表怎么解決
無法創建值,寫入注冊表時出錯 - Microsoft Community
更改注冊表項所有者權限,獲取“完全控制”權限
如何修復Edge瀏覽器無法使用的錯誤:無法創建內容處理,錯誤代碼:0x8027025b。
錯誤5:WINDOWS 10中拒絕訪問軟件安裝錯誤[完整指南] - 固定 - 2021
安裝SOLIDWORKS 2017提示:前一個安裝中的windows重啟操作正在等待處理 ,怎么解_百度知道
如何恢復注冊表系統默認的權限,問題具體詳見
注冊表的權限弄亂了,如何恢復到默認值?
設置訪問權限的神器-------subinacl
SubInACL: A complete solution to configure security permission - TechNet Articles - United States (English) - TechNet Wiki
Microsoft Visual C++ 組件維護與卸載_0x80070005拒絕訪問 - 知乎
如何刪除並重新安裝 Microsoft Visual C++ 運行庫 | 搜索 | Autodesk Knowledge Network
Visual C++ Runtime Installer (All-In-One) v56
How to Fix Error Code 0x80070005 | expert-advice.org
C++ 2010 x86 系統策略禁止這個安裝。請與系統管理員聯系。 - Microsoft Community
How to troubleshoot Windows Installer errors
issue 32545: Unable to install Python 3.7.0a4 on Windows 10 - Error 0x80070643: Failed to install MSI package. - Python tracker
wix - Unable to Install : Error 0x80070643: Failed to install MSI package - Stack Overflow (replied)
MsiSystemRebootPending property - Win32 apps | Microsoft Docs
How to fix "Installation is forbidden by system policy" error - Microsoft Community
Enable MSI logging, and then read the .msi verbose log files
Elevated msiexec.exe uninstall from cmd failing
winapi - Windows 7 SDK installation failure - Stack Overflow
How to Turn off Windows Installer to Block MSI Package
注冊表項HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer, DisableBrowse
Getting Error: This installation is forbidden by system policy. Contact your system administrator. - Advanced Installer (replied)
Error: 'Installation failed - MainEngineThread is returning 1625' when installing antivirus
process monitor Failed to execute MSI package("process monitor" "Failed to execute MSI package" - Google 搜索,"process monitor" "0x80070659" - Google 搜索)
Horizon Client or Agent Installation rolls back on Windows 10 with MMR installed as an option. (58543)
Process Monitor - Windows Sysinternals | Microsoft Docs
Unable to Install SQL Server Management Studio 2017, Fatal Error (0x80070643)
installation - SQL 17.5 SSMS Install Fails - Server Fault
Microsoft ASP.NET and Web Tools 2015 - Visual Studio 2015 Installation problem
10:15:39Defrag Tools: #3 - Process Monitor | Defrag Tools | Channel 9
windows - Registry virtualization failing - Stack Overflow
Q227181: How to Manage Windows Installer Local Policies | KnowledgeBase ArchiveComplete SOLIDWORKS Clean Uninstall Guide | GoEngineer
注冊表HKEY_CLASSES_ROOT\Installer\Products
solidworks安裝問題:安裝管理程序無法在此注冊表位置生成注冊表項: HKLM\Software\Wow6432Node\SolidWorks_機械師卡爾的博客-CSDN博客
安裝管理程序在創建該注冊表項時遇到錯誤 - 百度文庫
SolidWorks常見安裝失敗及處理方法
注冊表項HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTAHost|VSTAHostConfig
SolidWorks安裝時出現各類錯誤的解決辦法匯總-SOLIDWORKS...
Windows之權限講解 - milantgh - 博客園
Win10安裝visual c++2015 報錯0x80070659 解決方法 -Win7系統之家
使用Windows命令行reg控制注冊表鍵值 - QingSword.COM
CMD下讀取/修改/刪除注冊表項的方法_DOS/BAT_腳本之家
[教學] 命令行下操作Windows註冊表(導入、導出)的技巧 @ 三文魚壽司電腦技術帖分享 :: 痞客邦 ::
solidworks安裝顯示可執行文件安裝失敗是怎么回事? - 知乎 (回復)
未合並的更新:
VBA 7.1,安裝提示A newer version。