2017-03-10 25 views
1

すべてのインストールが完了したら、レジストリを変更する必要がありますか?ありがとうございます。Inno Setupでインストール後にレジストリのアクセス権を変更するには

[Registry]セッションが最初に発生します。[Run]。すべての実行が終了した後、レジストリを変更する必要があります。私はsetACL.exeの最後の[Run]でこれをやっていますが、私はよりエレガントな(スクリプティング)ものを探しています。

+0

:あなたがインストールされているいくつかのプログラムを実行している場合

たとえば、あなたがAfterInstall parameterを使用してそれらを実行することができますか?私はあなたが '[実行]'セクションで何かを実行した後にそれを推測するでしょうが、私たちに教えてください!または '[Registry]'セクションの使用に何が問題になっていますか? –

+0

最後のRUNの後、最初のRUNで[レジストリ]セッションが発生します。私はすべての実行が完了した後にレジストリを変更する必要があります。私は最後に実行でsetACL.exeでこれをやっていますが、私はよりエレガントな(スクリプティング)を探しています。 –

+0

これはおそらく最も洗練されたソリューションです。 –

答えて

0

インストールの最後にCurStepChanged(ssPostInstall) stepを使用してアクションを実装することはできますが、あまり役に立ちません。 Inno Setup Pascal Scriptには、レジストリの権限を設定する機能はありません。とにかく外部ユーティリティを実行する必要があります。


サードパーティのユーティリティ(SetACL)を使用する必要はありませんが、あなたは明らかにWindows reginiコマンドを使うことができます。

Change registry permissions via command line (batch file)を参照してください。


もう1つの方法は、[Registry]セクションの前にアプリケーションを実行することです。 「何を」、特に後

[Files] 
Source: "MyProg.exe"; DestDir: "{app}"; AfterInstall: ExecMyProg 

[Code] 

procedure ExecMyProg; 
begin 
    if Exec(ExpandConstant('{app}\notepad.exe'), '', '', 
      SW_SHOW, ewWaitUntilTerminated, ResultCode) then 
    begin 
    Log('Executed'); 
    end 
    else 
    begin 
    Log('Failed to execute'); 
    end; 
end; 
関連する問題