20

InnoSetupを使用してインストーラーを作成し、セクションにいくつかのカスタム ハンドラーを記述しています[Code]AppNameハンドラーの 1 つで、セクションで定義されている値 (または、場合によっては他のパラメーターの値)を取得できるようにしたいと考えています[Setup]。これを行う方法はありますか?ドキュメントを調べましたが、これを可能にするものは見つかりませんでした。私たちの InnoSetup ファイルは実際にはビルド プロセスによって生成されます。ビルド プロセスは、すべてのプログラムに共通でプログラム固有のフラグメントをつなぎ合わせます。そのため、各プログラムのコードで定数を定義する必要があるのは不便です。これを行う便利な方法はありますか?

私は次のようなものを探しています

MyString := ExpandConstant('{AppName}');

例外{AppName}は、定義された定数ではありません。セクションで定義されたパラメーターを照会する方法はあります[Setup]か?

4

2 に答える 2

24

Craigの答えに触発されて、私はInno Setupプリプロセッサのドキュメント(ISToolで、私が見つけた限りオンラインでは利用できません)を見てSetupSetting、プリプロセッサの関数に出くわしました。

それはそのように使用することができます:

MyString := '{#SetupSetting("AppName")}';

そして[Setup]、これが使用される場所の前にセクションが表示され(ISPPは1つのパスのみのようです)、の定義が含まれている限りAppName、必要な設定ごとに追加のマクロを定義しなくても、必要な結果が得られます。抽出します。

于 2009-12-18T06:40:41.777 に答える
16

これはビルド時の定数であり、インストール時の値ではありません。そのため、 Inno Setup Preprocessorアドオンを使用して、そのような定数を定義できます。( QuickStart パックを使用して簡単にインストールできます)。

定数を定義します。

#define AppName "Excellent Foo App"

で定数を使用し[Setup]ます。

AppName={#AppName}

Pascal コードでは、構文が完全にはわかりませんが、次のようなものです。

MyString := {#AppName}

更新:{#emit SetupSetting("AppId")}スクリプトの使用方法の 1つがより簡単であることに気付きました。ブライアンのソリューションもこの方法を発見し、より優れています。

于 2009-12-18T04:54:44.330 に答える