21

従来のVisualStudioDeployment Projectインストーラーでは、の値を指定したコマンドラインパラメーターを渡すとTARGETDIR、デフォルトのインストール場所を上書きできました(ほとんどのインストールはユーザーの操作なしで行われるため、コマンドラインの自動化が頻繁に使用されます)。しかし、私が得ている印象は、WiX(デフォルト)がTARGETDIR別の何かに使用しているということです。コマンドラインツールを更新してパラメーター名を変更することはできますが(これからも)、手動で変更する必要のある既存のインストールはすべて残ります(簡単な作業ではありません)。

TARGETDIR何も壊さずに指定することでWiXパッケージのインストール場所を上書きする方法はありますか?

4

1 に答える 1

28

さらに掘り下げてみると、以前の経験はVSDPROJ(および場合によってはInstallShield)に固有の動作の結果であるように見えますが、WiXはWindowsインストーラーに準拠しています。

このリンクで私が発見したように、TARGETDIR実際には、使用可能な空き容量が最も多いドライブのルートを表すことになっています(複数あると仮定)。そのため、WiXプロジェクトには、プログラムファイルなどのためにその下にネストされたディレクトリがあります。VisualStudioは、実際には、このプロパティをオーバーライドするカスタムアクションを完全なインストールパスに追加します。

私は2つのことをすることによって私が望んでいたことを達成することができました:

  1. (WiXがそこに置いたデフォルトのディレクトリ)のTARGETDIR代わりにインストールするすべてのコンポーネントとコンポーネントグループを変更しますINSTALLFOLDER
  2. プロパティの値をインストールパスに設定するカスタムアクションを追加しますTARGETDIR(コマンドラインから渡されなかった場合)。

<Product>そのために、タグの下にこれを追加しました。

<CustomAction Id="SetTARGETDIR" Property="TARGETDIR" 
              Value="[ProgramFilesFolder][Manufacturer]\[ProductName]" 
              Execute="firstSequence" />

そしてこれは<InstallExecuteSequence>タグ内にあります:

<Custom Action="SetTARGETDIR" Before="CostFinalize">TARGETDIR=""</Custom>
于 2012-06-12T19:52:33.157 に答える