【问题标题】:Is it possible to avoid MAX_PATH limit using WiX variables?是否可以使用 WiX 变量避免 MAX_PATH 限制?
【发布时间】: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

标签: c# .net path wix wix3.5


【解决方案1】:

这是一个可怕的 hack,但您可以创建一个指向真实目录的符号链接。符号链接类似于常规链接,除了它的行为与真实目录完全相同。

假设你有一个很长的目录给你带来麻烦:

C:\blahblahblah\thisisreallylong\andnotaccessible\blahblahblah\

您可以为它创建一个符号链接,它具有您喜欢的任何名称,但要短得多。将其视为别名。因此,如果您在控制台上调用它,例如在 C:\temp 目录中:

C:\temp\>mklink /D reallylong C:\blahblahblah\thisisreallylong\andnotaccessible\blahblahblah\

然后,您可以访问 C:\temp\reallylong,就好像它是您的真实目录一样。请注意,您需要本地管理员权限才能创建符号链接。

【讨论】:

  • 对不起@Jan Doerrenhaus,但我似乎不熟悉您的评论。您能否再解释一下如何创建该符号链接?
  • 我澄清了一点。有什么具体你不明白的地方吗?
  • 不,谢谢 Jan,我明白你的回答。现在真的很清楚:) 但我的问题来自WiX variables。我需要将路由放在字符串中,以允许 WiX 解释它,所以我不确定是否可以使用 WiX 变量来做到这一点...
  • 问题是你的 WiX 变量中的路径太长了,对吧?因此,只需通过创建指向长路径的短符号链接来缩短路径。然后在您的 WiX 变量中使用该符号链接。
  • 对不起,如果我没有回答。我试图找到如何在 WiX 上创建符号链接。我正在努力。
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 2018-10-04
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2014-11-18
  • 1970-01-01
相关资源
最近更新 更多