我正在尝试从另一个进程运行Inno设置,如下所示。
ProcessStartInfo pstart = new ProcessStartInfo(@"setup.exe");
pstart.UseShellExecute = false;
pstart.EnvironmentVariables.Add("SomeKey", "SomeValue");
Process.Start(pstart);
但是,[Process]环境变量(在进程上设置的环境变量)似乎没有被选中。它似乎只能获取[User / Machine]环境变量。
我使用变量:{%SomeKey | Fallback}
当尝试使用[Process]环境变量时,它总是使用回退。
答案 0 :(得分:2)
Inno使用ShellExecute
以使用提升的权限重新启动自身(当PrivilegesRequired=admin
- 这是默认设置时 - 如果安装程序尚未以管理员权限运行)。因此,“真正的”安装程序的父进程是shell,而不是您的应用程序,因此它无法从中继承环境变量。
您应该使用命令行参数或/loadinf
- 样式的响应文件。
如果您迫切希望环境变量能够继续运行,那么您可以尝试自己使用提升的权限启动它(可能通过帮助应用程序)。但请记住,这样做会禁用某些标准功能,例如runasoriginaluser
(默认情况下会在postinstall
[Run]
条目中使用。)