0

我正在尝试此页面上的步骤。我已将 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 缺少什么?

谢谢!

4

2 回答 2

6

我从这里找到了答案:http: //windows-installer-xml-wix-toolset.687559.n2.nabble.com/Error-in-candle-during-build-td7385947.html。在解压缩二进制文件之前,右键单击 zip 文件,选择属性并从第一个选项卡中选择 Unblock。然后你像往常一样解压缩它。

于 2013-11-15T03:23:01.113 回答
1

根据您提供的页面,在代码行中输入的路径将帮助 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.zipwix37-binaries.zip的路径。

这些信息可能有助于解决这个问题,因此我也会更正这个答案。

于 2013-02-09T19:45:37.553 回答