Inno设置 - 不拾取环境变量

时间:2013-11-11 14:43:08

标签: process environment-variables inno-setup

我正在尝试从另一个进程运行Inno设置,如下所示。

ProcessStartInfo pstart = new ProcessStartInfo(@"setup.exe");
pstart.UseShellExecute = false;
pstart.EnvironmentVariables.Add("SomeKey", "SomeValue");
Process.Start(pstart);

但是,[Process]环境变量(在进程上设置的环境变量)似乎没有被选中。它似乎只能获取[User / Machine]环境变量。

我使用变量:{%SomeKey | Fallback}

当尝试使用[Process]环境变量时,它总是使用回退。

1 个答案:

答案 0 :(得分:2)

Inno使用ShellExecute以使用提升的权限重新启动自身(当PrivilegesRequired=admin - 这是默认设置时 - 如果安装程序尚未以管理员权限运行)。因此,“真正的”安装程序的父进程是shell,而不是您的应用程序,因此它无法从中继承环境变量。

您应该使用命令行参数或/loadinf - 样式的响应文件。

如果您迫切希望环境变量能够继续运行,那么您可以尝试自己使用提升的权限启动它(可能通过帮助应用程序)。但请记住,这样做会禁用某些标准功能,例如runasoriginaluser(默认情况下会在postinstall [Run]条目中使用。)