为什么任何 MSI(Windows Installer)安装程序都不起作用?

为什么任何 MSI(Windows Installer)安装程序都不起作用?

很长一段时间以来,我一直无法安装任何以任何方式使用 Windows Installer(又名msiexec)的应用程序,而 Windows Installer 是大多数应用程序的代名词。我说的不是某个无法安装的随机特定程序,而是任何程序。

所有安装人员都这么说:

安装向导提前结束

我现在正在使用的是:http://download.microsoft.com/download/C/F/F/CFF3A0B8-99D4-41A2-AE1A-496C08BEB904/WebPlatformInstaller_amd64_en-US.msi

如您所见,它是 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

  1. 尝试使用 msicuu(Windows 安装程序清理实用程序)删除损坏的 MSI 安装尝试
  2. 进入 services.msc 并确保 Windows Installer 服务设置为“手动”运行。如果正在运行,请停止它。或者使用 sc.exe 命令停止它。
  3. 不要使用 /QN,而是尝试使用 /qb! 来查看进度,或者直接以交互方式运行 .msi 包。它可能会显示更多详细信息。尝试使用一些不太复杂的程序,例如 7-zip。
  4. 检查 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

错误 1402Could not open key: [2]. System error [3].

检查该密钥的权限。我的电脑上没有该密钥,但以下是该密钥的权限HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer(单击可显示全尺寸):

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer 的权限

还要检查该密钥中是否有任何回滚脚本,这可能是问题所在:安装 .NET Framework 的 Windows Installer 中出现奇怪的回滚行为

作为最后的手段,可以msiexec.exe监测进程监控,看看是否有任何不寻常的错误。

相关内容