【发布时间】:2013-05-14 15:31:33
【问题描述】:
我正在WinForms 开发一个项目,并且正在使用WiX 创建安装程序。
但是当安装程序要复制来自很长路径的.dll 时,Visual Studio 会这样说:
'Really long route'\EnterpriseLibrary....\ is too long, the fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
我发现文章讨论了与 Windows API 相关的 MAX_PATH 限制,如 StackOverflow question 中所述。
我在一个大团队中工作,我们刚刚发现了这个已知错误,但我们不允许缩短或修改路径。
我尝试了上面链接所说的解决方案,之前使用了\\?\ 字符,所以我的WixVariables 仍然是这样的:
<?define examplesPath="\\?\$(sys.CURRENTDIR)\..\..\ExamplesFolder" ?>
结果是这样的:
\\?\C:\reallylongpath\files
但它似乎不适用于 WiX 变量。
所以我的问题是:
有什么办法可以避免这个 260 个字符的限制吗?如果有,怎么做?
拜托,我需要一个答案!
编辑:当我尝试@Jans 的建议时,我还发现,如果我将\\?\ 字符串添加到我的WiX variable,错误消息会发生变化。现在它说:
The system cannot find the file '\\?\Reallylongpath\..\..\andreallylongfile\'
我在想\\?\ 可能没有转换我需要使用的..\...这里有什么建议吗?
EDIT2:我在 msdn 找到了这一行:
A consequence is that \\?\ turns off file name normalization performed by Windows APIs, including removing trailing spaces, expanding ‘.’ and ‘..’
:___(
【问题讨论】:
-
查看您链接到的问题的答案:stackoverflow.com/a/14307022/12971
-
我正在查看它,但我不确定是否使用外部库来解决问题。无论如何,我会尝试这个解决方案。正如所写,似乎解决了问题......
-
好的,这个解决方案实际上并不适合我,因为我试图在
WiX(Windows Installer XML) 知道如何解释的变量中使用该路径。 -
啊,WiX 让事情复杂化了
-
当然!!我也这么认为:P