【问题标题】:WiX Heat Pre-build ErrorWiX Heat 预构建错误
【发布时间】:2016-07-14 19:19:53
【问题描述】:

我有一个运行良好的 WiX 安装程序,但我已经工作了几个月......所以,我没有尝试构建安装程序(在重新配置的机器上),现在它无法构建每个时间。我试图简化一切以隔离失败的地方,但我似乎仍然无法弄清楚原因。从本质上讲,它看起来在预构建过程中失败了。我有一个长度的 Pre-build Event 命令,但我已将其简化为基本要素。这是我的命令:

call “$(WIX)bin\heat.exe” dir "$(SolutionDir)MyProj\bin\Release" -out “$(ProjectDir)MyFiles.wxs”

我得到的错误是:

call “C:\Program Files (x86)\WiX Toolset v3.10\bin\heat.exe” dir "C:\Users\MyName\Documents\GitHub\MyProj\bin\Release" -out “C:\Users\MyName\Documents\GitHub\MyProj\Installer\MyFiles.wxs”
The filename, directory name, or volume label syntax is incorrect.

代码似乎以代码 1 退出,这似乎表明它无法找到文件名或路径...但是,我检查了输出日志中打印的路径,而 heat.exe 应用程序确实存在于 C:\Program Files (x86) 目录下。它试图收集的目录(dir)已正确定义,输出位置也是如此。那么,有人知道为什么会失败吗?

更新

令人难以置信的是,即使我简化命令以尝试简单地调用 heat.exe 应用程序(没有其他参数),预构建事件命令似乎也失败了。我尝试将我的预构建事件更改为以下内容:

call “C:\Program Files (x86)\WiX Toolset v3.10\bin\heat.exe”

从附图中可以看出,heat.exe 应用程序确实位于构建命令中指定的目录中。然而,我仍然收到一条错误消息,指出 MSBuild 失败并以代码 1 退出。如果我检查输出日志,它会显示“文件名、目录名或卷标语法不正确”。但是,我可以说这个安装程序几个月前工作正常,构建事件没有任何变化......所以我真的不知道为什么它现在不能工作,除了我必须重新配置我的机器并重新安装最近的Windows 10。我下载并安装了最新的 WiX 工具集,并假设这就是所需的一切。但是,这个错误仍然存​​在。有什么想法吗?

【问题讨论】:

    标签: wix


    【解决方案1】:

    这真的很愚蠢,但我相信您需要在您的 dir IIRC 末尾添加一个\。我想我曾经遇到过同样的问题。该错误不是特别有用。

    call "$(WIX)bin\heat.exe" dir "$(SolutionDir)MyProj\bin\Release\" -out "$(ProjectDir)MyFiles.wxs"
    

    (我想我是倒着记得的,你不需要在目录中包含尾随的 \ .. 抱歉)


    万一你不能让预构建事件工作,你也可以像这样调用热(需要编辑wixproj文件)

    <Target Name="BeforeBuild">
        <Exec Command="&quot;$(WIX)bin\heat.exe&quot; dir &quot;$(SolutionDir)MyProj\bin\Release&quot; -out &quot;$(ProjectDir)MyFiles.wxs&quot;"/>
    </Target>
    

    在我编写的一些安装程序中,这就是我所说的热量。如果这也不起作用,我不知道为什么这对你不起作用。

    【讨论】:

    • 不幸的是,我的机器上的问题似乎仍然没有解决。
    • 奇怪的是,如果我将命令简化为简单地尝试启动 heat.exe 应用程序,那么预构建事件就会失败。例如,如果我只是使用:调用“$(WIX)bin\heat.exe”,那么我仍然会得到与上面相同的错误。
    • 根据stackoverflow.com/questions/6755654/…,您应该尝试call “$(WIX)bin\heat.exe” dir "$(SolutionDir)MyProj\bin\Release\ " -out “$(ProjectDir)MyFiles.wxs”(“Release\”之后的空格,因为 \ 正在转义“)看看是否有效。
    • 不幸的是,添加空格和反斜杠仍然没有解决问题。同样,完全奇怪的是,即使我将预构建事件简化为简单地尝试启动 heat.exe,它仍然会失败。我更新了我的问题以表明我的意思。
    • 所以,我真的不知道为什么......但是当预构建事件命令不起作用时,您关于在 wixproj 文件中添加 命令的解决方案有效。我真的不知道为什么会这样,但至少现在它又开始了。感谢您的帮助。
    【解决方案2】:

    我知道这是一个有点老的问题,但我已经面临这个问题并花了几个小时在这里注意到不同的 qoutes:“$(WIX)bin\heat.exe”。替换为直接的"$(WIX)bin\heat.exe" 并享受。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多