2017-10-24 26 views
0

ISCmdBld.exeを使用してリモートマシンにインストーラをビルドするため、INSTALLDIRへの別のパスを指定する必要があります。私は次のようなことをする必要があります:-z INSTALLDIR = "[ProgramFiles64Folder] \ MyNewDir"と32ビット-z INSTALLDIR = "[ProgramFilesFolder] \ MyNewDir"現在、私はこれを試しても、リテラル文字列を渡して大括弧内のプロパティを解決しようとしないため、動かない。私は無駄に引用符をつけたまま/試してみました。プロパティをISCmdBld.exeに渡す

ディレクトリに組み込まれたインストールシールドを参照できますか?

答えて

1

この方法では解決できません。あなたが見てきたように、-z INSTALLDIR = "[ParentFolder] Subdir"をISCmdBldに渡すと、INSTALLDIRはそのリテラル値になります。なぜこれは機能しませんか?要するに、それはWindowsインストーラの仕組みではないからです。

達成する必要があることを理解するには、最初に32ビットの親フォルダでMSIを構築し、次に64ビットの親フォルダでMSIを構築し、diffツール(InstallShield MSI Diffなど)を使用して彼らは違います。 Directory tableでは、INSTALLDIRレコードのディレクトリの親構造が変更されていることがわかります。例えば参照。 Rob Mensching's Deciphering the Msi Directory Tableシリーズの違いを理解できない場合は、シリーズをご覧ください。

残念ながら、ビルド時にこの変更を行うための簡単なコマンドラインアプローチはありません。

  • は、実行時

    でINSTALLDIRを変更する
  • 使用設定ディレクトリのカスタムアクションプロジェクトをビルドする前に、ディレクトリ構造を変更するには、自動化のいくつかの並べ替え(おそらくISWiProject's INSTALLDIR property in the InstallShield automation interface)を使用しますので、次の2つの主要なオプションを持っています

    注:このようなカスタムアクションは、実行時に、別の場所で設定した条件(ISCmdBld経由のプロパティなど)を参照することで、2つの代替場所の中から選択できます。

+0

私にとっては、オートメーションインターフェイスが最も簡単だと思うので、私はそのオプションを使用しています。ありがとう@マイケル – user616

関連する問題