mirror of
https://github.com/warpdotdev/warp.git
synced 2026-05-11 10:46:36 +08:00
74 lines
2.2 KiB
Plaintext
74 lines
2.2 KiB
Plaintext
[Code]
|
|
{ Adapted from https://stackoverflow.com/a/46609047 }
|
|
|
|
const
|
|
SystemEnvironmentKey = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment';
|
|
UserEnvironmentKey = 'Environment';
|
|
|
|
{ Get the appropriate registry key and root based on install mode. }
|
|
procedure GetEnvironmentKeyInfo(var RootKey: Integer; var SubKey: string);
|
|
begin
|
|
if IsAdminInstallMode then begin
|
|
RootKey := HKEY_LOCAL_MACHINE;
|
|
SubKey := SystemEnvironmentKey;
|
|
end else begin
|
|
RootKey := HKEY_CURRENT_USER;
|
|
SubKey := UserEnvironmentKey;
|
|
end;
|
|
end;
|
|
|
|
{ Add path to environment PATH variable. }
|
|
procedure EnvAddPath(Path: string);
|
|
var
|
|
Paths: string;
|
|
RootKey: Integer;
|
|
SubKey: string;
|
|
begin
|
|
{ Get the appropriate registry location }
|
|
GetEnvironmentKeyInfo(RootKey, SubKey);
|
|
|
|
{ Retrieve current path (use empty string if entry not exists) }
|
|
if not RegQueryStringValue(RootKey, SubKey, 'Path', Paths)
|
|
then Paths := '';
|
|
|
|
{ Skip if string already found in path }
|
|
if Pos(';' + Uppercase(Path) + ';', ';' + Uppercase(Paths) + ';') > 0 then exit;
|
|
|
|
{ Append string to the end of the path variable }
|
|
Paths := Paths + ';'+ Path +';'
|
|
|
|
{ Overwrite (or create if missing) path environment variable }
|
|
if RegWriteStringValue(RootKey, SubKey, 'Path', Paths)
|
|
then Log(Format('Added [%s] to PATH: [%s]', [Path, Paths]))
|
|
else Log(Format('Error adding [%s] to PATH: [%s]', [Path, Paths]));
|
|
end;
|
|
|
|
{ Remove path from environment PATH variable. }
|
|
procedure EnvRemovePath(Path: string);
|
|
var
|
|
Paths: string;
|
|
P: Integer;
|
|
RootKey: Integer;
|
|
SubKey: string;
|
|
begin
|
|
{ Get the appropriate registry location }
|
|
GetEnvironmentKeyInfo(RootKey, SubKey);
|
|
|
|
{ Skip if registry entry not exists }
|
|
if not RegQueryStringValue(RootKey, SubKey, 'Path', Paths) then
|
|
exit;
|
|
|
|
{ Skip if string not found in path }
|
|
P := Pos(';' + Uppercase(Path) + ';', ';' + Uppercase(Paths) + ';');
|
|
if P = 0 then exit;
|
|
|
|
{ Update path variable }
|
|
Delete(Paths, P - 1, Length(Path) + 1);
|
|
|
|
{ Overwrite path environment variable }
|
|
if RegWriteStringValue(RootKey, SubKey, 'Path', Paths)
|
|
then Log(Format('Removed [%s] from PATH: [%s]', [Path, Paths]))
|
|
else Log(Format('Error removing [%s] from PATH: [%s]', [Path, Paths]));
|
|
end;
|
|
|