So beheben Sie "FEHLER: Die angegebene Umwandlung ist nicht gültig." Fehler bei der Installation?

1084
user598527

Ich erhalte diesen Fehler derzeit bei der Installation von Java SE Runtime Environment ( jre8), wobei die Aktualisierung ordnungsgemäß funktioniert:

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 (Ich kann wegen der Begrenzung der Länge von 30 000 Zeichen hier nicht einfügen, ich habe die Datumsangaben gelöscht.)

2

1 Antwort auf die Frage

2
root

Dieser Fehler scheint das Ergebnis eines Fehlers zu sein Get-ItemProperty. In Ihrem Protokoll ist der Teil des Skripts, das fehlschlägt, hier:

 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 

Dieser Fehler tritt auf, wenn Get-ItemPropertyerwartet wird, einen Registrierungsschlüssel des Typs X zu lesen und einen Schlüssel zu lesen, dessen Daten nicht den Einschränkungen des Schlüsseltyps entsprechen. Forschung1 Forschung2 Forschung3

Die Lösung in diesem Fall bestand darin, den ungültigen Schlüssel in der Registrierung (die Registrierungspfade, die in $checkreg64und abgefragt werden $checkreg32) zu finden und ihn manuell als DWORD mit dem Wert 1 neu zu erstellen.

Aktualisieren:

Aus den Kommentaren erhalten Sie beim Abfragen "Angegebene Umwandlung ist ungültig" Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*. Es ist möglich, dass sich an diesem Speicherort ein nicht zusammenhängender Schlüssel befindet, der einen ungültigen Unterschlüssel enthält, wodurch die Abfrage für diesen Speicherort fehlschlägt. Wir sollten in der Lage sein, jeden Schlüssel einzeln vom Ort der Deinstallation aus zu analysieren, um festzustellen, welcher Schlüssel bei der Abfrage Probleme hat.

Führen Sie das unten aus:

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

Dies sollte einige Ergebnisse zurückgeben, dann wird der Specified castFehler zurückgegeben. Der Fehler tritt bei dem Schlüssel auf, der den ungültigen Unterschlüssel enthält.

Wenn zum Beispiel die Ergebnisse der obigen Angaben folgendermaßen aussehen:

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. 

Der letzte Schlüssel, den Sie erfolgreich abfragen konnten, war dann fake_key_name_3. Der Schlüssel, den wir nicht abfragen konnten, war der nächste Schlüssel in der Liste. Öffnen Sie regedit und navigieren Sie zum nächsten Schlüsselnamen (vermutlich fake_key_name_4). Hier liegt der Fehler. Hier sollte ein ungültiger Unterschlüssel sein. Beheben Sie das Problem und führen Sie den Befehl erneut aus. Wenn Sie keine Fehler erhalten, sind Sie fertig. Wenn Sie weitere Schlüssel mit Fehlern erhalten, suchen Sie ihre ungültigen Unterschlüssel und beheben Sie sie.

Bei einem der verknüpften Beispiele, die ich ursprünglich zur Verfügung gestellt hatte, würde der Benutzer erwarten, einen REG_DWORD-Schlüssel mit data = "(ungültiger DWORD (32-Bit) -Wert)" zu finden. Dies ist der Schlüssel zur Behebung.

Können Sie die Antwort mit vollständigen Pfaden aktualisieren? Ich habe im Registry-Editor nach `Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall` navigiert, weiß jedoch nicht, wie ich fortfahren soll. user598527 vor 6 Jahren 0
Für das x64-Beispiel: Führen Sie Get-ItemProperty HKLM aus: \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ * | Where-Object {$ _. DisplayName -wie '* Java 8 *'} | Wählen Sie -expandproperty PSChildName` aus. Wenn das Ergebnis ist, suchen Sie nach dem Schlüssel `HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ \ NoModify`. root vor 6 Jahren 0
Ich erhalte diesen Fehler für den Befehl: `Get-ItemProperty: Die angegebene Umwandlung ist nicht gültig. An Zeile: 1 Zeichen: 1 + Get-ItemProperty HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Unin ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kategorie-Info: Nicht spezifiziert : (:) [Get-ItemProperty], InvalidCastException + FullyQualifiedErrorId: System.InvalidCastException, Microsoft.PowerShell.Commands.GetItemPropertyCommand` user598527 vor 6 Jahren 0
Toll, wir haben versehentlich (zumindest einen der) Orte des Problems bestätigt. Navigieren Sie über Regedit manuell zu HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \. Durchsuchen Sie jeden Unterschlüssel nach dem Schlüssel, der den Anzeigenamen enthält, wie "Java 8". Dort wird NoModify sein. Lassen Sie mich wissen, ob Sie diese Diskussion zu [Chat] verschieben möchten (https://chat.stackexchange.com/rooms/118/root-access). root vor 6 Jahren 0
Das Problem ist, dass ich keine Suchregistrierung durchführen kann - aber das ist eine andere Frage. Ich habe in Regedit nach "Java" gesucht, aber es werden nur Einträge im Notepad ++ - Ordner gefunden. user598527 vor 6 Jahren 0
Die Chocolatey-Paket-Github-Seite des Betreuers: https://github.com/proudcanadianeh/ChocoPackages/issues/18 user598527 vor 6 Jahren 0
Ich habe meine Antwort mit weiteren Schritten zur Fehlerbehebung aktualisiert. root vor 6 Jahren 0
Bist du damit irgendwo gekommen? root vor 6 Jahren 0
Es tut mir leid, ich habe das Thema für eine Weile auf Eis gelegt, da der Prozess für meine Fähigkeiten anspruchsvoll wird - ich werde versuchen, nächste Woche zu Ende zu kommen. Danke für das Anliegen. user598527 vor 6 Jahren 0