...
 
Commits (130)
......@@ -101,7 +101,7 @@
- 单个组件
- GitHub Extension for Visual Studio(可选)
- [Visual Studio Marketplace](https://marketplace.visualstudio.com)
- [Avalonia for Visual Studio(可选)](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [Avalonia for Visual Studio(可选)](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS)
- [NUnit VS Templates(可选)](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
[JetBrains Rider](https://www.jetbrains.com/rider)
......
......@@ -210,7 +210,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WinAuth", "WinAuth", "{84FF
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinAuth", "ref\WinAuth\src\WinAuth\WinAuth.csproj", "{3F67183A-CC29-4B60-B534-08C2FB1A6746}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BD.WTTS.Client.Tools.OpenSourceLibraryList", "src\BD.WTTS.Client.Tools.OpenSourceLibraryList\BD.WTTS.Client.Tools.OpenSourceLibraryList.csproj", "{64F0101B-F54C-442E-BA70-738ACF72247F}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BD.WTTS.Client.Tools.OpenSourceLibraryList", "src\BD.WTTS.Client.Tools.OpenSourceLibraryList\BD.WTTS.Client.Tools.OpenSourceLibraryList.csproj", "{64F0101B-F54C-442E-BA70-738ACF72247F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BD.WTTS.Client.Plugins.SteamIdleCard", "src\BD.WTTS.Client.Plugins.SteamIdleCard\BD.WTTS.Client.Plugins.SteamIdleCard.csproj", "{80B51074-9473-4635-9B8F-4EB00B9ADCE7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -406,6 +408,10 @@ Global
{64F0101B-F54C-442E-BA70-738ACF72247F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64F0101B-F54C-442E-BA70-738ACF72247F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64F0101B-F54C-442E-BA70-738ACF72247F}.Release|Any CPU.Build.0 = Release|Any CPU
{80B51074-9473-4635-9B8F-4EB00B9ADCE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80B51074-9473-4635-9B8F-4EB00B9ADCE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80B51074-9473-4635-9B8F-4EB00B9ADCE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80B51074-9473-4635-9B8F-4EB00B9ADCE7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -470,6 +476,7 @@ Global
{84FF822C-BF60-493F-A8C8-6A413167E3DA} = {90E88965-DB90-4B49-94F5-6D2965491988}
{3F67183A-CC29-4B60-B534-08C2FB1A6746} = {84FF822C-BF60-493F-A8C8-6A413167E3DA}
{64F0101B-F54C-442E-BA70-738ACF72247F} = {D6C8A54D-878F-44A9-857F-6ED01491C7BD}
{80B51074-9473-4635-9B8F-4EB00B9ADCE7} = {A5828819-62AB-4B03-A083-8B6ED4915AA3}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {567F588F-E95C-4286-8B30-DB3B2200221C}
......
文件已添加
#!/bin/bash
base_path="$HOME/WattToolkit"
mkdir -p "$base_path"
cd "$base_path" || exit 1
appVer_path="$base_path/WattToolkit.AppVer"
exec_name="Steam++"
tar_name="WattToolkit.tgz"
tar_path="$base_path/$tar_name"
base_url="https://steampp.mossimo.net:8800"
architecture=1
app_name="Watt Toolkit"
PROCESS_NAMES=("$exec_name" "$app_name")
export LC_ALL=en_US.UTF-8
Install_certutil() {
# 判断发行版类型
if command -v certutil &>/dev/null; then
echo "certutil 工具已安装。"
else
echo "证书导入以及验证需要使用 certutil 工具。"
# 判断包管理器
if command -v apt &>/dev/null; then
# 使用 apt (Debian/Ubuntu)
sudo apt update
sudo apt install -y libnss3-tools
elif command -v dnf &>/dev/null; then
# 使用 dnf (Fedora)
sudo dnf install -y nss-tools
elif command -v yum &>/dev/null; then
# 使用 yum (CentOS/Red Hat)
sudo yum install -y nss-tools
elif command -v pacman &>/dev/null; then
# 使用 pacman (Arch Linux)
# sudo pacman -S nss
echo "请手动安装 certutil 工具。"
exit 1
else
echo "请手动安装 certutil 工具。"
exit 1
fi
echo "certutil 工具已安装。"
fi
}
#精简版系统可能没有该工具
Install_zenity() {
# 判断发行版类型
if command -v zenity &>/dev/null; then
echo "zenity 工具已安装。"
else
echo "安装过程需要 zenity 工具。"
# 判断包管理器
if command -v apt &>/dev/null; then
# 使用 apt (Debian/Ubuntu)
sudo apt update
sudo apt install -y zenity
elif command -v dnf &>/dev/null; then
# 使用 dnf (Fedora)
sudo dnf install -y zenity
elif command -v yum &>/dev/null; then
# 使用 yum (CentOS/Red Hat)
sudo yum install -y zenity
elif command -v pacman &>/dev/null; then
# 使用 pacman (Arch Linux)
# sudo pacman -S zenity
echo "请手动安装 zenity 工具。"
exit 1
else
echo "请手动安装 zenity 工具。"
exit 1
fi
echo "zenity 工具已安装。"
fi
}
Show_Run() {
local param1=$1
# 显示提示框,询问是否运行程序
zenity --question --text="$1" --width=400
# 获取上一个命令的退出码
response=$?
if [ $response -eq 0 ]; then
# 用户点击了 "运行" 按钮,启动程序
/bin/sh -c "$base_path/$exec_name.sh" &
echo "程序已启动。"
exit 0
else
# 用户点击了 "关闭" 按钮,退出脚本
exit 0
fi
}
Get_NewVer() {
#获取系统架构
arch=$(uname -m)
case $arch in
x86_64)
architecture=1
;;
i?86)
architecture=0
;;
arm*)
architecture=2
;;
aarch64)
architecture=3
;;
*)
zenity --info --text="未知的设备架构:$arch!" --width=300
exit 500
;;
esac
# 获取发行版信息
read -r os_version <<<"$(cat /etc/os-release | grep -E 'VERSION=' | awk -F'=' '{ print $2 }' | tr -d '"')"
# 如果 VERSION 为空,则使用 BUILD_ID 填充
if [ -z "$os_version" ]; then
os_version=$(cat /etc/os-release | grep -E 'BUILD_ID=' | awk -F'=' '{ print $2 }' | tr -d '"')
fi
# 分割版本号
IFS='.' read -ra version_parts <<<"$os_version"
# 提取主版本号和次版本号
major_version=${version_parts[0]}
minor_version=${version_parts[1]}
if [ -z "$minor_version" ]; then
minor_version=0
fi
# 通过 SHA384 文件来判断是否需要更新
wget "$base_url/basic/versions/8/16/$architecture/$major_version/$minor_version/-1/0/" -O "$appVer_path" 2>&1
n_sha384=$(jq -r '.["\uD83E\uDD93"].Downloads[0].SHA384' "$appVer_path")
downloads_url=$(jq -r '.["\uD83E\uDD93"].Downloads[0].DownloadUrl' "$appVer_path")
# 检查 SHA384 值是否为空
if [ "$n_sha384" = "" ]; then
zenity --info --text="未知的最新版本 Hash:$n_sha384!" --width=300
exit 500
fi
sleep 1
#本地版本 Hash
o_sha384=$(cat "AppVer")
if [ -e "AppVer" ]; then
if [ "${o_sha384,,}" = "${n_sha384,,}" ]; then
Show_Run "已是最新版本,是否启动程序?"
exit 0
fi
fi
}
Download_File() {
# 删除旧的文件
rm -rf $tar_path
title="安装"
# 检查 o_sha384 是否为空
if [ -z "$o_sha384" ]; then
title="安装"
else
title="更新"
fi
for i in {1..3}; do
#下载文件到目标目录
wget "$downloads_url" -O "$tar_path" 2>&1 | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# 下载中 \2\/s, 剩余时间: \3/' | zenity --progress --title="$title Watt Toolkit" --auto-close --width=500
RUNNING=0
while [ $RUNNING -eq 0 ]; do
if [ -z "$(pidof zenity)" ]; then
pkill wget
RUNNING=1
fi
sleep 0.1
done
sleep 1
# 校验下载文件 Hash
actual_hash=$(sha384sum "$tar_name" | awk '{ print $1 }')
if [ "${actual_hash,,}" = "${n_sha384,,}" ]; then
rm "AppVer"
echo "${actual_hash,,}" >>"$base_path/AppVer"
break 2
fi
if [ "$i" -ge "3" ]; then
zenity --error --text="下载错误。" --width=500
exit 1
fi
done
}
Kill_Process() {
# 尝试的次数
Kill_MAX_RETRIES=3
# 循环尝试终止进程
for process_name in "${PROCESS_NAMES[@]}"; do
kill_retry=1
while [ $kill_retry -le $Kill_MAX_RETRIES ]; do
pid=$(pgrep "$process_name")
if [ -n "$pid" ]; then
echo "尝试 $kill_retry: 进程 $process_name 正在运行中。正在终止..."
kill $pid
sleep 2
else
break
fi
kill_retry=$((kill_retry + 1))
done
done
for process_name in "${PROCESS_NAMES[@]}"; do
# 检查是否成功终止进程
if pgrep -x "$process_name" >/dev/null; then
echo "无法终止程序 $process_name。尝试次数已达上限。"
exit 1
else
echo "程序 $process_name 已成功终止。"
fi
done
}
Decompression() {
echo "开始解压更新。"
# 使用 zenity 显示进度条对话框,并将解压命令输出重定向到文件
tar -xzvf "$tar_name" 2>&1 |
zenity --progress \
--title="安装中" \
--text="正在解压 $tar_name..." \
--percentage=20 \
--auto-close \
--width=500
# 删除本地版本缓存
rm -f "$appVer_path" &>/dev/null
dotnet_path="$base_path/dotnet"
dotnet_exec="$dotnet_path/dotnet"
if [ -x "$dotnet_exec" ]; then
echo "文件具有执行权限。"
else
chmod +x "$dotnet_exec"
fi
rm "$base_path/start.sh"
rm "$base_path/Steam++"
echo "#!/bin/bash
run_path=\$(dirname \"\$0\")
dotnet_path=\"\$run_path/dotnet\"
dotnet_exec=\"\$dotnet_path/dotnet\"
export DOTNET_ROOT=\"\$dotnet_path\"
link_exec=\"\$run_path/Steam++\"
# 判断符号链接是否存在
if [ ! -L \"\$link_exec\" ]; then
echo \"创建符号链接 \$dotnet_exec 到 \$link_exec\"
ln -s \"\$dotnet_exec\" \"\$link_exec\"
else
echo \"符号链接 \$link_exec 已存在\"
fi
\"\$link_exec\" \"\$run_path/assemblies/Steam++.dll\" \"\$@\"
exit" >"$base_path/$exec_name.sh"
chmod +x "$base_path/$exec_name.sh"
}
#先安装依赖;
Install_certutil
Install_zenity
#版本检查更新;
Get_NewVer
# 使用条件判断来检查文件是否存在
if [ -f "$tar_path" ]; then
#如果本地存在文件与新版本计算 Hash 避免重复下载;
temp_hash=$(sha384sum "$tar_path" | awk '{ print $1 }')
if [ "${temp_hash,,}" != "${n_sha384,,}" ]; then
#下载文件
Download_File
else
rm "$base_path/AppVer"
#版本号是最新缓存 输出到文件
echo "${temp_hash,,}" >>"$base_path/AppVer"
zenity --question --text="本地已有最新安装包是否继续解压?" --width=400
# 获取上一个命令的退出码
response=$?
if [ $response -eq 0 ]; then
echo "继续解压"
else
# 用户点击了 "关闭" 按钮,退出脚本
exit 0
fi
fi
else
#下载文件
Download_File
fi
#解压前尝试杀死旧版本进程
Kill_Process
#解压
Decompression
# xdg-icon-resource install "$base_path/Icons/Watt-Toolkit.png" --size 128 Watt-Toolkit
#添加桌面文件
rm -rf "$HOME/Desktop/Watt Toolkit.desktop" 2>/dev/null
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Watt Toolkit
Exec=$base_path/$exec_name.sh
Icon=$base_path/Icons/Watt-Toolkit.png
Terminal=false
Type=Application
StartupNotify=false" >"$HOME/Desktop/Watt Toolkit.desktop"
chmod +x "$HOME/Desktop/Watt Toolkit.desktop"
# update-desktop-database ~/.local/share/applications
#运行程序
Show_Run "下载安装完成,是否启动程序?"
exit 0
# 判断是否提供了 Build_Mode 参数
if [ -z "$1" ]; then
Build_Mode="any" # 如果没有提供参数,则设置默认值为 "any"
else
Build_Mode="$1"
fi
Base_Path="/Users/moxiansheng/Documents/GitHub/SteamTools"
App_Path="$Base_Path/src/BD.WTTS.Client.Avalonia.App"
Publish_Path="bin/Release/Publish/assemblies"
Plugins_Release_Path="bin/Release"
App_Modules_Path="$App_Path/$Publish_Path/modules"
echo "编译主程序"
cd "$App_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos -p:CreatePackage=false
rm -r "$App_Modules_Path"
mkdir -p "$App_Modules_Path"
echo "编译插件"
#复制插件
Copy_Plugins() {
local Plugins_Folder=$1
local Plugins_Folder_Name=$2
local Plugins_FileName=$3
mkdir -p "$App_Modules_Path/$Plugins_Folder_Name"
cp -r "$Plugins_Folder/$Plugins_FileName" "$App_Modules_Path/$Plugins_Folder_Name/$Plugins_FileName"
}
echo "编译加速插件"
Plugins_Accelerator_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Accelerator"
cd "$Plugins_Accelerator_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "Accelerator" "BD.WTTS.Client.Plugins.Accelerator.dll"
Plugins_Accelerator_ReverseProxy_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy"
cd "$Plugins_Accelerator_ReverseProxy_Path"
# 根据 Build_Mode 执行不同逻辑
if [ "$Build_Mode" = "any" ]; then
dotnet publish -c Release -p:PublishDir="$Publish_Path/arm64" -f net7.0 -r osx-arm64 -p:PublishSingleFile=true --self-contained
dotnet publish -c Release -p:PublishDir="$Publish_Path/x64" -f net7.0 -r osx-x64 -p:PublishSingleFile=true --self-contained
lipo -create "$Publish_Path/arm64/Steam++.Accelerator" "$Publish_Path/x64/Steam++.Accelerator" -output "$Publish_Path/Steam++.Accelerator"
Copy_Plugins "$Publish_Path" "Accelerator" "Steam++.Accelerator"
elif [ "$Build_Mode" = "arm64" ]; then
dotnet publish -c Release -p:PublishDir="$Publish_Path/arm64" -f net7.0 -r osx-arm64 -p:PublishSingleFile=true --self-contained
Copy_Plugins "$Publish_Path/arm64" "Accelerator" "Steam++.Accelerator"
elif [ "$Build_Mode" = "x64" ]; then
dotnet publish -c Release -p:PublishDir="$Publish_Path/x64" -f net7.0 -r osx-x64 -p:PublishSingleFile=true --self-contained
Copy_Plugins "$Publish_Path/x64" "Accelerator" "Steam++.Accelerator"
fi
echo "编译令牌插件"
Plugins_Authenticator_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Authenticator"
cd "$Plugins_Authenticator_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "Authenticator" "BD.WTTS.Client.Plugins.Authenticator.dll"
echo "编译账户插件"
Plugins_GameAccount_Path="$Base_Path/src/BD.WTTS.Client.Plugins.GameAccount"
cd "$Plugins_GameAccount_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "GameAccount" "BD.WTTS.Client.Plugins.GameAccount.dll"
echo "编译游戏库插件"
Plugins_GameList_Path="$Base_Path/src/BD.WTTS.Client.Plugins.GameList"
cd "$Plugins_GameList_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "GameList" "BD.WTTS.Client.Plugins.GameList.dll"
echo "复制插件到程序目录"
cd "$App_Path"
# 根据 Build_Mode 执行不同逻辑
if [ "$Build_Mode" = "any" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/MonoBundle"
elif [ "$Build_Mode" = "arm64" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents/MonoBundle"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Info.plist" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents"
elif [ "$Build_Mode" = "x64" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/osx-x64/Steam++.app/Contents/MonoBundle"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net7.0-macos/osx-x64/Steam++.app/Contents"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Info.plist" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents"
fi
......@@ -171,7 +171,7 @@
{
"TypeName": "string",
"PropertyName": "WindowBackgroundCustomImagePath",
"DefaultValue": "\"/UI/Assets/back.png\"",
"DefaultValue": "\"avares://BD.WTTS.Client.Avalonia/UI/Assets/back.png\"",
"DefaultValueIsConst": true,
"Summary": "自定义背景图像路径",
"IsRegionOrEndregion": null,
......@@ -203,6 +203,15 @@
"Summary": "",
"IsRegionOrEndregion": false,
"IsValueType": null
},
{
"TypeName": "HashSet<string>",
"PropertyName": "SortMenuTabs",
"DefaultValue": "null",
"DefaultValueIsConst": true,
"Summary": "菜单排序",
"IsRegionOrEndregion": null,
"IsValueType": null
}
],
"Usings": ""
......@@ -256,6 +265,15 @@
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "bool",
"PropertyName": "MessagePopupNotification",
"DefaultValue": "true",
"DefaultValueIsConst": true,
"Summary": "启用消息推送通知",
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "bool",
"PropertyName": "GameListUseLocalCache",
......@@ -318,6 +336,114 @@
"Summary": "禁用插件",
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "bool",
"PropertyName": "PluginSafeMode",
"DefaultValue": "true",
"DefaultValueIsConst": true,
"Summary": "插件安全模式",
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "DateTimeOffset",
"PropertyName": "LastLookNoticeDateTime",
"DefaultValue": "default",
"DefaultValueIsConst": false,
"Summary": "最后查看通知时间",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "",
"PropertyName": "",
"DefaultValue": "",
"DefaultValueIsConst": true,
"Summary": "配置应用程序的 Web 代理",
"IsRegionOrEndregion": true,
"IsValueType": null
},
{
"TypeName": "AppWebProxyMode",
"PropertyName": "WebProxyMode",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 代理模式",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "string",
"PropertyName": "CustomWebProxyModeHost",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 Host",
"IsRegionOrEndregion": null,
"IsValueType": false
},
{
"TypeName": "int",
"PropertyName": "CustomWebProxyModePort",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 Port",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "string",
"PropertyName": "CustomWebProxyModeAddress",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 Address",
"IsRegionOrEndregion": null,
"IsValueType": false
},
{
"TypeName": "bool",
"PropertyName": "CustomWebProxyModeBypassOnLocal",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 BypassOnLocal",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "string",
"PropertyName": "CustomWebProxyModeCredentialUserName",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 NetworkCredential.UserName",
"IsRegionOrEndregion": null,
"IsValueType": false
},
{
"TypeName": "string",
"PropertyName": "CustomWebProxyModeCredentialPassword",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 NetworkCredential.Password",
"IsRegionOrEndregion": null,
"IsValueType": false
},
{
"TypeName": "string",
"PropertyName": "CustomWebProxyModeCredentialDomain",
"DefaultValue": "default",
"DefaultValueIsConst": true,
"Summary": "Web 自定义代理 NetworkCredential.Domain",
"IsRegionOrEndregion": null,
"IsValueType": false
},
{
"TypeName": "",
"PropertyName": "",
"DefaultValue": "",
"DefaultValueIsConst": true,
"Summary": "",
"IsRegionOrEndregion": false,
"IsValueType": null
}
],
"Usings": ""
......@@ -378,6 +504,15 @@
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "GridLayoutType",
"PropertyName": "GameLibraryLayoutType",
"DefaultValue": "GridLayoutType.Grid",
"DefaultValueIsConst": true,
"Summary": "库存游戏展示布局",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "bool",
"PropertyName": "GameCloudArchiveFilter",
......@@ -454,7 +589,7 @@
{
"TypeName": "string",
"PropertyName": "SteamProgramPath",
"DefaultValue": "Ioc.Get<ISteamService>().SteamProgramPath",
"DefaultValue": "null",
"DefaultValueIsConst": false,
"Summary": "Steam 默认程序路径",
"IsRegionOrEndregion": null,
......@@ -501,7 +636,7 @@
"PropertyName": "IsRunSteamVGUI",
"DefaultValue": "false",
"DefaultValueIsConst": true,
"Summary": "Steam 以旧版VGUI启动",
"Summary": "Steam 以旧版 VGUI 启动",
"IsRegionOrEndregion": null,
"IsValueType": null
},
......
......@@ -60,7 +60,7 @@
* [Xamarin.Essentials](https://github.com/xamarin/essentials)
* [Xamarin.Forms](https://github.com/xamarin/Xamarin.Forms)
* [Open Source Components for Xamarin](https://github.com/xamarin/XamarinComponents)
* [Google Play Services / Firebase / ML Kit for Xamarin.Android](https://github.com/xamarin/GooglePlayServicesComponents)
* [GooglePlayServicesComponents](https://github.com/xamarin/GooglePlayServicesComponents)
* [Picasso](https://github.com/square/picasso)
* [OkHttp](https://github.com/square/okhttp)
* [Material Components for Android](https://github.com/material-components/material-components-android)
......
Subproject commit 1fb8d0397ee26dc43ba858f9d08f22dbe0fe0753
Subproject commit c4b9002eb4b20cd5a7cc4223f9a440ffcaf960e9
Subproject commit 69542c85f5542e653ccccf6663c0f030702f1870
Subproject commit 5e73ea70e3a0400eaa96641d4cc9d84cf0d1e784
Subproject commit 9575c0404b6e503077c548c943abc032f66d33a1
Subproject commit 222cdce33d7bdcc4626f140e774723958913f8fe
Subproject commit 297d40f7797292a189b578399adb4cc713657780
Subproject commit e025d561ddcb005b35f1dd82a1a1efaf430cc29b
Subproject commit 684e85f2c1a34d97843f819c4be38eb99f43a6c5
Subproject commit ec6403f7ea3decaaf7443ad5b1c2f8ffc0e7d7c8
Subproject commit 25664ed6eaa7873539a131df40036d882b1529be
Subproject commit 8da76f06be1d08d7160776731559f730e3c0f33e
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。