さらに掘り下げてみると、以前の経験はVSDPROJ(および場合によってはInstallShield)に固有の動作の結果であるように見えますが、WiXはWindowsインストーラーに準拠しています。
このリンクで私が発見したように、TARGETDIR
実際には、使用可能な空き容量が最も多いドライブのルートを表すことになっています(複数あると仮定)。そのため、WiXプロジェクトには、プログラムファイルなどのためにその下にネストされたディレクトリがあります。VisualStudioは、実際には、このプロパティをオーバーライドするカスタムアクションを完全なインストールパスに追加します。
私は2つのことをすることによって私が望んでいたことを達成することができました:
- (WiXがそこに置いたデフォルトのディレクトリ)の
TARGETDIR
代わりにインストールするすべてのコンポーネントとコンポーネントグループを変更しますINSTALLFOLDER
- プロパティの値をインストールパスに設定するカスタムアクションを追加します
TARGETDIR
(コマンドラインから渡されなかった場合)。
<Product>
そのために、タグの下にこれを追加しました。
<CustomAction Id="SetTARGETDIR" Property="TARGETDIR"
Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
Execute="firstSequence" />
そしてこれは<InstallExecuteSequence>
タグ内にあります:
<Custom Action="SetTARGETDIR" Before="CostFinalize">TARGETDIR=""</Custom>