Skip to content

Commit 12dc599

Browse files
committed
feat: 添加自动下载 ClearScript 依赖项支持
1 parent 662c26c commit 12dc599

File tree

4 files changed

+134
-11
lines changed

4 files changed

+134
-11
lines changed

SuperAutoIsland.sln.DotSettings.user

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AObservableCollection_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fc98c4c26354b89d76ffbddb774441bcc9c7ed3559b98dbd6fe39a56fc7eb18_003FObservableCollection_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
1818
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AObservableObject_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F3e432edeee9469b7cfdb81d6e6bd278cf57afb9e54ab75649b8bb2f52cdde69_003FObservableObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
1919
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AObservablePropertyAttribute_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F291c9c915a83e25c0cda72573c6eae1872f2ef5c6203fe5f8a2cc8f803c7a_003FObservablePropertyAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
20+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APlatformID_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F56fad711d44d4d47bc9f3128de5ae30ac90920_003F53_003Ff1e22cb3_003FPlatformID_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
2021
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APluginInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc2eb9fae7de440ea90d34d6dbb64445228c800_003F86_003F99992a8c_003FPluginInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
2122
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuleset_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa87e8cebdc424ae7991bb452d80e53242a0c00_003F81_003F5792be0c_003FRuleset_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
2223
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARule_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa87e8cebdc424ae7991bb452d80e53242a0c00_003Ff2_003F78174a32_003FRule_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@@ -25,4 +26,5 @@
2526
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AV8Extender_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F73956f865d364d2ca37f94cc1fa36feb11c00_003Fba_003F5372bbc5_003FV8Extender_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
2627
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AV8Proxy_002Ecs_002Fl_003AC_0021_003FUsers_003Flrs2187_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5fc872271b2e4a1cadab560c17b099556b638_003F11_003Faa73d351_003FV8Proxy_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
2728
<s:String x:Key="/Default/CodeInspection/Highlighting/SweaWarningsMode/@EntryValue">ShowAndRun</s:String>
29+
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue">&lt;AssemblyExplorer /&gt;</s:String>
2830
</wpf:ResourceDictionary>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
namespace SuperAutoIsland;
2+
3+
public struct PackageInfo
4+
{
5+
public string Url;
6+
public string FileName;
7+
}
8+
9+
public static class ClearScriptPackages
10+
{
11+
public static readonly Dictionary<string, PackageInfo> Infos = new();
12+
13+
public static void Initialize()
14+
{
15+
Infos.Add("win-x86", new PackageInfo()
16+
{
17+
Url = "https://livefile.xesimg.com/programme/python_assets/d12fccd1cfcc8ae6975178923606a8d2.dll",
18+
FileName = "ClearScriptV8.win-x86.dll"
19+
});
20+
21+
Infos.Add("win-x64", new PackageInfo()
22+
{
23+
Url = "https://livefile.xesimg.com/programme/python_assets/078840e21d89ef0c4c372fce1b364f77.dll",
24+
FileName = "ClearScriptV8.win-x64.dll"
25+
});
26+
27+
Infos.Add("win-arm64", new PackageInfo()
28+
{
29+
Url = "https://livefile.xesimg.com/programme/python_assets/587722ab79c428c4c48f07774f063866.dll",
30+
FileName = "ClearScriptV8.win-arm64.dll"
31+
});
32+
33+
Infos.Add("linux-x64", new PackageInfo()
34+
{
35+
Url = "https://livefile.xesimg.com/programme/python_assets/67329ae1400c3ca6e24b496ab3c02db2.so",
36+
FileName = "ClearScriptV8.linux-x64.so"
37+
});
38+
39+
Infos.Add("linux-arm64", new PackageInfo()
40+
{
41+
Url = "https://livefile.xesimg.com/programme/python_assets/cd72f239c19a36d5961c930ac7a57a86.so",
42+
FileName = "ClearScriptV8.linux-arm64.so"
43+
});
44+
45+
Infos.Add("osx-x64", new PackageInfo()
46+
{
47+
Url = "https://livefile.xesimg.com/programme/python_assets/e4c5fcd003b3920f110f037b5473bc37.dylib",
48+
FileName = "ClearScriptV8.osx-x64.dylib"
49+
});
50+
51+
Infos.Add("osx-arm64", new PackageInfo()
52+
{
53+
Url = "https://livefile.xesimg.com/programme/python_assets/c3dea963b5c3a89203078c3a8787e471.dylib",
54+
FileName = "ClearScriptV8.osx-arm64.dylib"
55+
});
56+
}
57+
}

SuperautoIsland/Plugin.cs

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Net;
2+
using System.Runtime.InteropServices;
13
using ClassIsland.Core;
24
using ClassIsland.Core.Abstractions;
35
using ClassIsland.Core.Abstractions.Services;
@@ -9,9 +11,6 @@
911
using Microsoft.Extensions.DependencyInjection;
1012
using Microsoft.Extensions.Hosting;
1113
using SuperAutoIsland.Controls.ActionSettingsControls;
12-
using SuperAutoIsland.Interface;
13-
using SuperAutoIsland.Interface.MetaData;
14-
using SuperAutoIsland.Interface.MetaData.ArgsType;
1514
using SuperAutoIsland.Interface.Services;
1615
using SuperAutoIsland.Server;
1716
using SuperAutoIsland.Services;
@@ -36,10 +35,79 @@ public class Plugin : PluginBase
3635
public override void Initialize(HostBuilderContext context, IServiceCollection services)
3736
{
3837
// ascii 字符画后续再补
39-
38+
4039
_logger.Info("欢迎使用 SuperAutoIsland");
4140
_logger.Info("初期化中...");
4241

42+
_logger.Info("检查并补全 ClearScripts 中...");
43+
ClearScriptPackages.Initialize();
44+
45+
string platform;
46+
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
47+
{
48+
platform = "win";
49+
}
50+
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
51+
{
52+
platform = "linux";
53+
}
54+
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
55+
{
56+
platform = "osx";
57+
}
58+
else
59+
{
60+
_logger.Error("未知平台,退出 SuperAutoIsland.");
61+
return;
62+
}
63+
64+
string arch;
65+
switch (RuntimeInformation.ProcessArchitecture)
66+
{
67+
case Architecture.X86:
68+
arch = "x86";
69+
break;
70+
case Architecture.X64:
71+
arch = "x64";
72+
break;
73+
case Architecture.Arm64:
74+
arch = "arm64";
75+
break;
76+
case Architecture.Arm:
77+
case Architecture.Wasm:
78+
case Architecture.S390x:
79+
case Architecture.LoongArch64:
80+
case Architecture.Armv6:
81+
case Architecture.Ppc64le:
82+
default:
83+
_logger.Error("未知架构,退出 SuperAutoIsland.");
84+
return;
85+
}
86+
87+
var target = $"{platform}-{arch}";
88+
var packageInfo = ClearScriptPackages.Infos[target];
89+
var packagePath = $"{Info.PluginFolderPath}/runtimes/{target}/native/{packageInfo.FileName}";
90+
91+
if (!File.Exists(packagePath))
92+
{
93+
_logger.Info("不存在依赖库!开始下载...");
94+
95+
// 已过时
96+
// using var web = new WebClient();
97+
// web.DownloadFile(packageInfo.Url, packagePath);
98+
99+
var httpClient = new HttpClient();
100+
using var response = httpClient.GetAsync(packageInfo.Url).Result;
101+
using var fs = File.Create(packagePath);
102+
response.Content.CopyToAsync(fs).Wait();
103+
104+
_logger.Info("依赖库下载完毕!");
105+
}
106+
else
107+
{
108+
_logger.Info("存在依赖库!继续执行");
109+
}
110+
43111
_logger.Info("加载配置...");
44112
GlobalConstants.PluginFolder = Info.PluginFolderPath;
45113
GlobalConstants.PluginConfigFolder = PluginConfigFolder;
@@ -86,6 +154,9 @@ public override void Initialize(HostBuilderContext context, IServiceCollection s
86154

87155
AppBase.Current.AppStopping += (_,_) =>
88156
{
157+
var blocklyRunner = IAppHost.GetService<BlocklyRunner>();
158+
blocklyRunner.Dispose();
159+
89160
var server = IAppHost.GetService<ISaiServer>();
90161
server.Shutdown();
91162
_logger.Info("已尝试关闭,3 秒后将会强行关闭 SuperAutoIsland.Server ...");

SuperautoIsland/SuperautoIsland.csproj

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,6 @@
1313
<ExcludeAssets>runtime; native</ExcludeAssets>
1414
</PackageReference>
1515
<PackageReference Include="Microsoft.ClearScript.V8" Version="7.5.0" />
16-
<PackageReference Include="Microsoft.ClearScript.V8.Native.linux-arm64" Version="7.5.0" />
17-
<PackageReference Include="Microsoft.ClearScript.V8.Native.linux-x64" Version="7.5.0" />
18-
<PackageReference Include="Microsoft.ClearScript.V8.Native.osx-arm64" Version="7.5.0" />
19-
<PackageReference Include="Microsoft.ClearScript.V8.Native.osx-x64" Version="7.5.0" />
20-
<PackageReference Include="Microsoft.ClearScript.V8.Native.win-arm64" Version="7.5.0" />
21-
<PackageReference Include="Microsoft.ClearScript.V8.Native.win-x64" Version="7.5.0" />
22-
<PackageReference Include="Microsoft.ClearScript.V8.Native.win-x86" Version="7.5.0" />
2316
<PackageReference Include="V8.Extended" Version="1.0.4" />
2417
<ProjectReference Include="..\SuperAutoIsland.Interface\SuperAutoIsland.Interface.csproj" />
2518
</ItemGroup>

0 commit comments

Comments
 (0)