remove path-too-long exception handling
The path length limit no longer applies in .NET 5.
This commit is contained in:
parent
b349e956c6
commit
89c98223eb
|
@ -259,17 +259,6 @@ namespace StardewModdingApi.Installer
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// game folder doesn't contain paths beyond the max limit
|
|
||||||
{
|
|
||||||
string[] tooLongPaths = PathUtilities.GetTooLongPaths(Path.Combine(paths.GamePath, "Mods")).ToArray();
|
|
||||||
if (tooLongPaths.Any())
|
|
||||||
{
|
|
||||||
this.PrintError($"SMAPI can't install to the detected game folder, because some of its files exceed the maximum {context.Platform} path length.\nIf you need help fixing this error, see https://smapi.io/help\n\nAffected paths:\n {string.Join("\n ", tooLongPaths)}");
|
|
||||||
Console.ReadLine();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Console.Clear();
|
Console.Clear();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics.Contracts;
|
using System.Diagnostics.Contracts;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -150,32 +149,5 @@ namespace StardewModdingAPI.Toolkit.Utilities
|
||||||
{
|
{
|
||||||
return !Regex.IsMatch(str, "[^a-z0-9_.-]", RegexOptions.IgnoreCase);
|
return !Regex.IsMatch(str, "[^a-z0-9_.-]", RegexOptions.IgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Get the paths which exceed the OS length limit.</summary>
|
|
||||||
/// <param name="rootPath">The root path to search.</param>
|
|
||||||
internal static IEnumerable<string> GetTooLongPaths(string rootPath)
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(rootPath))
|
|
||||||
return new string[0];
|
|
||||||
|
|
||||||
return Directory
|
|
||||||
.EnumerateFileSystemEntries(rootPath, "*.*", SearchOption.AllDirectories)
|
|
||||||
.Where(PathUtilities.IsPathTooLong);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Get whether a file or directory path exceeds the OS path length limit.</summary>
|
|
||||||
/// <param name="path">The path to test.</param>
|
|
||||||
internal static bool IsPathTooLong(string path)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_ = Path.GetFullPath(path);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
catch (PathTooLongException)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,24 +250,7 @@ namespace StardewModdingAPI.Framework.Logging
|
||||||
/// <param name="exception">The exception details.</param>
|
/// <param name="exception">The exception details.</param>
|
||||||
public void LogFatalLaunchError(Exception exception)
|
public void LogFatalLaunchError(Exception exception)
|
||||||
{
|
{
|
||||||
switch (exception)
|
this.MonitorForGame.Log($"The game failed to launch: {exception.GetLogSummary()}", LogLevel.Error);
|
||||||
{
|
|
||||||
// path too long exception
|
|
||||||
case PathTooLongException _:
|
|
||||||
{
|
|
||||||
string[] affectedPaths = PathUtilities.GetTooLongPaths(Constants.ModsPath).ToArray();
|
|
||||||
string message = affectedPaths.Any()
|
|
||||||
? $"SMAPI can't launch because some of your mod files exceed the maximum path length on {Constants.Platform}.\nIf you need help fixing this error, see https://smapi.io/help\n\nAffected paths:\n {string.Join("\n ", affectedPaths)}"
|
|
||||||
: $"The game failed to launch: {exception.GetLogSummary()}";
|
|
||||||
this.MonitorForGame.Log(message, LogLevel.Error);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// generic exception
|
|
||||||
default:
|
|
||||||
this.MonitorForGame.Log($"The game failed to launch: {exception.GetLogSummary()}", LogLevel.Error);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****
|
/****
|
||||||
|
|
Loading…
Reference in New Issue