WIX相对路径最终太长

时间:2013-03-15 11:26:46

标签: .net windows filesystems wix

我从light.exe收到错误,表示在我的设置项目中找到其中一个文件时遇到问题。结果证明我使用的相对路径超过260个字符。目前,Wix的设置如下:

<File Id='FoobarEXE' Name='FoobarAppl10.exe' DiskId='1' Source='..\..\Path\To\Built\Executable\FoobarAppl10.exe' KeyPath='yes'/>

我遇到的问题是Wix安装项目位于D:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject文件夹下的\Path\To\Built\Executable\FoobarAppl10.exeD:\Path\To\ProjectFolder等文件夹中。当light.exe尝试解析路径时,最终结果为D:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject\..\..\Path\To\Built\Executable\FoobarAppl10.exe,在我的特定情况下恰好超过260个字符。 exe的正确绝对路径是D:\Path\To\ProjectFolder\Path\To\Built\Executable\FoobarAppl10.exe,在我的情况下,它将低于260个字符,但由于不必要地包含路径的WixInstaller\WixInstallerProject\..\..\部分,因此超过此限制。

我有什么方法可以light.exe解析..\..\Path\To\Built\Executable\FoobarAppl10.exe D:\Path\To\ProjectFolder\Path\To\Built\Executable\FoobarAppl10.exe而不是D:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject\..\..\Path\To\Built\Executable\FoobarAppl10.exe

我很欣赏这不是Wix本身的限制,而是构建了API Wix设计利用的方式的基本限制,但是我需要一个问题的解决方案,这将允许我在我的问题中解决这个问题。 .wxs个文件。是缩短路径会起作用,但问题不在于路径太长(因为它不是),而是相对路径的语法会增加不必要的中间部分。

2 个答案:

答案 0 :(得分:4)

今天light.exe中没有任何内容可以自定义评估路径,以便当整个事物超过260个字符时Path.Combine()不会阻塞。正如您所注意到的,这是.NET Framework中令人沮丧的限制(并且Windows Installer API也会窒息)。

要解决此问题,我建议您查看bind paths。您可以将代码更改为:

<File Id='FoobarEXE' Source='!(bindpath.FooBarApp)\FoobarAppl10.exe' />

在命令行上执行以下操作:

light.exe -b FooBarApp=D:\Path\To\ProjectFolder\Path\To\Built\Executable

这将创建最短的路径。您也可以将相对路径从命令行移动到File/@Source(例如,移动路径的Built\Executable部分)。我想你会发现它非常灵活。

答案 1 :(得分:1)

.NET MAXPATH限制现已在版本4.6.2(https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/#bcl

中得到解决