Seite 1 von 1

Registry Wert mit Inhalt einer Variablen setzen

Verfasst: 18 Mär 2016, 08:22
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?

Re: Registry Wert mit Inhalt einer Variablen setzen

Verfasst: 18 Mär 2016, 08:26
von dkoch

Re: Registry Wert mit Inhalt einer Variablen setzen

Verfasst: 18 Mär 2016, 09:08
von conquestador
Danke für die schnelle Antwort. Schau ich mir an...

Re: Registry Wert mit Inhalt einer Variablen setzen

Verfasst: 18 Mär 2016, 10:20
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"


Re: Registry Wert mit Inhalt einer Variablen setzen

Verfasst: 18 Mär 2016, 16:16
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$"