従来のVisual Studio Deployment Projectインストーラーでは、TARGETDIR
の値を指定したコマンドラインパラメーターを渡すことで、デフォルトのインストール場所を上書きできました(ほとんどのインストールはユーザーの操作なしで行われるため、コマンドラインの自動化は頻繁に使用されます)。しかし、私が得ている印象は、WiX(デフォルトでは)が別のものにTARGETDIR
を使用することです。コマンドラインツールを更新してパラメーター名を変更することはできます(そうする予定です)が、それでも、手動で操作する必要がある既存のインストールはすべて残ります(簡単な作業ではありません)。
何も壊さずにTARGETDIR
を指定してWiXパッケージのインストール場所を上書きする方法はありますか?
さらに掘り下げた後、私の以前の経験はVSDPROJ(場合によってはInstallShield)に固有の動作の結果であるように見えます。WiXはWindowsインストーラーに準拠しています。
私が this link で発見したように、TARGETDIR
は実際には、使用可能な空き領域が最も多いドライブのルートを表すものと想定されています(複数あると仮定)。そのため、WiXプロジェクトにはProgram Filesなどのディレクトリがネストされています。VisualStudioは、実際には、このプロパティを上書きするカスタムアクションをフルインストールパスに追加します。
私は2つのことを実行することにより、私が望んでいたことを達成することができました。
TARGETDIR
(WiXがそこに配置したデフォルトのディレクトリ)ではなくINSTALLFOLDER
に変更します。TARGETDIR
プロパティの値をインストールパスに設定するカスタムアクションを追加します(コマンドラインから渡されなかった場合)。そのために、これを<Product>
タグの下に追加しました。
<CustomAction Id="SetTARGETDIR" Property="TARGETDIR"
Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
Execute="firstSequence" />
そして、これは<InstallExecuteSequence>
タグ内にあります。
<Custom Action="SetTARGETDIR" Before="CostFinalize">TARGETDIR=""</Custom>