Browse Source

fix(ModDownloadLib): 1.14 及以上版本无法下载 OptiFine

wyc-26 1 year ago
parent
commit
6b9bfbf4f6

+ 13 - 5
Plain Craft Launcher 2/Modules/ModMain.vb

@@ -873,15 +873,23 @@ NextFile:
     End Sub
     End Sub
 
 
     ''' <summary>
     ''' <summary>
-    ''' 申请一个可用于任务缓存的临时文件夹,以 \ 结尾。
+    ''' 申请一个可用于任务缓存的临时文件夹。
     ''' 这些文件夹无需进行后续清理。
     ''' 这些文件夹无需进行后续清理。
     ''' </summary>
     ''' </summary>
     ''' <param name="RequireNonSpace">是否要求路径不包含空格。</param>
     ''' <param name="RequireNonSpace">是否要求路径不包含空格。</param>
-    Public Function RequestTaskTempFolder(Optional RequireNonSpace As Boolean = False) As String
+    ''' <param name="RequireSlash">是否要求路径斜杠。</param>
+    Public Function RequestTaskTempFolder(Optional RequireNonSpace As Boolean = False, Optional RequireSlash As Boolean = True) As String
         TryClearTaskTemp()
         TryClearTaskTemp()
-        RequestTaskTempFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
-        If RequireNonSpace AndAlso RequestTaskTempFolder.Contains(" ") Then
-            RequestTaskTempFolder = $"{OsDrive}ProgramData\PCL\TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
+        If RequireSlash Then
+            RequestTaskTempFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
+            If RequireNonSpace AndAlso RequestTaskTempFolder.Contains(" ") Then
+                RequestTaskTempFolder = $"{OsDrive}ProgramData\PCL\TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}\"
+            End If
+        Else
+            RequestTaskTempFolder = $"{PathTemp}TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}"
+            If RequireNonSpace AndAlso RequestTaskTempFolder.Contains(" ") Then
+                RequestTaskTempFolder = $"{OsDrive}ProgramData\PCL\TaskTemp\{GetUuid()}-{RandomInteger(0, 1000000)}"
+            End If
         End If
         End If
         Directory.CreateDirectory(RequestTaskTempFolder)
         Directory.CreateDirectory(RequestTaskTempFolder)
     End Function
     End Function

+ 3 - 3
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb

@@ -545,7 +545,7 @@ pause"
         Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
         Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
         Dim IsNewVersion As Boolean = DownloadInfo.Inherit.Contains("w") OrElse Val(DownloadInfo.Inherit.Split(".")(1)) >= 14
         Dim IsNewVersion As Boolean = DownloadInfo.Inherit.Contains("w") OrElse Val(DownloadInfo.Inherit.Split(".")(1)) >= 14
         Dim Target As String = If(IsNewVersion,
         Dim Target As String = If(IsNewVersion,
-            RequestTaskTempFolder(),
+            RequestTaskTempFolder() & "temp",
             McFolder & "libraries\optifine\OptiFine\" & DownloadInfo.NameFile.Replace("OptiFine_", "").Replace(".jar", "").Replace("preview_", "") & "\" & DownloadInfo.NameFile.Replace("OptiFine_", "OptiFine-").Replace("preview_", ""))
             McFolder & "libraries\optifine\OptiFine\" & DownloadInfo.NameFile.Replace("OptiFine_", "").Replace(".jar", "").Replace("preview_", "") & "\" & DownloadInfo.NameFile.Replace("OptiFine_", "OptiFine-").Replace("preview_", ""))
         Dim Loaders As New List(Of LoaderBase)
         Dim Loaders As New List(Of LoaderBase)
 
 
@@ -613,8 +613,8 @@ pause"
             Log("[Download] 检测为新版 OptiFine:" & DownloadInfo.Inherit)
             Log("[Download] 检测为新版 OptiFine:" & DownloadInfo.Inherit)
             Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 OptiFine(方式 A)",
             Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 OptiFine(方式 A)",
             Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
             Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
-                Dim BaseMcFolderHome As String = RequestTaskTempFolder()
-                Dim BaseMcFolder As String = BaseMcFolderHome & ".minecraft\"
+                Dim BaseMcFolderHome As String = RequestTaskTempFolder(False, False)
+                Dim BaseMcFolder As String = BaseMcFolderHome & "\.minecraft\"
                 Try
                 Try
                     '准备安装环境
                     '准备安装环境
                     If Directory.Exists(BaseMcFolder & "versions\" & DownloadInfo.Inherit) Then
                     If Directory.Exists(BaseMcFolder & "versions\" & DownloadInfo.Inherit) Then