Как изменить версию набора инструментов 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 и переустановить его, что может волшебным образом исправить все. Просто ремонт может не сработать.