diff --git a/.github/workflows/debug.yml.disabled b/.github/workflows/debug.yml.disabled
new file mode 100644
index 00000000..4db1947b
--- /dev/null
+++ b/.github/workflows/debug.yml.disabled
@@ -0,0 +1,13 @@
+name: CI
+on: [push]
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+ - name: Setup tmate session
+ uses: mxschmitt/action-tmate@v3
\ No newline at end of file
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 00000000..7c978b31
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,59 @@
+name: deploy
+on:
+ push:
+ branches: [dev, main, master]
+ pull_request:
+ branches: [dev, main, master]
+
+env:
+ version: 1.1.0.0
+
+jobs:
+ deploy-to-tencent-cos:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+ - name: Setup dotnet-script
+ run: dotnet tool install --global dotnet-script
+ - name: Pre-Process
+ run: dotnet script .github/preProcess/MauiEnvConfig.csx
+ - name: Install Workloads
+ run: dotnet workload install maui-windows
+ - name: Create Folders need
+ run: |
+ mkdir D:\a\installer
+ mkdir D:\a\publish
+ - name: Copy THUAI7
+ run: Copy-Item -recurse D:\a\THUAI7\THUAI7\ D:\a\mirror\
+ - name: Test
+ run: tree D:\a\mirror
+ - name: Remove directories not needed
+ run: |
+ Remove-Item -recurse -force D:\a\mirror\.git
+ Remove-Item -recurse D:\a\mirror\.github
+ Remove-Item -recurse D:\a\mirror\installer
+ Remove-Item -recurse D:\a\mirror\interface
+ Remove-Item -recurse D:\a\mirror\logic
+ - name: Build Server
+ run: |
+ mkdir D:\a\mirror\logic
+ dotnet build "./logic/Server/Server.csproj" -o "D:\a\mirror\logic\Server" -p:WindowsAppSDKSelfContained=true -c Release
+ - name: Build Client
+ run: dotnet publish "./logic/Client/Client.csproj" -o "D:\a\mirror\logic\Client" -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true
+ - name: Deploy to bucket
+ run: dotnet run --project "./dependency/deploy/deploy.csproj" ${{ secrets.INSTALLER_COS_SECRET_ID }} ${{ secrets.INSTALLER_COS_SECRET_KEY }}
+ - name: Get installer package(No Key contained for safety)
+ run: |
+ $version=Get-ChildItem -Path D:\a\publish | ForEach-Object { $_.name }
+ [Environment]::SetEnvironmentVariable("version", $version, "Machine")
+ dotnet publish "./installer/installer.csproj" -o "D:\a\installer" -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true
+ ./dependency/7z/7za.exe a -r D:\a\publish\Installer_v${version}.zip D:\a\installer\*
+ - name: Upload installer package
+ uses: actions/upload-artifact@v4
+ with:
+ name: Installer_v${{ env.version }}.zip
+ path: D:\a\publish\Installer_v${{ env.version }}.zip
diff --git a/dependency/7z/7za.dll b/dependency/7z/7za.dll
new file mode 100644
index 00000000..b19a1304
Binary files /dev/null and b/dependency/7z/7za.dll differ
diff --git a/dependency/7z/7za.exe b/dependency/7z/7za.exe
new file mode 100644
index 00000000..383d8e30
Binary files /dev/null and b/dependency/7z/7za.exe differ
diff --git a/dependency/deploy/BaseViewModel.cs b/dependency/deploy/BaseViewModel.cs
new file mode 100644
index 00000000..d8d0256f
--- /dev/null
+++ b/dependency/deploy/BaseViewModel.cs
@@ -0,0 +1,117 @@
+using System;
+using System.ComponentModel;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Globalization;
+using System.Windows.Input;
+using System.Runtime.CompilerServices;
+
+namespace installer.ViewModel
+{
+ public abstract class NotificationObject : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler? PropertyChanged;
+ ///
+ ///announce notification
+ ///
+ ///property name
+ public virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+ ///
+ ///BaseCommand
+ ///
+ public class BaseCommand : ICommand
+ {
+ private Func