从命令行回滚暂停的.MSI安装


9

我们将Java安装程序部署到大量机器上,并冻结了其中一半。现在,由于以下消息,后续部署失败:

用户'SYSTEM'先前已启动产品'Java 7 Update 10'的安装。该用户将需要再次运行该安装程序,然后才能使用该产品。您当前的安装将继续。

其次是:

错误1704。Java 7 Update 10的安装当前已暂停。您必须撤消该安装所做的更改才能继续。您要撤消那些更改吗?

如果以交互方式运行安装,则可以。您只需单击“确定”,然后单击“是”,然后滚动。但是,如果您运行命令行安装,它将停止。我们如何从命令行取消挂起的安装?


因此,当您说“以交互方式运行”时,是指运行脚本还是仅运行普通的Java安装程序?
Tony Roth

好吧,我部署了一个在后台运行的脚本来安装Java。它锁定了许多计算机,并暂停了安装。现在,我运行的所有静默安装都将退出,并出现错误1704。如果以交互方式运行安装(意味着我登录,双击.MSI,然后在提示下运行),则可以取消暂停的安装。如何从命令行取消该暂停的安装?
Kasius

好的语句“我部署了一个在后台运行的脚本来安装Java。” 因此,当您执行此操作时,是否以与“ SYSTEM”用户相同的身份在后台运行它?
Tony Roth


SCCM将安装作为SYSTEM静默运行。如果我像其他人一样以交互方式运行安装,则可以取消已暂停的安装。
Kasius

Answers:


8

据我所知,不可能使用MSIEXEC从命令行取消挂起的MSI安装(它没有任何参数)。

无论如何,您可以尝试运行以下命令:

REG DELETE HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress

正在进行安装时将创建此密钥。删除它应该可以让您再次重新运行安装程序。


添加一个/ f来强制删除而没有问题(即:对于脚本)
higuita 2014年

3

如果Tomas回答不能解决问题,则可以尝试使用MsiZap.exe实用工具。

它基本上也删除了MSI安装留下的元数据,但是它不需要您找出所有存储信息的位置。

例如,删除正在进行的信息:

msizap.exe p

或删除回滚信息:

msizap.exe s

msizap.exe在Windows的更高版本中有问题。不应随意使用它。这是一个替代工具(未经我试用)。
SteinÅsmul2014年

0

我发现在Windows 10(x64)中,您可以尝试删除不在HKLM中但在当前用户注册表分支中的密钥HKEY_USERS \ SXX-XX -... \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ InProgress

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.