3

我收到错误light.exe,表明在我的安装项目中定位文件之一时遇到问题。结果在有问题的 PC 上,我使用的相对路径超过 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.exe存在于该D:\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.exeD:\Path\To\ProjectFolder\Path\To\Built\Executable\FoobarAppl10.exe而不是D:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject\..\..\Path\To\Built\Executable\FoobarAppl10.exe

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

4

1 回答 1

5

今天没有任何东西light.exe可以自定义评估路径,以便 Path.Combine() 在整个内容超过 260 个字符时不会阻塞。正如您所注意到的,这是 .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路径的一部分)。我想你会发现它非常灵活。

于 2013-03-15T14:33:39.710 回答