0

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

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

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

我将变量用作:{%SomeKey|Fallback}

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

4

1 回答 1

2

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

您应该改用命令行参数或/loadinf-style 响应文件。

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

于 2013-11-12T07:47:48.083 回答