If DoesRegKeyExist Win Xp und Win7

Antworten
Hartig_M
Beiträge: 21
Registriert: 23. Apr 2009, 08:24
Kontaktdaten:

If DoesRegKeyExist Win Xp und Win7

Beitrag von Hartig_M » 12. Aug 2010, 13:31

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?

kad
Beiträge: 357
Registriert: 10. Dez 2009, 10:42
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von kad » 12. Aug 2010, 14:24

Weil vermutlich das Programm unter Windows 7 64bit nicht in diesem Pfad abgelegt wird sondern:

C:\\Program Files (x86)

Gruss

Hartig_M
Beiträge: 21
Registriert: 23. Apr 2009, 08:24
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von Hartig_M » 12. Aug 2010, 14:53

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

kad
Beiträge: 357
Registriert: 10. Dez 2009, 10:42
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von kad » 12. Aug 2010, 15:57

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....

Hartig_M
Beiträge: 21
Registriert: 23. Apr 2009, 08:24
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von Hartig_M » 12. Aug 2010, 16:44

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!

kad
Beiträge: 357
Registriert: 10. Dez 2009, 10:42
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von kad » 12. Aug 2010, 16:49

Ja würde ich auch mal so probieren, kommt wahrscheinlich einfacher zustande!

Ja habe gerne geholfen, kein Problem!

Grüsse

Benutzeravatar
mniemann
Administrator
Administrator
Beiträge: 574
Registriert: 25. Nov 2005, 17:03
Wohnort: Mainz
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von mniemann » 12. Aug 2010, 17:02

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.

Hartig_M
Beiträge: 21
Registriert: 23. Apr 2009, 08:24
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von Hartig_M » 16. Aug 2010, 10:08

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

Benutzeravatar
FruF
Beiträge: 204
Registriert: 26. Jan 2009, 12:33
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von FruF » 02. Sep 2010, 15:28

christoph.mue hat geschrieben:Warum so umständlich, lass diese Arbeit doch Empirum machen! Unter [Product] kann man direkt hinter einem Eintrag die Windowsversion angeben, z.B.:

Code: Alles auswählen

#Set:Product_x86, WINDOWS32
#Set:Product_x64, WINDOWS64
Der jeweilige Teil wird nur unter der entsprechenden Version ausgeführt.

Benutzeravatar
slueben
Beiträge: 54
Registriert: 28. Aug 2009, 19:07
Wohnort: Köln
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von slueben » 05. Sep 2010, 20:06

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 :)
Mit freundlichen Grüßen

Stefan Lüben
______________________________________
Ev. Verwaltungsverband in Bonn
Leiter Informationstechnik

Hartig_M
Beiträge: 21
Registriert: 23. Apr 2009, 08:24
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von Hartig_M » 13. Okt 2010, 09:19

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

Hartig_M
Beiträge: 21
Registriert: 23. Apr 2009, 08:24
Kontaktdaten:

Re: If DoesRegKeyExist Win Xp und Win7

Beitrag von Hartig_M » 13. Okt 2010, 15:18

Hallo nochmal.
Zu früh gefreut...

Code: Alles auswählen

If DoesRegKeyExist (HKLM,"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5","Install") == "0" Then "NetFrameworkError35" EndIf
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

Antworten

Zurück zu „Paketierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste