使用mvs2013或mvs2014的Windows 10上的Wix无效。
我收到错误:
错误The "GenerateCompileWithObjectPath" task could not be loaded from the assembly \WixTasks.dll. Could not load file or assembly 'file:///c:\WixTasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. SetupProject5 C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\wix2010.targets
如果我尝试将WixTasks.dll
包含在项目中,则mvs2013或mvs2014在构建期间崩溃。我从解压缩的wix二进制文件夹中将\WixTasks.dll
包含在C:\SourceControl\vs2015\SetupProject1\SetupProject1\SetupProject1.wixproj
中:
C:\SourceControl
// C:\SourceControl\vs2015\SetupProject1\SetupProject1\SetupProject1.wixproj
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.10</ProductVersion>
<ProjectGuid>0adbe89f-e1ce-4345-90e6-64b8304fa42f</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>SetupProject1</OutputName>
<OutputType>Package</OutputType>
<WixToolPath>C:\SourceControl</WixToolPath>
<WixTargetsPath>$(WixToolPath)\wix.targets</WixTargetsPath>
<WixTasksPath>$(WixToolPath)\WixTasks.dll</WixTasksPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Product.wxs" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
过去两天我正在阅读不同的在线论坛和示例。另外,Pact在尼克拉米雷斯的书中讲述了wix。什么都行不通。
答案 0 :(得分:2)
定义以下MSBuild变量,一切都应该有效。
<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 3.10.2二进制文件,我在构建机器上检查我的构建。
我认为构建任务应该在WIX环境变量定义的路径中查找,但我并非100%确定。
我认为用您设置的路径定义所有变量应修复所有内容,因为错误提到在C:\ WixTasks.dll查找通常它寻找的路径类似于$(WixInstallPath)WixTasks .dll但是如果$(WixInstallPath)没有被正确定义,它将只是空的并且默认为C:\ WixTasks.dll。你确实定义了$(WixTasksPath),但我认为它因某些原因而被覆盖......
无论如何,你的系统现在出现了问题,但你可能会以这种方式解决这个问题。
编辑:如果以上操作不起作用,请从here下载wix二进制文件并将其解压缩到一个名为&#34; Wix&#34;的文件夹中。或者你想称之为什么。然后将WixRootPath设置为等于该位置。
答案 1 :(得分:0)
来自WiX Cookbook的工作解决方案,Nick Ramirez,2015年,第1章“从命令行构建WiX安装程序”,示例4“BuildMachineInstaller”
下载并解压缩wix二进制文件,例如从here开始。
1.为项目创建一个文件夹,例如C:\SourceControl\own\box1
,文件为Product.wxs
2.将二进制文件解压缩到某个文件夹,例如C:\SourceControl\own\box1\tools\wix
3.启动Windows命令行工具cmd
并切换到项目文件夹。执行candle
和light
命令如下:
C:\ SourceControl \自己\ BOX1&GT; C:\SourceControl\own\box1\tools\wix\candle *.wxs -o obj\
C:\ SourceControl \自己\ BOX1&GT; C:\SourceControl\own\box1\tools\wix\light obj\*.wixobj -o bin\CommandLineInstaller.msi
无论如何,如果有人可以提供一些工作示例文件和描述如何使用MSBuild或Visual Studio Build和wix制作* .exe或* .msi,我会非常感激。 Pact书中的其他例子并不是纯粹的复制,尽管对于一般的理解非常有用。
答案 2 :(得分:0)
我刚刚遇到这个问题,发现在wix2010.targets文件的顶部是以下属性组。
<PropertyGroup>
<WixInstallPath Condition=" '$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Installer XML\3.11@InstallRoot)</WixInstallPath>
<WixInstallPath Condition=" '$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.11@InstallRoot)</WixInstallPath>
检查引用的注册表路径时,3.11没有条目,但3.10有一个条目。并且已安装的版本报告为3.10。因此,将属性组更新为以下内容已为我更正了问题。
<PropertyGroup>
<WixInstallPath Condition=" '$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath>
<WixInstallPath Condition=" '$(WixInstallPath)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.10@InstallRoot)</WixInstallPath>
希望这有帮助。
答案 3 :(得分:0)
我在使用VS2015并使用不同版本的Wix的git分支时遇到过这种情况。 (我升级到最新的Wix版本,但并非所有分支都在那里。)
如果在Wix中使用不同版本的git分支之间切换,则必须终止并重新启动VS. VS将一些Wix文件打开,这些文件在任何其他版本的Wix下都无法运行。如果你忘记这样做,你的VS版本将失败,并且#34;&#34; GenerateCompileWithObjectPath&#34;无法从程序集C:\ Program Files(x86)\ WiX Toolset v3.10 \ bin \ WixTasks.dll&#34;
加载任务答案 4 :(得分:0)
我按照以下说明解决了问题:
从https://github.com/wixtoolset/wix3/releases/tag/wix3111rtm下载WIX311.exe 从https://marketplace.visualstudio.com/items?itemName=RobMensching.WixToolsetVisualStudio2017Extension
下载Votive2017.vsix从您的解决方案/项目中删除所有旧的WiX nuget数据包
请按照以下说明操作(您可以省略/安静)。
http://packagingstuffs.blogspot.com/2017/11/wix-toolset-311-silent-install-method.html 来自上述网站的内容;
安装: 步骤1:从Web下载源并获取安装程序wix311.exe。 步骤2:运行以下命令:wix311.exe / install / quiet / norestart 步骤3:将Votive2017.vsix文件(由供应商提供)复制到本地计算机(例如%TEMP%) 步骤4:从其存储位置运行VSIX安装程序 &#34;%ProgramFiles(x86)%\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VSIXInstaller.exe&#34; /安静
祝你好运和最好的问候