Registry Wert mit Inhalt einer Variablen setzen

Antworten
conquestador
Beiträge: 35
Registriert: 12 Nov 2015, 12:42

Registry Wert mit Inhalt einer Variablen setzen

Beitrag von conquestador »

Hi Community!

Ich habe folgendes Problem:
In einer Installation muss ich an die Umhebungsvariable Path etwas anfügen.
Meine Idee war jetzt, das folgendermaßen umzusetzten:

Code: Alles auswählen

Set $PathValueOld$ = GetRegistryStringValue ("[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] Path")
set $PathValueNew$ = $PathValueOld$ + ";neuer Java Pfad"

Registry_Global

[Registry_Global]
OpenKey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Set "Path" = REG_EXPAND_SZ:$PathValueNew$
Funktioniert nur leider nicht, da die Variable $PathValueNew$ nicht aufgelöst wird. Es wird ein String in "" erwartet.
In den Handbüchern hab ich leider nichts hilfreiches gefunden oder ich hab es nicht verstanden, falls dort doch etwas stand.

Hat vielleicht jemand eine Idee, wie ich das umsetzten könnte?
conquestador
Beiträge: 35
Registriert: 12 Nov 2015, 12:42

Re: Registry Wert mit Inhalt einer Variablen setzen

Beitrag von conquestador »

Danke für die schnelle Antwort. Schau ich mir an...
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: Registry Wert mit Inhalt einer Variablen setzen

Beitrag von holgerv »

So habe ich das mal (für Python 2.7) gemacht:

Code: Alles auswählen

[Actions]
DefVar $InstallDir32$
DefVar $path_after$
DefVar $path_before$

set $InstallDir32$ = "%ProgramFiles32Dir%\Python27"

set $path_before$ = GetRegistryStringValue("[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] Path")
Registry_AddDirToPath_32
set $path_after$ = GetRegistryStringValue("[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] Path")

; only reboot if "Path" was changed
if not (lower($path_before$) = lower($path_after$))
   ExitWindows /Reboot
endif

[Registry_AddDirToPath_32]
OpenKey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
set "Path" = REG_EXPAND_SZ:"$path_before$"
supp "Path" ; "$InstallDir32$;$InstallDir32$\Scripts"

Benutzeravatar
SisterOfMercy
Beiträge: 1522
Registriert: 22 Jun 2012, 19:18

Re: Registry Wert mit Inhalt einer Variablen setzen

Beitrag von SisterOfMercy »

The problem with supp is that it changes all values with %-variables to their 'full' versions.

For instance: %sysroot% becomes c:\windows.. So I use this:

Code: Alles auswählen

	Set $Path$ = GetRegistryStringValueSysNative("[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] Path")
	set $Path$ = stringReplace($Path$, ";;", ";")
	set $Path$ = $Path$ + ";" + $InstallDir64$ + "\bin"
	Registry_install_64 /64Bit
	
[Registry_install_64]
; Set system variable 
openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
set "Path" = REG_EXPAND_SZ:"$Path$"
Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Antworten