2

同じシステムに同じアプリケーションを複数回インストールしたいと考えています。たとえば、2 つの異なる Web サービスを使用する 2 人のユーザー (それぞれに独自の Web サービスがあります) を使用する場合などです。

  1. AppIDセットアップ スクリプトで、ユーザーからの入力に基づいてandを変更したいAppName(たとえば、ユーザーが「One」と入力した場合、デフォルトAppName="Service App"を変更する必要があります)。AppName="Service App One"

  2. 上記の変更は、[スタート メニュー フォルダーの選択] ページに反映されます。

  3. [スタート メニュー フォルダの選択] および [インストール先の選択] ウィザード ページの [次へ] クリック イベントをキャッチするにはどうすればよいですか? これは、ユーザー入力を検証するために必要です。

4

3 に答える 3

3
  1. AppID定数を含めることができる{code...}ので(Inno Setupのドキュメントを参照)、カスタムウィザードページを自由に追加して、の一部である追加の文字列を入力できますAppIDAppNameドキュメントによると、ウィザードでの表示目的でのみ使用されているため、これを行うのは意味がないと思います。

  2. [宛先の場所の選択]ページの前にカスタム入力ページを挿入し、ユーザーが以前に入力した値を使用して、{code...}定数も使用するようにしてください。DefaultDirName

  3. CodeDlg.issウィザードページとNextButtonClickハンドラーを追加するためのサンプルスクリプトを参照してください。

于 2010-01-05T16:01:57.137 に答える
2

あなたの質問に対する完全な答えではありませんが、とにかくそれを示したいと思いました。スクリプトに興味がある場合は、それを出発点として使用できます。

私のスクリプトでは、著作権年 (AppCopyright) に現在の年 (スクリプトのビルド時) を反映させたいと考えています。

次のコードを使用します。

AppCopyright=2003-{code:TodayAsYYYY} © E.De.L.Com bvba

{code:FunctionName} に注意してください

スクリプトの最後の [code] セクションには、次のルーチンがあります。

function TodayAsYYYY(param:string) : string;
begin
    Result := GetDateTimeString('yyyy', #0, #0);
end;

function TodayAsYYYYMMDD(param:string) : string;
begin
   Result := GetDateTimeString('yyyymmdd', #0, #0);
end;

私が言ったように、それは完全な答えではありません。しかし、私は InnoSetup をおそらく年に 1、2 週間使用しているので、これ以上お手伝いすることはできません。とにかく、それが役立つことを願っています。

于 2010-01-05T15:58:38.883 に答える
0

こんにちは、私は自分の質問に対する答えを見つけた後、私が質問を正しくしていないことに気づきました。

必要な出力は、スタートメニューの下に独自のアンインストーラーを備えた2つの別々のインストール済みアプリケーションを持っていることであり、AppidとAppnameを変更するとうまくいくと考えました。

これが私がしたことです

#define MyAppName "My Application"

[Setup]
DefaultDirName={pf}\Application\MyApp
DefaultGroupName={#MyAppName}

上記の 2 つの必要な編集は、以下を使用してカスタム ページで可能でした。

WizardForm.DirEdit.Text := 'for DefaultDirName' (Select Destination Location")
WizardForm.GroupEdit.Text:= 'DefaultGroupName'

WizardGroupValue は、「スタート メニューの選択」の値を読み取るために使用されます。

ビルドされたウィザードで次のイベントにアクセスするために、次を使用しました

//Validate Select Start Menu and Destination values
function NextButtonClick(CurPageID: Integer): Boolean;
var
  ResultCode: Integer;

begin
  case CurPageID of
    wpSelectDir:
      begin
        //Do validation

      end;
    wpSelectProgramGroup:
      begin
        //Do validation

      end;
  end;

  Result := True;
end;
于 2010-01-06T15:38:26.453 に答える