WIX 3.5 терпит неудачу под NANT, но не под VS2010
Вопрос
Я знаю, что это общий вопрос, но все, что я могу найти на форумах, кажется, связан с 64-битной структурой несовместимости (которая не является проблемой в моем деле).
У меня есть набор простых установщиков Wix 3.5, разработанных с использованием вообще, что я могу счастья с компиляцией в VS2010, но когда я пытаюсь скомпилировать их через NAT (и MSBUILD) на TeamCity (т.е. Teamcity -> nant -> msbuild -> wix) Следующая ошибка:
[exec] Project file contains ToolsVersion="4.0", which is not supported by this
version of MSBuild. Treating the project as if it had ToolsVersion="3.5".
[exec] Compile:
[exec] Microsoft (R) Windows Installer Xml Compiler version 3.5.2006.0
[exec] Copyright (C) Microsoft Corporation. All rights reserved.
[exec]
[exec] Product.wxs
[exec] Product.Generated.wxs
[exec] Link:
[exec] Microsoft (R) Windows Installer Xml Linker version 3.5.2006.0
[exec] Copyright (C) Microsoft Corporation. All rights reserved.
[exec]
[exec] light.exe : error LGHT0001: Unable to load DLL 'winterop.dll': The specified module
could not be found. (Exception from HRESULT: 0x8007007E)
[exec]
[exec] Exception Type: System.DllNotFoundException
[exec]
[exec] Stack Trace:
[exec] at Microsoft.Tools.WindowsInstallerXml.Cab.Interop.NativeMethods.ExtractCabBegin()
[exec] at Microsoft.Tools.WindowsInstallerXml.Binder.BindDatabase(Output output, String databaseFile)
[exec] at Microsoft.Tools.WindowsInstallerXml.Binder.Bind(Output output, String file)
[exec] at Microsoft.Tools.WindowsInstallerXml.Tools.Light.Run(String[] args)
[exec] Done Building Project "c:\dev2\ad3\utilities\Installers\Database\Database.wixproj" (default targets) -- FAILED.
[exec] Done Building Project "c:\dev2\ad3\AgentDesktop3.1.sln" (default targets) -- FAILED.
[exec]
[exec] Build FAILED.
[exec]
[exec] "c:\dev2\ad3\AgentDesktop3.1.sln" (default target) (1) ->
[exec] "c:\dev2\ad3\utilities\InstallerService\InstallerService.csproj" (default target) (5) ->
[exec] (ResolveAssemblyReferences target) ->
[exec] C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets
: warning MSB3088: Could not read state file
"obj\Release\ResolveAssemblyReference.cache". Unable to find assembly
'Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a'.
[exec]
[exec]
[exec] "c:\dev2\ad3\AgentDesktop3.1.sln" (default target) (1) ->
[exec] "c:\dev2\ad3\utilities\Installers\Database\Database.wixproj" (default target) (6) ->
[exec] (Link target) ->
[exec] light.exe : error LGHT0001: Unable to load DLL 'winterop.dll': The specified
module could not be found. (Exception from HRESULT: 0x8007007E)
[exec]
[exec] 1 Warning(s)
[exec] 1 Error(s)
[exec]
[exec] Time Elapsed 00:00:05.92
BUILD FAILED
Любые идеи?
Решение
У нас была похожая проблема при строительстве с использованием сборки команды (2010). Мы закончили выполнять филем (его называемый процессами в эти дни) для Winterop.dll на одном из наших агентов по сборке, чтобы увидеть, где он ожидал.
Мы завершили добавление папки BIN установки WIX на нашем пути и вдруг найдут winterop.dll.
Другие советы
В зависимости от того, как вы делаете сборку вашей команды, вы также можете добавить целевой файл, который повторно отображает целевые цели, инструменты и пути и пути WIX, а затем устанавливают элемент «runwixToolsoutofProc», чтобы запустить его из группы. Вот кусок моего целевого файла, который отображает три пути. Просто измените начальное свойство туда, где бы вы ни делали файлы Wix.
<CreateProperty Value="$(ProductDirRoot)\buildfiles\tasks\wix\">
<Output TaskParameter="Value" PropertyName="WixToolPath"/>
<Output TaskParameter="Value" PropertyName="WixExtDir"/>
</CreateProperty>
<CreateProperty Value="$(WixToolPath)wix.targets">
<Output TaskParameter="Value" PropertyName="WixTargetsPath"/>
</CreateProperty>
<CreateProperty Value="$(WixToolPath)wixtasks.dll">
<Output TaskParameter="Value" PropertyName="WixTasksPath"/>
</CreateProperty>
<!-- If we didn't find the registry path, assume we're in a 64bit process. -->
<!-- WiX tools are 32bit EXEs, so run them out-of-proc when MSBuild is 64bit. -->
<CreateProperty Value="true" Condition=" '$(MSBuildExtensionsPath64)' != '' ">
<Output TaskParameter="Value" PropertyName="RunWixToolsOutOfProc" />
</CreateProperty>
Есть ли шанс, что вы не устанавливаете рабочий каталог правильно? Я предполагаю, что вы проверили там DLL?
Я также установил .NET 4.0, чтобы удалить предупреждение - может также устранить это как потенциальную причину (не может лично подумать по какой-либо причине, почему что-то простое заставило бы это сломать). Возможно, на полпути домой, вы могли бы изменить ToolsVersion
Вернуться к 3,5?
Это звучит как известная проблема: http://sourceforge.net/tracker/?func=detail&aid=3037918&group_id=105970&atid=642714.