chores: 代码可读性和相关优化
This commit is contained in:
@@ -1171,7 +1171,8 @@ Retry:
|
|||||||
.RedirectStandardError = True,
|
.RedirectStandardError = True,
|
||||||
.RedirectStandardOutput = True
|
.RedirectStandardOutput = True
|
||||||
}
|
}
|
||||||
Log($"[Download] 开始安装 {If(IsNeoForge, "Neo", "")}Forge:" & Arguments)
|
Dim LoaderName As String = If(IsNeoForge, "NeoForge", "Forge")
|
||||||
|
Log($"[Download] 开始安装 {LoaderName}:" & Arguments)
|
||||||
Dim process As New Process With {.StartInfo = Info}
|
Dim process As New Process With {.StartInfo = Info}
|
||||||
Dim LastResults As New Queue(Of String)
|
Dim LastResults As New Queue(Of String)
|
||||||
Using outputWaitHandle As New AutoResetEvent(False)
|
Using outputWaitHandle As New AutoResetEvent(False)
|
||||||
@@ -1188,11 +1189,11 @@ Retry:
|
|||||||
End If
|
End If
|
||||||
Catch ex As ObjectDisposedException
|
Catch ex As ObjectDisposedException
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, $"读取 {If(IsNeoForge, "Neo", "")}Forge 安装器信息失败")
|
Log(ex, $"读取 {LoaderName} 安装器信息失败")
|
||||||
End Try
|
End Try
|
||||||
Try
|
Try
|
||||||
If Task.State = LoadState.Aborted AndAlso Not process.HasExited Then
|
If Task.State = LoadState.Aborted AndAlso Not process.HasExited Then
|
||||||
Log($"[Installer] 由于任务取消,已中止 {If(IsNeoForge, "Neo", "")}Forge 安装")
|
Log($"[Installer] 由于任务取消,已中止 {LoaderName} 安装")
|
||||||
process.Kill()
|
process.Kill()
|
||||||
End If
|
End If
|
||||||
Catch
|
Catch
|
||||||
@@ -1211,11 +1212,11 @@ Retry:
|
|||||||
End If
|
End If
|
||||||
Catch ex As ObjectDisposedException
|
Catch ex As ObjectDisposedException
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, $"读取 {If(IsNeoForge, "Neo", "")}Forge 安装器错误信息失败")
|
Log(ex, $"读取 {LoaderName} 安装器错误信息失败")
|
||||||
End Try
|
End Try
|
||||||
Try
|
Try
|
||||||
If Task.State = LoadState.Aborted AndAlso Not process.HasExited Then
|
If Task.State = LoadState.Aborted AndAlso Not process.HasExited Then
|
||||||
Log($"[Installer] 由于任务取消,已中止 {If(IsNeoForge, "Neo", "")}Forge 安装")
|
Log($"[Installer] 由于任务取消,已中止 {LoaderName} 安装")
|
||||||
process.Kill()
|
process.Kill()
|
||||||
End If
|
End If
|
||||||
Catch
|
Catch
|
||||||
@@ -1240,7 +1241,7 @@ Retry:
|
|||||||
For i As Integer = Math.Max(0, LastResults.Count - 5) To LastResults.Count - 1 '最后 5 行
|
For i As Integer = Math.Max(0, LastResults.Count - 5) To LastResults.Count - 1 '最后 5 行
|
||||||
LastLines &= vbCrLf & LastResults(i)
|
LastLines &= vbCrLf & LastResults(i)
|
||||||
Next
|
Next
|
||||||
Throw New Exception($"{If(IsNeoForge, "Neo", "")}Forge 安装器出错,日志结束部分为:" & LastLines)
|
Throw New Exception($"{LoaderName} 安装器出错,日志结束部分为:" & LastLines)
|
||||||
End Using
|
End Using
|
||||||
End Using
|
End Using
|
||||||
End SyncLock
|
End SyncLock
|
||||||
@@ -1297,14 +1298,16 @@ Retry:
|
|||||||
|
|
||||||
'参数初始化
|
'参数初始化
|
||||||
Dim DownloadInfo = If(IsNeo, DownloadNeoInfo, DownloadForgeInfo)
|
Dim DownloadInfo = If(IsNeo, DownloadNeoInfo, DownloadForgeInfo)
|
||||||
If DownloadNeoInfo Is Nothing AndAlso IsNeo Then '兜底,有的时候 DownloadInfo 可能是空的
|
If IsNeo Then '兜底,有的时候 DownloadInfo 可能是空的
|
||||||
|
If DownloadNeoInfo Is Nothing Then
|
||||||
DownloadInfo.VersionName = Version
|
DownloadInfo.VersionName = Version
|
||||||
Version = Version.Replace("neoforge-", "").Replace("-beta", "").Replace("1.20.1-", "")
|
Version = Version.Replace("neoforge-", "").Replace("-beta", "").Replace("1.20.1-", "")
|
||||||
DownloadInfo.VersionCode = Version
|
DownloadInfo.VersionCode = Version
|
||||||
If Version.Contains("-beta") Then DownloadInfo.IsBeta = True
|
If Version.Contains("-beta") Then DownloadInfo.IsBeta = True
|
||||||
ElseIf IsNeo Then
|
Else
|
||||||
DownloadInfo = DownloadNeoInfo
|
DownloadInfo = DownloadNeoInfo
|
||||||
Version = DownloadInfo.VersionCode
|
Version = DownloadInfo.VersionCode
|
||||||
|
End If
|
||||||
Else
|
Else
|
||||||
DownloadInfo = DownloadForgeInfo
|
DownloadInfo = DownloadForgeInfo
|
||||||
End If
|
End If
|
||||||
@@ -1314,17 +1317,18 @@ Retry:
|
|||||||
Inherit = Version.Before("-")
|
Inherit = Version.Before("-")
|
||||||
Version = Version.After("-")
|
Version = Version.After("-")
|
||||||
End If
|
End If
|
||||||
|
Dim LoaderName As String = If(IsNeo, "NeoForge", "Forge")
|
||||||
Dim IsCustomFolder As Boolean = McFolder <> PathMcFolder
|
Dim IsCustomFolder As Boolean = McFolder <> PathMcFolder
|
||||||
Dim Id As String = If(IsNeo, DownloadInfo.VersionName, Inherit & "-forge-" & Version)
|
Dim Id As String = If(IsNeo, DownloadInfo.VersionName, Inherit & "-forge-" & Version)
|
||||||
Dim InstallerAddress As String = PathTemp & $"Cache\Code\{If(IsNeo, "Neo", "")}ForgeInstall-" & Version & "_" & RandomInteger(0, 100000)
|
Dim InstallerAddress As String = PathTemp & $"Cache\Code\{LoaderName}Install-" & Version & "_" & RandomInteger(0, 100000)
|
||||||
Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
|
Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
|
||||||
Dim DisplayName As String = $"{If(IsNeo, "Neo", "")}Forge " & Inherit & " - " & Version
|
Dim DisplayName As String = $"{LoaderName} " & Inherit & " - " & Version
|
||||||
Dim Loaders As New List(Of LoaderBase)
|
Dim Loaders As New List(Of LoaderBase)
|
||||||
Dim LibVersionFolder As String = PathMcFolder & "versions\" & Id & "\" '作为 Lib 文件目标的版本文件夹
|
Dim LibVersionFolder As String = PathMcFolder & "versions\" & Id & "\" '作为 Lib 文件目标的版本文件夹
|
||||||
|
|
||||||
'获取下载信息
|
'获取下载信息
|
||||||
If DownloadInfo Is Nothing Then
|
If DownloadInfo Is Nothing Then
|
||||||
Loaders.Add(New LoaderTask(Of String, String)($"获取 {If(IsNeo, "Neo", "")}Forge 详细信息",
|
Loaders.Add(New LoaderTask(Of String, String)($"获取 {LoaderName} 详细信息",
|
||||||
Sub(Task As LoaderTask(Of String, String))
|
Sub(Task As LoaderTask(Of String, String))
|
||||||
'获取 Forge / NeoForge 版本列表
|
'获取 Forge / NeoForge 版本列表
|
||||||
Dim ForgeLoader = If(IsNeo, New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("McDownloadForgeLoader " & Inherit, AddressOf DlNeoForgeVersionMain), New LoaderTask(Of String, List(Of DlForgeVersionEntry))("McDownloadForgeLoader " & Inherit, AddressOf DlForgeVersionMain))
|
Dim ForgeLoader = If(IsNeo, New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("McDownloadForgeLoader " & Inherit, AddressOf DlNeoForgeVersionMain), New LoaderTask(Of String, List(Of DlForgeVersionEntry))("McDownloadForgeLoader " & Inherit, AddressOf DlForgeVersionMain))
|
||||||
@@ -1337,11 +1341,11 @@ Retry:
|
|||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
Throw New Exception($"未能找到 {If(IsNeo, "Neo", "")}Forge " & Inherit & "-" & Version & " 的详细信息!")
|
Throw New Exception($"未能找到 {LoaderName} " & Inherit & "-" & Version & " 的详细信息!")
|
||||||
End Sub) With {.ProgressWeight = 3})
|
End Sub) With {.ProgressWeight = 3})
|
||||||
End If
|
End If
|
||||||
'下载 Forge / NeoForge 主文件
|
'下载 Forge / NeoForge 主文件
|
||||||
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))($"准备下载 {If(IsNeo, "Neo", "")}Forge",
|
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))($"准备下载 {LoaderName}",
|
||||||
Sub(Task As LoaderTask(Of String, List(Of NetFile)))
|
Sub(Task As LoaderTask(Of String, List(Of NetFile)))
|
||||||
'启动依赖版本的下载
|
'启动依赖版本的下载
|
||||||
If ClientDownloadLoader Is Nothing Then
|
If ClientDownloadLoader Is Nothing Then
|
||||||
@@ -1364,13 +1368,13 @@ Retry:
|
|||||||
End If
|
End If
|
||||||
Task.Output = Files
|
Task.Output = Files
|
||||||
End Sub) With {.ProgressWeight = 0.5, .Show = False})
|
End Sub) With {.ProgressWeight = 0.5, .Show = False})
|
||||||
Loaders.Add(New LoaderDownload($"下载 {If(IsNeo, "Neo", "")}Forge 主文件", New List(Of NetFile)) With {.ProgressWeight = 9})
|
Loaders.Add(New LoaderDownload($"下载 {LoaderName} 主文件", New List(Of NetFile)) With {.ProgressWeight = 9})
|
||||||
|
|
||||||
'安装(仅在新版安装时需要原版 Jar)
|
'安装(仅在新版安装时需要原版 Jar)
|
||||||
If Version.Before(".") >= 20 Then
|
If Version.Before(".") >= 20 Then
|
||||||
Log($"[Download] 检测为{If(IsNeo, " Neo", "新版 ")}Forge:" & Version)
|
Log($"[Download] 检测为{If(IsNeo, " Neo", "新版 ")}Forge:" & Version)
|
||||||
Dim Libs As List(Of McLibToken) = Nothing
|
Dim Libs As List(Of McLibToken) = Nothing
|
||||||
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))($"分析 {If(IsNeo, "Neo", "")}Forge 支持库文件",
|
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))($"分析 {LoaderName} 支持库文件",
|
||||||
Sub(Task As LoaderTask(Of String, List(Of NetFile)))
|
Sub(Task As LoaderTask(Of String, List(Of NetFile)))
|
||||||
Task.Output = New List(Of NetFile)
|
Task.Output = New List(Of NetFile)
|
||||||
Dim Installer As ZipArchive = Nothing
|
Dim Installer As ZipArchive = Nothing
|
||||||
@@ -1400,7 +1404,7 @@ Retry:
|
|||||||
For i = 0 To Libs.Count - 1
|
For i = 0 To Libs.Count - 1
|
||||||
If Libs(i).LocalPath.EndsWithF($"{If(IsNeo, "neo", "")}forge-" & Inherit & "-" & Version & ".jar") OrElse
|
If Libs(i).LocalPath.EndsWithF($"{If(IsNeo, "neo", "")}forge-" & Inherit & "-" & Version & ".jar") OrElse
|
||||||
Libs(i).LocalPath.EndsWithF("forge-" & Inherit & "-" & Version & "-client.jar") Then
|
Libs(i).LocalPath.EndsWithF("forge-" & Inherit & "-" & Version & "-client.jar") Then
|
||||||
Log($"[Download] 已从待下载 {If(IsNeo, "Neo", "")}Forge 支持库中移除:" & Libs(i).LocalPath, LogLevel.Debug)
|
Log($"[Download] 已从待下载 {LoaderName} 支持库中移除:" & Libs(i).LocalPath, LogLevel.Debug)
|
||||||
Libs.RemoveAt(i)
|
Libs.RemoveAt(i)
|
||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
@@ -1413,8 +1417,8 @@ Retry:
|
|||||||
If Installer IsNot Nothing Then Installer.Dispose()
|
If Installer IsNot Nothing Then Installer.Dispose()
|
||||||
End Try
|
End Try
|
||||||
End Sub) With {.ProgressWeight = 2})
|
End Sub) With {.ProgressWeight = 2})
|
||||||
Loaders.Add(New LoaderDownload($"下载 {If(IsNeo, "Neo", "")}Forge 支持库文件", New List(Of NetFile)) With {.ProgressWeight = 12})
|
Loaders.Add(New LoaderDownload($"下载 {LoaderName} 支持库文件", New List(Of NetFile)) With {.ProgressWeight = 12})
|
||||||
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)($"获取 {If(IsNeo, "Neo", "")}Forge 支持库文件",
|
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)($"获取 {LoaderName} 支持库文件",
|
||||||
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
||||||
#Region "Forge / NeoForge 文件"
|
#Region "Forge / NeoForge 文件"
|
||||||
If IsCustomFolder Then
|
If IsCustomFolder Then
|
||||||
@@ -1424,7 +1428,7 @@ Retry:
|
|||||||
Directory.CreateDirectory(IO.Path.GetDirectoryName(RealPath))
|
Directory.CreateDirectory(IO.Path.GetDirectoryName(RealPath))
|
||||||
CopyFile(LibFile.LocalPath, RealPath)
|
CopyFile(LibFile.LocalPath, RealPath)
|
||||||
End If
|
End If
|
||||||
If ModeDebug Then Log($"[Download] 复制的 {If(IsNeo, "Neo", "")}Forge 支持库文件:" & LibFile.LocalPath)
|
If ModeDebug Then Log($"[Download] 复制的 {LoaderName} 支持库文件:" & LibFile.LocalPath)
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
#End Region
|
#End Region
|
||||||
@@ -1434,7 +1438,7 @@ Retry:
|
|||||||
Dim TargetLoaders As List(Of LoaderBase) =
|
Dim TargetLoaders As List(Of LoaderBase) =
|
||||||
ClientDownloadLoader.GetLoaderList.Where(Function(l) l.Name = McDownloadClientLibName OrElse l.Name = McDownloadClientJsonName).
|
ClientDownloadLoader.GetLoaderList.Where(Function(l) l.Name = McDownloadClientLibName OrElse l.Name = McDownloadClientJsonName).
|
||||||
Where(Function(l) l.State <> LoadState.Finished).ToList
|
Where(Function(l) l.State <> LoadState.Finished).ToList
|
||||||
If TargetLoaders.Any Then Log($"[Download] {If(IsNeo, "Neo", "")}Forge 安装正在等待原版文件下载完成")
|
If TargetLoaders.Any Then Log($"[Download] {LoaderName} 安装正在等待原版文件下载完成")
|
||||||
Do While TargetLoaders.Any AndAlso Not Task.IsAborted
|
Do While TargetLoaders.Any AndAlso Not Task.IsAborted
|
||||||
TargetLoaders = TargetLoaders.Where(Function(l) l.State <> LoadState.Finished).ToList
|
TargetLoaders = TargetLoaders.Where(Function(l) l.State <> LoadState.Finished).ToList
|
||||||
Thread.Sleep(50)
|
Thread.Sleep(50)
|
||||||
@@ -1483,11 +1487,11 @@ Retry:
|
|||||||
Task.Progress = 0.97
|
Task.Progress = 0.97
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
If UseJavaWrapper Then
|
If UseJavaWrapper Then
|
||||||
Log(ex, $"使用 JavaWrapper 安装 {If(IsNeo, "Neo", "")}Forge 失败,将不使用 JavaWrapper 并重试")
|
Log(ex, $"使用 JavaWrapper 安装 {LoaderName} 失败,将不使用 JavaWrapper 并重试")
|
||||||
UseJavaWrapper = False
|
UseJavaWrapper = False
|
||||||
GoTo Retry
|
GoTo Retry
|
||||||
Else
|
Else
|
||||||
Throw New Exception($"运行 {If(IsNeo, "Neo", "")}Forge 安装器失败", ex)
|
Throw New Exception($"运行 {LoaderName} 安装器失败", ex)
|
||||||
End If
|
End If
|
||||||
End Try
|
End Try
|
||||||
'拷贝新增的版本 Json
|
'拷贝新增的版本 Json
|
||||||
@@ -1505,14 +1509,14 @@ Retry:
|
|||||||
'新建 mods 文件夹
|
'新建 mods 文件夹
|
||||||
Directory.CreateDirectory(New McVersion(VersionFolder).GetPathIndie(True) & "mods\")
|
Directory.CreateDirectory(New McVersion(VersionFolder).GetPathIndie(True) & "mods\")
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Throw New Exception($"安装新 {If(IsNeo, "Neo", "")}Forge 版本失败", ex)
|
Throw New Exception($"安装新 {LoaderName} 版本失败", ex)
|
||||||
Finally
|
Finally
|
||||||
'清理文件
|
'清理文件
|
||||||
Try
|
Try
|
||||||
If Installer IsNot Nothing Then Installer.Dispose()
|
If Installer IsNot Nothing Then Installer.Dispose()
|
||||||
If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress)
|
If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, $"安装 {If(IsNeo, "Neo", "")}Forge 清理文件时出错")
|
Log(ex, $"安装 {LoaderName} 清理文件时出错")
|
||||||
End Try
|
End Try
|
||||||
End Try
|
End Try
|
||||||
End Sub) With {.ProgressWeight = 10})
|
End Sub) With {.ProgressWeight = 10})
|
||||||
@@ -1573,8 +1577,8 @@ Retry:
|
|||||||
End Sub) With {.ProgressWeight = 1})
|
End Sub) With {.ProgressWeight = 1})
|
||||||
If FixLibrary Then
|
If FixLibrary Then
|
||||||
If IsCustomFolder Then Throw New Exception("若需要补全支持库,就不能自定义 MC 文件夹")
|
If IsCustomFolder Then Throw New Exception("若需要补全支持库,就不能自定义 MC 文件夹")
|
||||||
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))($"分析 {If(IsNeo, "Neo", "")}Forge 支持库文件", Sub(Task As LoaderTask(Of String, List(Of NetFile))) Task.Output = McLibFix(New McVersion(VersionFolder))) With {.ProgressWeight = 1, .Show = False})
|
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))($"分析 {LoaderName} 支持库文件", Sub(Task As LoaderTask(Of String, List(Of NetFile))) Task.Output = McLibFix(New McVersion(VersionFolder))) With {.ProgressWeight = 1, .Show = False})
|
||||||
Loaders.Add(New LoaderDownload($"下载 {If(IsNeo, "Neo", "")}Forge 支持库文件", New List(Of NetFile)) With {.ProgressWeight = 11})
|
Loaders.Add(New LoaderDownload($"下载 {LoaderName} 支持库文件", New List(Of NetFile)) With {.ProgressWeight = 11})
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@@ -1673,7 +1677,7 @@ Retry:
|
|||||||
Else
|
Else
|
||||||
Version = sender.Parent.Parent.Tag
|
Version = sender.Parent.Parent.Tag
|
||||||
End If
|
End If
|
||||||
McDownloadForgeSave(False, Version)
|
McDownloadForgeSave(False, DownloadForgeInfo:=Version)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
@@ -1830,7 +1834,7 @@ Retry:
|
|||||||
Else
|
Else
|
||||||
Version = sender.Parent.Parent.Tag
|
Version = sender.Parent.Parent.Tag
|
||||||
End If
|
End If
|
||||||
McDownloadForgeSave(True, , Version)
|
McDownloadForgeSave(True, DownloadNeoInfo:=Version)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|||||||
Reference in New Issue
Block a user