Ответ 1
После выполнения большего копания, похоже, что мой предыдущий опыт является результатом поведения, характерного для VSDPROJ (и, возможно, InstallShield), если WiX соответствует установщику Windows.
Как я обнаружил в этой ссылке, TARGETDIR
фактически должен представлять корень диска с самым доступным свободным пространством (при условии, что там более одного), Вот почему проекты WiX имеют каталоги, вложенные там, для программных файлов и т.д. Visual Studio фактически добавляет настраиваемое действие, которое переопределяет это свойство до полного пути установки.
Я смог выполнить то, что хотел, выполнив две вещи:
- Измените все мои компоненты и группы компонентов для установки на
TARGETDIR
вместоINSTALLFOLDER
(каталог по умолчанию, который вставил WiX) - Добавьте настраиваемое действие, которое устанавливает значение свойства
TARGETDIR
в путь установки, если предположить, что из командной строки не был передан.
Чтобы сделать это, я добавил это под тегом <Product>
:
<CustomAction Id="SetTARGETDIR" Property="TARGETDIR"
Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
Execute="firstSequence" />
И это в теге <InstallExecuteSequence>
:
<Custom Action="SetTARGETDIR" Before="CostFinalize">TARGETDIR=""</Custom>