如何使用 Inno Setup [代码] 部分的值设置注册表项(环境变量)?
How to set registry key (environment variable) with value from [Code] section of Inno Setup?
我正在使用 Inno Setup 创建安装程序,如果用户尚未设置,我需要为他们设置环境变量。
我真正想要实现的是:
检测系统是否有名为"JAVA_HOME"的环境变量
如果已经有,则跳过剩下的步骤。如果没有,那么我会显示一个页面,提示用户输入他们安装的路径JDK,并设置为环境变量的值。
我的问题是:如何根据用户输入的值设置环境变量?我搜索了一些文章,我发现设置环境变量的唯一方法是这样
[Registry]
; set PATH
Root: HKLM; Subkey: "Environment"; ValueType:string; ValueName:"VARIABLE_NAME"; \
ValueData:"new_value" ; Flags: preservestringtype ;
但很明显,这无法实现我想要做的事情,因为必须写入 "Before" 安装程序已构建的值。那么任何人都可以拥有任何设备吗?谢谢!
您不需要代码来设置注册表项(= 环境变量)。您只需要从代码中获取注册表项值(=环境变量值)。
您正在寻找a scripted constant:
[Registry]
Root: HKLM; Subkey: "Environment"; ValueType: string; ValueName: "VARIABLE_NAME"; \
ValueData: "{code:GetJDKPath}"; Flags: preservestringtype;
[Code]
var
{ A global variable that contains the path provided by the user in step 2 }
JDKPath: string;
function GetJDKPath(Param: string): string;
begin
Result := JDKPath;
end;
我正在使用 Inno Setup 创建安装程序,如果用户尚未设置,我需要为他们设置环境变量。
我真正想要实现的是:
检测系统是否有名为"JAVA_HOME"的环境变量
如果已经有,则跳过剩下的步骤。如果没有,那么我会显示一个页面,提示用户输入他们安装的路径JDK,并设置为环境变量的值。
我的问题是:如何根据用户输入的值设置环境变量?我搜索了一些文章,我发现设置环境变量的唯一方法是这样
[Registry]
; set PATH
Root: HKLM; Subkey: "Environment"; ValueType:string; ValueName:"VARIABLE_NAME"; \
ValueData:"new_value" ; Flags: preservestringtype ;
但很明显,这无法实现我想要做的事情,因为必须写入 "Before" 安装程序已构建的值。那么任何人都可以拥有任何设备吗?谢谢!
您不需要代码来设置注册表项(= 环境变量)。您只需要从代码中获取注册表项值(=环境变量值)。
您正在寻找a scripted constant:
[Registry]
Root: HKLM; Subkey: "Environment"; ValueType: string; ValueName: "VARIABLE_NAME"; \
ValueData: "{code:GetJDKPath}"; Flags: preservestringtype;
[Code]
var
{ A global variable that contains the path provided by the user in step 2 }
JDKPath: string;
function GetJDKPath(Param: string): string;
begin
Result := JDKPath;
end;