InnoSetup:[コード]セクションでAppNameを取得します
-
20-09-2019 - |
質問
私は使用してインストーラーを作成しています InnoSetup, 、およびいくつかのカスタムハンドラーを書きます [Code]
セクション。ハンドラーの1つで、私はの価値を取得できるようにしたいと思います AppName
(または、潜在的に、他のパラメーターの値)で定義されている [Setup]
セクション。私がこれをする方法はありますか?私はそれを見ました ドキュメンテーション, 、しかし、私はこれを行うことを可能にするものを見つけていません。 InnoSetupファイルは、実際にはビルドプロセスによって生成されます。これは、すべてのプログラム間で一般的でプログラム固有のフラグメントを縫い合わせているため、各プログラムのコード内の定数を定義する必要がある場合は不便です。これを行う便利な方法はありますか?
私はようなものを探しています
MyString := ExpandConstant('{AppName}');
を除外する {AppName}
定義された定数ではありません。で定義されているパラメーターをクエリする方法はありますか [Setup]
セクション?
解決
これは、インストール時間の値ではなく、ビルドタイム定数です。したがって、使用できます Innoセットアッププリプロセッサ このような定数を定義するアドオン。 (あなたはそれを介して簡単にインストールできます クイックスタートパック).
定数を定義します。
#define AppName "Excellent Foo App"
定数を使用します [Setup]
:
AppName={#AppName}
パスカルコードでは、構文については完全に確信していませんが、次のようなものです。
MyString := {#AppName}
アップデート: スクリプトが使用していることに気付きました {#emit SetupSetting("AppId")}
これは簡単です。 ブライアンの解決策 また、この方法を発見し、より良いです。
他のヒント
Craigの答えに触発されて、私はInnoのセットアッププレプロセッサのドキュメントを見ていました(Istoolでは、私が見つけた限りオンラインで利用できません)、 SetupSetting
プリプロセッサの関数。
そのように使用できます:
MyString := '{#SetupSetting("AppName")}';
そして、 [Setup]
セクションは、これが使用される場所の前に表示されます(ISPPは1つのパスのみであるように見えます)。 AppName
, 、これにより、抽出する各設定の追加のマクロを定義することなく、私が望む結果が得られます。