1

私は、InstallShieldインストーラのsetup.exeファイルを使用して、私のアプリケーションをサイレントインストールします。今私はいくつかのコマンドライン引数でsetup.exeを起動したいと思います。その引数は、私が成功して実行するために作成したEXEカスタムアクションで利用できるはずです。セットアップファイルを呼び出す際に、コマンドラインからデータを全部渡すことができ、それを私のexeの中で使うことができます。 exeはC#で書かれたコンソールアプリです。installshieldインストーラからカスタムアクションにコマンドライン引数を渡すexe

答えて

-1

私はこれがMSIベースのプロジェクトであることを理解していますが、.exeカスタムアクションは遅延実行とみなされます。

何をすべきことはこれです:あなたのインストーラで

  1. 、あなたは.exeファイル(例えばServerNameServerPort)のために必要ないくつかのカスタムMSIのプロパティを定義
  2. はタイプ「設定のカスタムアクションを作成します。プロパティ '。 プロパティ名は、exeファイル(たとえばRunMyExe)を実行するカスタムアクションの名前にする必要があります。 プロパティ値は、カスタムプロパティの連結リストにする必要があります。 [ServerName];[ServerPort]。 InstallInitializeの後にこのカスタムアクションを実行します。あなたの.exeのカスタムアクション(RunMyExe)で
  3. があなたのexeファイルのプログラムは、コマンドラインを取得する持っているあなたのexeファイルのプログラムにコマンドラインとして[CustomActionData]を渡し、それが
  4. 起動を必要とするデータを得るためにそれを分割ステップ1で定義したカスタムプロパティを設定しているときにsetup.exeを実行します。 setup.exe /v"ServerName=test-srv ServerPort=67000"

何が起こるかは、あなたが(そのようなコマンドラインから供給されたものなど)exernalプロパティを使用することはできません繰延カスタムアクションで、あなたがそのようなCustomActionDataなどの内部のものにのみアクセスできる、ということです。ここでのトリックは、アクションの名前を持つプロパティ(上記の例ではRunMyExe)が存在する場合、内部のCustomActionDataプロパティがその値を取得することです。

+0

遅延されたexeカスタムアクションでも、コマンドラインのどのプロパティも参照できることに注意してください。 –

+0

私が覚えている限り、パブリックプロパティのみがコマンドラインでMSIに渡すことができます。だから、あなたの提案はうまくいかないでしょう。 – Vadim

+0

"CustomActionData"は、コマンドラインで渡すことができるプロパティではありません。これは遅延カスタムアクションのコンテキスト内に存在し、カスタムアクション自体の名前にマップされます。 –

関連する問題