Как изменить версию набора инструментов WIX Heat.exe?

У меня есть проект установки Visual Studio WIX, который работал ранее с WIX 3.9, он не работает с WIX после того, как я установил новую WIX 4.0.

ServerSetup.wixproj(67,5): error MSB6004: The specified task executable location "C:\Program Files (x86)\WiX Toolset v3.10\Bin\Heat.exe" is invalid.

Строка 67 из файла проекта ServerSetup.wixproj:

<HeatProject Project="%(ProjectReference.FullPath)" ProjectName="%(ProjectReference.Name)" OutputFile="$(IntermediateOutputPath)Harvested XML\_%(ProjectReference.Name).xml" ProjectOutputGroups="%(ProjectReference.RefProjectOutputGroups)" ToolPath="$(Wix)Bin\" SuppressAllWarnings="true" AutogenerateGuids="false" GenerateGuidsNow="true" SuppressFragments="true" SuppressUniqueIds="false" Condition="'%(ProjectReference.FullPath)'!='' And '%(ProjectReference.DoNotHarvest)'!='True' And '%(ProjectReference.ImportedFromVDProj)'!='True'" />

Я уже установил WIX 3.x, и у меня есть только Wix 4.0. Что я должен изменить, чтобы заставить Visual Studio 2013 использовать WIX 4.0?

2 ответа

Наконец, я удалил WIX 4, перезагрузил компьютер и установил WIX 4, и теперь я могу успешно скомпилировать проект.

У вас есть переменная окружения "WIX", указывающая на C:\Program File (x86)\Wix Toolset v3.10\"? Я думаю, что именно так определяется местоположение нагрева, но так как у вас больше не установлено 3.10, файл не существует

Обновление этой переменной среды может решить проблему для вас. В качестве альтернативы вы должны быть в состоянии заставить ваш проект подобрать правильную тепловую директорию, установив несколько свойств:

<WixRootPath Condition=" '$(WixRootPath)' == '' ">$(MSBuildThisFileDirectory)Tools\wix\$(WixTargetVersion)\</WixRootPath>
<WixToolPath Condition=" '$(WixToolPath)' == '' ">$(WixRootPath)</WixToolPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(WixRootPath)Wix.targets</WixTargetsPath>
<WixCATargetsPath Condition=" '$(WixCATargetsPath)' == '' ">$(WixRootPath)sdk\Wix.CA.targets</WixCATargetsPath>
<WixTasksPath Condition=" '$(WixTasksPath)' == '' ">$(WixToolPath)WixTasks.dll</WixTasksPath>
<WixSdkPath Condition=" '$(WixSdkPath)' == '' ">$(WixRootPath)sdk\</WixSdkPath>

но в идеале это не должно требоваться на машине, на которой уже установлен wix. Вы также можете попробовать удалить wix 4.0 и переустановить его, что может волшебным образом исправить все. Просто ремонт может не сработать.

Другие вопросы по тегам