2

シナリオは、IP/ポート番号で指定されたサーバーからクライアントをダウンロードするInnoSetupを使用して、クライアントインストールがブートストラッパーであるクライアント/サーバーアプリがある場合です。UDPブロードキャストを介してローカルネットワーク上にサーバーがあるかどうかを検出できるようにしたいので、それを実行するコンソールアプリを作成できます。問題は、コンソールアプリからインストーラーに情報を渡す方法です。

リターンコードをキャプチャすることはできますが、それはintにすぎません。私の知る限り、Inno Setupでファイルを読み取る機能はプリプロセッサのみであるため、コンソールアプリによって実行時に作成されたファイルを読み取ることはできません。私が考えることができる唯一のことは、最初の4桁がポートの前の「。」と:の位置であるintを返し、値を解析することです。これは、特に考慮して、ハック、薄っぺら、エラーが発生しやすいようです。私は、文字列を作成するためのInnoSetup構文/関数に精通していません。

助言がありますか?

4

6 に答える 6

5

Inno Setupのコードからコマンドライン引数を解析する場合は、次のような方法を使用します。次のように、コマンドラインからインストーラーを呼び出すだけです。

c:\MyInstallDirectory>MyInnoSetup.exe -myParam parameterValue

次に、GetCommandLineParam必要な場所で次のように呼び出すことができます。

myVariable := GetCommandLineParam('-myParam');
{ ================================================================== }
{ Allows for standard command line parsing assuming a key/value organization }

function GetCommandlineParam (inParam: String):String; 
var 
  LoopVar : Integer; 
  BreakLoop : Boolean; 
begin 
  { Init the variable to known values } 
  LoopVar :=0; 
  Result := ''; 
  BreakLoop := False; 

  { Loop through the passed in array to find the parameter } 
  while ( (LoopVar < ParamCount) and 
      (not BreakLoop) ) do 
  begin 
    { Determine if the looked for parameter is the next value } 
    if ( (ParamStr(LoopVar) = inParam) and 
       ( (LoopVar+1) < ParamCount )) then 
    begin 
      { Set the return result equal to the next command line parameter } 
      Result := ParamStr(LoopVar+1); 

      { Break the loop } 
      BreakLoop := True; 
    end 

    { Increment the loop variable } 
    LoopVar := LoopVar + 1; 
  end; 
end; 

お役に立てれば...

于 2011-03-03T15:33:14.837 に答える
3

コマンドラインからパラメータをロードする方法はわかりませんがLoadStringFromFile、ファイルの内容をロードしたりGetIniString、ini ファイルからパラメータを読み取ったりするために使用できます。

より一般的には、Inno Setup ヘルプ ファイルで「Support Functions Reference」を探します。このページには、すべての Inno 関数 (プリプロセッサを除く) のリストが表示されます。このページが見つからない場合 (プリプロセッサに関する情報しか見つからない場合)、間違ったヘルプファイルを探している可能性があります。Inno Setup Help の目次はそれほど優れたものではありませんが、索引は非常に優れていることに注意してください。

コマンド ライン パラメータについては、「コマンド ライン パラメータの設定」ページに記載されています。既存のパラメーターの 1 つを使用して Inno をだますことができる可能性がありますが、ini ファイルを使用するのが最も簡単な方法のようです。

于 2009-03-04T23:12:52.277 に答える
2

http://news.jrsoftware.org/news/innosetup.code/msg06538.html

于 2009-10-09T07:03:45.097 に答える
1

InnoSetupには、インストーラーの実行時に多くのことに使用できる、解釈されたPascalのような拡張言語が含まれています。

たとえば、レジ​​ストリを読み取ることができることはわかっており、少なくとも一部のフォルダからファイルを読み取ることができると確信しています。コンソールモードアプリは、一時ファイルを書き込んだり、インストーラーの残りの部分で必要な情報を含む1つ以上のレジストリキーをドロップしたりできます。これは、スクリプト環境から適切なセットアップスクリプトに返すことができます。インストーラーは、後で一時ファイルやキーをクリーンアップすることもできます。

于 2009-03-05T22:59:40.117 に答える
1

上記の匿名の回答は賛成する必要があります。

スクリプトで名前でパラメーターを参照するだけで、インストーラーに引数を渡すことができました。

{param:filePath|abc}

次に、インストーラーを呼び出すときに、必要な形式を使用してパラメーター値を渡します。

MyInnoSetup.exe /filePath=../foo.exe
于 2014-06-12T05:07:27.070 に答える
0

Inno Setupマニュアルから:

{param:ParamName|DefaultValue}

Embeds a command line parameter value.
    * ParamName specifies the name of the command line parameter to read from.
    * DefaultValue determines the string to embed if the specified command 
      line parameter does not exist, or its value could not be determined.

例:

[セットアップ] AppId=... AppName={param:exe_name|xyz}.exe

詳細: www downloadatoz com/manual/in/inno-setup/topic_consts.htm

于 2009-05-20T17:25:23.390 に答える