很长一段时间以来,我一直无法安装任何以任何方式使用 Windows Installer(又名msiexec
)的应用程序,而 Windows Installer 是大多数应用程序的代名词。我说的不是某个无法安装的随机特定程序,而是任何程序。
所有安装人员都这么说:
如您所见,它是 Microsoft 官方下载,因此软件包不是问题。
另外,使用这篇超级用户帖子我运行msiexec.exe /I "WebPlatformInstaller_amd64_en-US.msi" /QN /L*V! "C:\msilog.log"
并得到了这个日志:
=== Verbose logging started: 3/28/2015 20:46:26 Build type: SHIP UNICODE 5.00.9600.00 Calling process: C:\WINDOWS\system32\msiexec.exe ===
MSI (c) (0C:C4) [20:46:26:944]: Resetting cached policy values
MSI (c) (0C:C4) [20:46:26:994]: Machine policy value 'Debug' is 7
MSI (c) (0C:C4) [20:46:27:034]: ******* RunEngine:
******* Product: WebPlatformInstaller_amd64_en-US.msi
******* Action:
******* CommandLine:
MSI (c) (0C:C4) [20:46:27:062]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (0C:C4) [20:46:27:086]: Grabbed execution mutex.
MSI (c) (0C:C4) [20:46:27:137]: Cloaking enabled.
MSI (c) (0C:C4) [20:46:27:166]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (0C:C4) [20:46:27:194]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (B8:30) [20:46:27:222]: Running installation inside multi-package transaction C:\Users\Maxwell\Downloads\WebPlatformInstaller_amd64_en-US.msi
MSI (s) (B8:30) [20:46:27:243]: Grabbed execution mutex.
MSI (s) (B8:7C) [20:46:27:270]: MainEngineThread is returning 1603
MSI (s) (B8:30) [20:46:27:295]: User policy value 'DisableRollback' is 0
MSI (s) (B8:30) [20:46:27:318]: Machine policy value 'DisableRollback' is 0
MSI (s) (B8:30) [20:46:27:345]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (B8:30) [20:46:27:369]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (B8:30) [20:46:27:395]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (B8:30) [20:46:27:419]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (c) (0C:C4) [20:46:27:446]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (c) (0C:C4) [20:46:27:470]: MainEngineThread is returning 1603
=== Verbose logging stopped: 3/28/2015 20:46:27 ===
有谁知道为什么会发生这种情况以及最重要的是如何解决它。
系统信息:
操作系统:Windows 8.1
架构:x64
我没有任何实际的防病毒软件。只有默认的 Windows Defender 或他们现在所称的任何东西。
编辑:当我使用 Process Explorer 分析 msiexec.exe 时,我发现它尝试访问不存在的注册表项:(点击放大)
答案1
- 尝试使用 msicuu(Windows 安装程序清理实用程序)删除损坏的 MSI 安装尝试
- 进入 services.msc 并确保 Windows Installer 服务设置为“手动”运行。如果正在运行,请停止它。或者使用 sc.exe 命令停止它。
- 不要使用 /QN,而是尝试使用 /qb! 来查看进度,或者直接以交互方式运行 .msi 包。它可能会显示更多详细信息。尝试使用一些不太复杂的程序,例如 7-zip。
- 检查 Windows 事件日志(应用程序和系统日志)并搜索故障日期/时间附近的事件。
我希望这有帮助。
答案2
msiexec.exe 每次只允许一个 MSI 修改系统。从您的日志文件来看,您的安装在获取 msiexec 互斥锁后不久就失败了:
MSI (s) (B8:30) [20:46:27:243]: Grabbed execution mutex.
MSI (s) (B8:7C) [20:46:27:270]: MainEngineThread is returning 1603
在运行安装程序之前,请检查 msiexec.exe 进程是否未在 TaskManager 中运行。
答案3
看起来安装程序无法访问注册表项:
MSI (s) (B8:30) [20:46:27:369]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (B8:30) [20:46:27:395]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
错误 1402:Could not open key: [2]. System error [3].
检查该密钥的权限。我的电脑上没有该密钥,但以下是该密钥的权限HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer
(单击可显示全尺寸):
还要检查该密钥中是否有任何回滚脚本,这可能是问题所在:安装 .NET Framework 的 Windows Installer 中出现奇怪的回滚行为。
作为最后的手段,可以msiexec.exe
监测进程监控,看看是否有任何不寻常的错误。