Reverter a instalação .MSI suspensa na linha de comando

9

Implementamos um instalador Java em um grande número de máquinas e ele congelou em cerca de metade delas. Agora, as implantações subsequentes estão falhando devido à seguinte mensagem:

O usuário 'SYSTEM' iniciou anteriormente uma instalação do produto 'Java 7 Update 10'. Esse usuário precisará executar a instalação novamente antes de poder usar esse produto. Sua instalação atual agora continuará.

Seguido por:

Erro 1704. Uma instalação para o Java 7 Update 10 está atualmente suspensa. Você deve desfazer as alterações feitas por essa instalação para continuar. Deseja desfazer essas alterações?

Se você executar interativamente uma instalação, tudo bem. Você apenas clica em "OK" e depois em "Sim", e continua. Mas se você executar uma instalação por linha de comando, ela será interrompida. Como podemos cancelar a instalação suspensa na linha de comando?

Kasius
fonte
Então, quando você diz "executar interativamente", quer dizer executar o script ou apenas executar o instalador java normal?
Tony Roth
Bem, implantei um script que foi executado em segundo plano para instalar o Java. Ele trancou muitas máquinas e deixou uma instalação suspensa. Agora, todas as instalações silenciosas executadas saem com o Erro 1704. Se eu executar a instalação interativamente (o que significa que efetue login, clique duas vezes em .MSI e execute as instruções), isso permitirá que eu cancele a instalação suspensa. Como posso cancelar a instalação suspensa na linha de comando?
Kasius
ok esta declaração "Eu implantei um script que foi executado em segundo plano para instalar o Java." então, quando você está fazendo isso, está executando no back-ground como a mesma pessoa que no usuário "SYSTEM"?
Tony Roth
talvez tentar uma desinstalação silenciosa docs.oracle.com/javase/1.5.0/docs/guide/deployment/...
tony roth
O SCCM executa a instalação silenciosamente como SYSTEM. Se eu executar a instalação interativamente, como qualquer pessoa, isso permitirá que eu cancele a instalação suspensa.
Kasius

Respostas:

8

Até onde eu sei, não é possível cancelar uma instalação MSI suspensa na linha de comando usando o MSIEXEC (ele não possui parâmetro para isso).

De qualquer forma, você pode tentar executar o seguinte comando:

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

Essa chave é criada quando há uma instalação em andamento. A exclusão deve permitir que você execute novamente a instalação.

Tomas Dabasinskas
fonte
adicione a / f para forçar a exclusão, sem dúvida (ou seja: para scripts)
higuita
3

Se a resposta do Tomas não resolver o problema, você pode tentar o Utilitário MsiZap.exe .

Basicamente, também remove os metadados deixados pelas instalações da MSI, mas não exige que você descubra todos os locais onde as informações estão armazenadas.

Por exemplo, excluindo as informações do inProgress:

msizap.exe p

ou excluir informações de reversão:

msizap.exe s
weberik
fonte
O msizap.exe tem problemas com versões posteriores do Windows. Não deve ser usado indiscriminadamente. Aqui está uma ferramenta alternativa (não testada por mim).
Stein Åsmul
0

Descobri que no Windows 10 (x64) você pode tentar excluir a chave não no HKLM, mas no ramo de registro do usuário atual HKEY_USERS \ SXX-XX -... \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ InProgress

Pró
fonte