Como resolver o erro “ERROR: Specified cast is not valid.” durante a instalação?

2

No momento, estou recebendo este erro ao instalar o Java SE Runtime Environment ( jre8 ). A atualização costumava funcionar bem:

Searching if new version exists...
ERROR: Specified cast is not valid.
The install of jre8 was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\jre8\tools\chocolateyInstall.ps1'.
 See log for details.

Chocolatey installed 0/1 packages. 1 packages failed.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Failures
 - jre8 (exited -1) - Error while running 'C:\ProgramData\chocolatey\lib\jre8\tools\chocolateyInstall.ps1'.
 See log for details.

chocolatey.log (não posso colar aqui por causa do limite de 30 000 caracteres, excluí as datas )

    
por user598527 25.08.2018 / 08:30

1 resposta

2

Este erro parece ser o resultado de Get-ItemProperty falhar. Do seu log, a parte do script que está falhando está aqui:

  Write-Output "Searching if new version exists..."
  $checkreg64 = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like '*Java 8*' -and ([Version]$_.DisplayVersion) -eq $version} -ErrorAction SilentlyContinue
  $checkreg32 = Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like '*Java 8*' -and ([Version]$_.DisplayVersion) -eq $version} -ErrorAction SilentlyContinue

Essa falha ocorre quando Get-ItemProperty espera ler uma chave de registro do tipo X e lê uma chave cujos dados não correspondem às restrições do tipo de chave. research1 research2 research3

A solução neste caso foi encontrar a chave inválida no registro (o registro caminhos que são consultados em $checkreg64 e $checkreg32 ) e recriá-lo manualmente como um DWORD com valor 1.

Atualização:

Nos comentários, você recebe "Invocação especificada não é válida" ao consultar Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* . É possível que exista uma chave não relacionada nesse local que contenha uma subchave inválida, fazendo com que a consulta nesse local falhe. Devemos ser capazes de analisar cada chave individualmente a partir do local de desinstalação para determinar qual chave estamos tendo problemas para consultar.

Execute o abaixo:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | % { write-host "Key Name:" $_.PSChildName }

Isso deve retornar alguns resultados e, em seguida, retornará o erro Specified cast . O erro ocorrerá na chave que contém a subchave inválida.

Por exemplo, se os resultados acima forem assim:

Key Name: fake_key_name_1
Key Name: fake_key_name_2
Key Name: fake_key_name_3
Get-ItemProperty : Specified cast is not valid.

A última chave que você conseguiu consultar com sucesso foi fake_key_name_3 . A chave que não pudemos consultar foi a próxima chave da lista. Abra regedit e navegue até o próximo nome da chave (presumivelmente, fake_key_name_4 ). Este é o lugar onde a falha é. Deve haver uma subchave inválida aqui. Corrija isso e execute o comando novamente. Se você não receber nenhum erro, está tudo pronto. Se você obtiver mais chaves com erros, localize e corrija as subchaves inválidas.

No caso de um dos exemplos vinculados fornecidos originalmente, o usuário esperaria encontrar uma chave REG_DWORD com data="(valor DWORD (32-bit) inválido)". Essa é a chave para corrigir.

    
por 25.08.2018 / 15:19