If DoesRegKeyExist Win Xp und Win7
If DoesRegKeyExist Win Xp und Win7
Guten Tag.
In einem Installationsscript (setup.inf) führe ich eine simple Prüfung hinsichtlich eines Registrierungswertes durch:
IF DoesRegKeyExist ("HKLM,SOFTWARE\7-Zip,Path") == "0" Then "NoSevenZip" EndIf
Unter Windows XP 32Bit funktioniert die Prüfung ordnungsgemäß. Unter Windows 7 64Bit allerdings nicht mehr. Nachfolgend habe ich die Registrypfade beider Systeme aufgeführt.
(Windows XP)
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Programme\\7-Zip\\"
(Windows 7)
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
Warum behauptet die Setup.inf, dass unter Windows 7 der Pfad nicht existiert?
In einem Installationsscript (setup.inf) führe ich eine simple Prüfung hinsichtlich eines Registrierungswertes durch:
IF DoesRegKeyExist ("HKLM,SOFTWARE\7-Zip,Path") == "0" Then "NoSevenZip" EndIf
Unter Windows XP 32Bit funktioniert die Prüfung ordnungsgemäß. Unter Windows 7 64Bit allerdings nicht mehr. Nachfolgend habe ich die Registrypfade beider Systeme aufgeführt.
(Windows XP)
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Programme\\7-Zip\\"
(Windows 7)
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
Warum behauptet die Setup.inf, dass unter Windows 7 der Pfad nicht existiert?
Re: If DoesRegKeyExist Win Xp und Win7
Weil vermutlich das Programm unter Windows 7 64bit nicht in diesem Pfad abgelegt wird sondern:
C:\\Program Files (x86)
Gruss
C:\\Program Files (x86)
Gruss
Re: If DoesRegKeyExist Win Xp und Win7
Vielen Dank für die schnelle Antwort!
Ich prüfe allerdings nicht auf die Existenz des Pfades, sondern auf die des Registrierungseintrages. Dieser Eintrag ist auch definitiv vorhanden.
Gruß, martin
Ich prüfe allerdings nicht auf die Existenz des Pfades, sondern auf die des Registrierungseintrages. Dieser Eintrag ist auch definitiv vorhanden.
Gruß, martin
Re: If DoesRegKeyExist Win Xp und Win7
Achso hmmm da musst du aber vielleicht bedenken, dass unter Windows 7 64 bit
zwei Versionen von Regedit32 gibt, eines befindet sich unter system32, das andere unter sysWOW64
Wir hatten ein Problem wo wir versucht hatten einen registry key für unsere VPN verbindung einzuspielen, er hat sich dann in jenes unter system 32 eingetragen was dazu geführt hat dass win 7 meinte der Regkey sei nicht vorhanden, erst als wir regedit 32 aus dem Pfad sysWow64 gestartet haben und dort eingebunden, hat es funktioniert.
Vielleicht hilft dir das um weiter zu kommen bei deinem Problem....
zwei Versionen von Regedit32 gibt, eines befindet sich unter system32, das andere unter sysWOW64
Wir hatten ein Problem wo wir versucht hatten einen registry key für unsere VPN verbindung einzuspielen, er hat sich dann in jenes unter system 32 eingetragen was dazu geführt hat dass win 7 meinte der Regkey sei nicht vorhanden, erst als wir regedit 32 aus dem Pfad sysWow64 gestartet haben und dort eingebunden, hat es funktioniert.
Vielleicht hilft dir das um weiter zu kommen bei deinem Problem....
Re: If DoesRegKeyExist Win Xp und Win7
Ich bin inzwischen zu einer Prüfung auf Bestehen eines Ordners übergegangen.
Die von Dir vorgeschlagene Lösung klingt plausibel, allerdings habe ich während der unbeaufsichtigten Installation von 7-Zip keine Eingriffsmöglichkeiten in Bezug auf den Eintrag in die Registrierung, das macht 7-Zip alleine.
Nochmal vielen Dank für Deine Mühe!
Die von Dir vorgeschlagene Lösung klingt plausibel, allerdings habe ich während der unbeaufsichtigten Installation von 7-Zip keine Eingriffsmöglichkeiten in Bezug auf den Eintrag in die Registrierung, das macht 7-Zip alleine.
Nochmal vielen Dank für Deine Mühe!
Re: If DoesRegKeyExist Win Xp und Win7
Ja würde ich auch mal so probieren, kommt wahrscheinlich einfacher zustande!
Ja habe gerne geholfen, kein Problem!
Grüsse
Ja habe gerne geholfen, kein Problem!
Grüsse
Re: If DoesRegKeyExist Win Xp und Win7
wenn man in der Paketeigenschaft und in der Setup.inf angibt, dass es ausschließlich ein 32bit Paket ist, sollte die Abfrage funktionieren. Dein Paket wird auf den 64bit Computern anscheinend nicht im 32bit Modus ausgeführt, obwohl 7-Zip eindeutig ein 32bit Programm ist.
Visit my Blog: "DiEW - Das inoffizielle Empirum Weblog" (http://www.diew.eu)
Martin Niemann
Manager Support (Service Management)
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of matrix42 AG or of the support team.
Martin Niemann
Manager Support (Service Management)
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of matrix42 AG or of the support team.
Re: If DoesRegKeyExist Win Xp und Win7
Auch Dir vielen Dank für die Antwort. In diesem speziellen Fall nutzen wir jedoch die 64Bit Version von 7-Zip. Ich habe es über die oben genannte Variante (DoesFileExist) gelöst.
Gruß, Martin
Gruß, Martin
Re: If DoesRegKeyExist Win Xp und Win7
christoph.mue wrote:Warum so umständlich, lass diese Arbeit doch Empirum machen! Unter [Product] kann man direkt hinter einem Eintrag die Windowsversion angeben, z.B.:
Der jeweilige Teil wird nur unter der entsprechenden Version ausgeführt.Code: Select all
#Set:Product_x86, WINDOWS32 #Set:Product_x64, WINDOWS64
Re: If DoesRegKeyExist Win Xp und Win7
Moin,
zwei Hinweise:
bei Platform=x86 läuft die setup.exe im 32bit-Emulationsmodus - habe ich dieser Tage gelernt, da kann das mit den Registierungspfaden schon mal knifflich werden, mein 7zip-Paket läuft mit Platform=*.
bei Win7 ist mir aufgefallen, dass man mit den Anführungszeichen sehr vorsichtig sein muss, versuch mal statt
IF DoesRegKeyExist ("HKLM,SOFTWARE\7-Zip,Path") == "0" Then "NoSevenZip" EndIf
IF DoesRegKeyExist (HKLM,"SOFTWARE\7-Zip","Path") == "0" Then "NoSevenZip" EndIf
Das ist zwar furchtbar verzwickt, sollte aber gehen
zwei Hinweise:
bei Platform=x86 läuft die setup.exe im 32bit-Emulationsmodus - habe ich dieser Tage gelernt, da kann das mit den Registierungspfaden schon mal knifflich werden, mein 7zip-Paket läuft mit Platform=*.
bei Win7 ist mir aufgefallen, dass man mit den Anführungszeichen sehr vorsichtig sein muss, versuch mal statt
IF DoesRegKeyExist ("HKLM,SOFTWARE\7-Zip,Path") == "0" Then "NoSevenZip" EndIf
IF DoesRegKeyExist (HKLM,"SOFTWARE\7-Zip","Path") == "0" Then "NoSevenZip" EndIf
Das ist zwar furchtbar verzwickt, sollte aber gehen
Mit freundlichen Grüßen
Stefan Lüben
______________________________________
Ev. Verwaltungsverband in Bonn
Leiter Informationstechnik
Stefan Lüben
______________________________________
Ev. Verwaltungsverband in Bonn
Leiter Informationstechnik
Re: If DoesRegKeyExist Win Xp und Win7
Guten Morgen.
Ich habe erst heute wieder hier rein geschaut, sorry.
@ Fruf: Vielen Dank für den Hinweis - das ist deutlich eleganter!
@slueben: Genau so funktioniert es. Danke schön!
Gruß, Martin
Ich habe erst heute wieder hier rein geschaut, sorry.
@ Fruf: Vielen Dank für den Hinweis - das ist deutlich eleganter!
@slueben: Genau so funktioniert es. Danke schön!
Gruß, Martin
Re: If DoesRegKeyExist Win Xp und Win7
Hallo nochmal.
Zu früh gefreut...
Bei dem verwendeten Code will mir Empirum weiß machen, dass der Eintrag in der Registry vorhanden ist, selbst wenn er es nicht ist. Ich bin am verzweifeln. Hat noch jemand eine Idee?
Hier handelt es sich um einen Codeausschnitt aus einem anderen Programm - also nicht 7Zip, was jedoch an der Tatsache grundsätzlich nichts ändert.
Gruß, Martin Hartig
Zu früh gefreut...
Code: Select all
If DoesRegKeyExist (HKLM,"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5","Install") == "0" Then "NetFrameworkError35" EndIf
Hier handelt es sich um einen Codeausschnitt aus einem anderen Programm - also nicht 7Zip, was jedoch an der Tatsache grundsätzlich nichts ändert.
Gruß, Martin Hartig
Who is online
Users browsing this forum: Google [Bot] and 4 guests