0

以下に示すように、別のプロセスから Inno セットアップを実行しようとしています。

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

ただし、[プロセス] 環境変数 (プロセスに設定された環境変数) は取得されていないようです。[User/Machine] 環境変数のみを取得しているようです。

変数を {%SomeKey|Fallback} として使用しています

[Process] 環境変数を使用しようとすると、常にフォールバックが使用されます。

4

1 に答える 1

2

Inno はShellExecute、昇格されたアクセス許可で自身を再起動するために使用します (PrivilegesRequired=adminこれがデフォルトであり、インストーラーがまだ管理者アクセス許可で実行されていない場合)。この結果、「実際の」インストーラーの親プロセスはアプリケーションではなくシェルであるため、そこから環境変数を継承することはできません。

代わりに、コマンド ライン パラメータまたは 形式の/loadinf応答ファイルを使用する必要があります。

環境変数を有効にしたい場合は、権限を昇格して (おそらくヘルパー アプリを介して) 自分で起動してみることができます。ただし、これを行うと、(エントリrunasoriginaluserでデフォルトで使用される) などの標準機能の一部が無効になることに注意してください。postinstall [Run]

于 2013-11-12T07:47:48.083 に答える