我正在尝试这个page的步骤。我已将wix二进制文件安装在本地计算机上的文件夹中。
所以我得到了一个由wix VS 2010插件创建的wix安装程序项目。我可以使用VS 2010 IDE来构建它并生成msi文件,但是在VS命令提示符下我不能对Msbuild做同样的事情。当Msbuild尝试编译时,有一个错误抱怨找不到candle.exe:
未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'file:/// C:\ MyFolder \ Wix \ candle.exe'或其依赖项之一。不支持操作。 (HRESULT异常:0x80131515)---> System.NotSupportedException:尝试从网络位置加载程序集,这会导致程序集在以前版本的.NET Framework中被沙箱化。此版本的.NET Framework默认情况下不启用CAS策略,因此此负载可能很危险。如果此负载不是用于沙盒装配,请启用loadFromRemoteSources开关。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=155569。
我很确定exe是在正确的位置,因为VS IDE可以找到它。我想知道Msbuild我缺少什么?
谢谢!
答案 0 :(得分:4)
我从这里找到答案:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Error-in-candle-during-build-td7385947.html。 在解压缩二进制文件之前,右键单击zip文件,选择属性并从第一个选项卡中选择取消阻止。然后你正常解压缩它。
答案 1 :(得分:1)
根据您提供的page,在代码行中输入的路径将帮助MSBuild脚本识别WIX二进制文件。
<PropertyGroup>
<WixToolPath>$(SourceCodeControlRoot)\wix\3.6.3220.0\</WixToolPath>
<WixTargetsPath>$(WixToolPath)Wix.targets</WixTargetsPath>
<WixTasksPath>$(WixToolPath)wixtasks.dll</WixTasksPath>
</PropertyGroup>
这里的重要引用如下:
WixTargetsPath属性值必须相对于.wixproj项目 使用它的文件。内部使用WixTasksPath属性 wix.targets加载WixTasks.dll
应根据解压缩文件的文件夹正确指定路径。否则有可能发生此错误。然后,该项目将从VS2010正常运行,因为它正在从WIX的安装位置提供WIX二进制文件。但是,MSBuild将引用您在上面代码行中提供的值。
那么,您能否为WixToolPath
,WixTargetsPath
和WixTasksPath
提供您所提供的价值观。以及解压缩 wix36-binaries.zip 或 wix37-binaries.zip 的路径。
这些信息可能有助于解决此问题,因此我也会更正此答案。