路径中的WIX非法字符

时间:2017-06-23 16:07:10

标签: wix

我有错误

  

路径中的非法字符

当我尝试构建我的WIX.Setup时。我可以在以下组件中找到问题

  <Component Id="C.Cef.Common.BrowserSubprocess.Core" Guid="{5603fa71-5739-4513-9cba-793a6f6d29ce}">
    <File Id="CefSharp.BrowserSubprocess.Core.dll"    Source="$(var.Path.Cefsharp.Commonx64)\CefSharp.BrowserSubprocess.Core.dll" KeyPath="yes" Checksum="yes"/>
  </Component>
  <Component Id="C.Cef.Common.BrowserSubprocessexe" Guid="{5b0b77cd-7787-4c8a-b388-8042d179a788}">
    <File Id="CefSharp.BrowserSubprocess.exe"       Source="$(var.Path.Cefsharp.Commonx64)\CefSharp.BrowserSubprocess.exe" KeyPath="yes" Checksum="yes"/>
  </Component>
  <Component Id="C.Cef.Common.Core"                 Guid="{98a016a2-50cb-4fdb-ae50-46f7f35ac270}">
    <File Id="CefSharp.Core.dll"                    Source="$(var.Path.Cefsharp.Commonx64)\CefSharp.Core.dll" KeyPath="yes" Checksum="yes"/>
  </Component>
  <Component Id="C.Cef.Common.CefSharp"             Guid="{a181bbed-fc28-41c8-868d-8c1dd62dbc46}">
    <File Id="CefSharp.dll"                         Source="$(var.Path.Cefsharp.Commonx64)\CefSharp.dll" KeyPath="yes" Checksum="yes"/>
  </Component>

如果我删除它们就可以了。

  <?define Path.Cefsharp.Commonx64 =              "$(var.Path.Packages)\CefSharp.Common.55.0.0\CefSharp\x64 ?>

非法角色在哪里?

2 个答案:

答案 0 :(得分:3)

引号只是preprocessor定义中值的有时必需语法。

由于您缺少必须具有的尾随引用,因此前导引号被认为是该值的一部分!

<?define Path.Cefsharp.Commonx64 = 
  "$(var.Path.Packages)\CefSharp.Common.55.0.0\CefSharp\x64 ?>

我使用candle -p开关来查找它。

答案 1 :(得分:1)

我对WIX语法没有太多经验,但according to the documentation在通过命名的binder路径识别有效负载时,File元素需要一个感叹号:

<Component Id="C.Cef.Common.BrowserSubprocess.Core" Guid="{5603fa71-5739-4513-9cba-793a6f6d29ce}">
    <File Id="CefSharp.BrowserSubprocess.Core.dll"  Source="!(var.Path.Cefsharp.Commonx64)\CefSharp.BrowserSubprocess.Core.dll" KeyPath="yes" Checksum="yes"/>
</Component>

希望这有帮助!

Source - WIX docs (general)