InnoSetup 通过写入注册表值实现安装程序设置系统全局环境变量
环境变量以字符串值存储在注册表中,因此可以使用 [Registry] 区段操作它们。系统范围的环境变量位于:
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
特定于用户的环境变量位于:
"HKEY_CURRENT_USER\Environment"
下面是一个使用 InnoSetup 设置全局环境变量的简单示例:
在 [Registry] 区段中添加以下代码:
[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "zcr"; ValueData: "zhangcirong"; Flags: uninsdeletevalue
该代码将在系统范围的环境变量中创建一个名为 "zcr" 的字符串值,并将其设置为 "zhangcirong"。"uninsdeletevalue" 标志指示在卸载应用程序时删除该键。
这种方式的好处是能实现安装时自动设置环境变量,卸载的时候自动删除环境变量。
还有一种方式更简单,也可以实现设置环境变量:
在 [Run] 区段中添加以下代码:
[Run]
Filename: "setx"; Parameters: "zcr %zcr% /M"; Flags: runhidden
上面这段代码使用 Windows 命令行工具 setx 创建一个名为 "zcr" 的全局环境变量,并将其设置为上述代码中创建的值。"/M" 标志指示将环境变量设置为全局。
这种方式的缺点是,卸载的时候无法自动删除设置的全局变量。