16

インストーラーにいくつかのカスタムページを追加しました。これらのページはユーザーとディスクからいくつかのデータを収集します。最終的なインストール手順を開始する前に、このデータをユーザーに表示したいと思います。Inno Setupには、まさにこの目的のための「インストールの準備ができました」ページがあります。

このページにテキストを追加するにはどうすればよいですか?デフォルトでは、次のように表示されます。

Destination location:
  C:\Program Files\MyProgram

ここにテキストを追加したいと思います。出来ますか?

4

5 に答える 5

23

見つかりました... https ://jrsoftware.org/ishelp/index.php?topic = scriptevents :

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

SetupがUpdateReadyMemoPascalスクリプトでイベント関数を検出した場合、ReadytoInstallウィザードページがアクティブページになると自動的に呼び出されます。[インストールの準備完了]ウィザードページの設定メモに表示されるテキストを、パラメータで区切られた行を含む単一の文字列として返す必要がありNewLineます。パラメータSpaceにスペースを含む文字列が含まれています。セットアップはこの文字列を使用して設定をインデントします。他のパラメーターには、セットアップが設定セクションとして使用する(空の可能性がある)文字列が含まれています。MemoDirInfoたとえば、パラメータには、[選択されたディレクトリ]セクションの文字列が含まれています

于 2009-08-02T09:01:09.177 に答える
13

次のコードを変更します。

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpReady then
  begin
    Wizardform.ReadyMemo.Lines.Add(''); { Empty string }
    Wizardform.ReadyMemo.Lines.Add('Setup HP-UX test created by Armand');
  end;
end;
于 2011-01-21T23:36:16.667 に答える
7

ReadyMemo WizardPageこの機能を使用して、セットアッププロセスにフックすることができます。

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

SetupがUpdateReadyMemoPascalスクリプトでイベント関数を検出した場合、ReadytoInstallウィザードページがアクティブページになると自動的に呼び出されます。[インストールの準備完了]ウィザードページの設定メモに表示されるテキストを、パラメータで区切られた行を含む単一の文字列として返す必要がありNewLineます。パラメータSpaceにスペースを含む文字列が含まれています。セットアップはこの文字列を使用して設定をインデントします。他のパラメーターには、セットアップが設定セクションとして使用する(空の可能性がある)文字列が含まれています。MemoDirInfoたとえば、パラメータには、[選択されたディレクトリ]セクションの文字列が含まれています

公式ドキュメント:http://www.innosetup.org/ishelp/topic_scriptevents.htm

ReadyMemoこれは、 :のデフォルトコンテンツに1行を追加する簡単な実装例です。

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
begin
    Result := ''

    if MemoUserInfoInfo <> '' then begin
        Result := MemoUserInfoInfo + Newline + NewLine;
    end;
    if MemoDirInfo <> '' then begin
        Result := Result + MemoDirInfo + Newline + NewLine;
    end;
    if MemoTypeInfo <> '' then begin
        Result := Result + MemoTypeInfo + Newline + NewLine;
    end;
    if MemoComponentsInfo <> '' then begin
        Result := Result + MemoComponentsInfo + Newline + NewLine;
    end;
    if MemoGroupInfo <> '' then begin
        Result := Result + MemoGroupInfo + Newline + NewLine;
    end;
    if MemoTasksInfo <> '' then begin
        Result := Result + MemoTasksInfo + Newline + NewLine;
    end;

    Result := Result + 'My custom string';
end;

参考までに:このコードを受け入れられた回答に追加しようとしましたが、拒否され、コメントまたは新しい回答を書くように言われました。

于 2018-10-11T18:21:26.097 に答える
5

また、既存のメッセージを一般的でないものに変更したい場合は、[メッセージ]セクションで変更できます。

すなわち

[Messages]
ReadyMemoDir=Server location:

デフォルトのメッセージは次のとおりです。

  • WizardReady
  • ReadyLabel1
  • ReadyLabel2a
  • ReadyLabel2b
  • ReadyMemoUserInfo
  • ReadyMemoDir
  • ReadyMemoType
  • ReadyMemoComponents
  • ReadyMemoGroup
  • ReadyMemoTasks
于 2013-06-26T17:05:16.493 に答える
0

既存の回答がすでに示しているように、UpdateReadyMemoイベント関数を実装します。

関数を実装するには、デフォルトのメモ内容のアセンブリを再実装する必要があります。以下は、それを実装するための繰り返しの少ない方法です。

procedure AddToReadyMemo(var Memo: string; Info, NewLine: string);
begin
  if Info <> '' then Memo := Memo + Info + Newline + NewLine;
end;

function UpdateReadyMemo(
  Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo,
  MemoGroupInfo, MemoTasksInfo: String): String;
begin
  AddToReadyMemo(Result, MemoUserInfoInfo, NewLine);
  AddToReadyMemo(Result, MemoDirInfo, NewLine);
  AddToReadyMemo(Result, MemoTypeInfo, NewLine);
  AddToReadyMemo(Result, MemoComponentsInfo, NewLine);
  AddToReadyMemo(Result, MemoGroupInfo, NewLine);
  AddToReadyMemo(Result, MemoTasksInfo, NewLine);

  Result := Result + 'Additional custom information';
end;

ここに画像の説明を入力してください

于 2020-07-22T13:02:24.127 に答える