Registry Wert mit Inhalt einer Variablen setzen

conquestador
Beiträge: 4
Registriert: 12 Nov 2015, 12:42

Registry Wert mit Inhalt einer Variablen setzen

Beitragvon conquestador » 18 Mär 2016, 08:22

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: 4
Registriert: 12 Nov 2015, 12:42

Re: Registry Wert mit Inhalt einer Variablen setzen

Beitragvon conquestador » 18 Mär 2016, 09:08

Danke für die schnelle Antwort. Schau ich mir an...

holgerv
Beiträge: 278
Registriert: 20 Aug 2012, 09:35

Re: Registry Wert mit Inhalt einer Variablen setzen

Beitragvon holgerv » 18 Mär 2016, 10:20

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: 1018
Registriert: 22 Jun 2012, 19:18

Re: Registry Wert mit Inhalt einer Variablen setzen

Beitragvon SisterOfMercy » 18 Mär 2016, 16:16

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!