Вопрос

Я знаю, что это общий вопрос, но все, что я могу найти на форумах, кажется, связан с 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top