mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-21 09:45:48 +08:00
使用产品版本号,本地版本号改成0.0.1
This commit is contained in:
369
.github/workflows/publish.yml
vendored
Normal file
369
.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,369 @@
|
||||
name: BetterGI Publish
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'BetterGI Version (eg: v0.35.1, v0.36.5-alpha.1)'
|
||||
required: true
|
||||
type: string
|
||||
kachina-channel:
|
||||
type: choice
|
||||
description: 'Kachina Installer Channel'
|
||||
required: true
|
||||
default: 'release'
|
||||
options:
|
||||
- release
|
||||
- dev
|
||||
push:
|
||||
tags:
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+*'
|
||||
|
||||
jobs:
|
||||
# Add validation job to check version format
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.set-version.outputs.version }}
|
||||
steps:
|
||||
- name: Set version from input or tag
|
||||
id: set-version
|
||||
run: |
|
||||
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
||||
# Validate manual input version format
|
||||
if ! [[ "${{ github.event.inputs.version }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$ ]]; then
|
||||
echo "Error: Version must follow semantic versioning (e.g., 1.2.3, 1.2.3-alpha, 1.2.3+build.123)"
|
||||
exit 1
|
||||
fi
|
||||
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
# Extract version from tag name (remove 'v' prefix)
|
||||
VERSION=${GITHUB_REF#refs/tags/v}
|
||||
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
build_web_map_editor:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: huiyadanli/bettergi-map
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'npm'
|
||||
- run: npm install
|
||||
- run: npm run build:single
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: web_map_editor
|
||||
path: dist/
|
||||
|
||||
build_web_scripts_list:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: huiyadanli/bettergi-scripts-web
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'npm'
|
||||
- run: npm install
|
||||
- run: npm run build:single
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: web_scripts_list
|
||||
path: dist/
|
||||
|
||||
build_dist:
|
||||
runs-on: windows-latest
|
||||
needs: [validate, build_web_map_editor, build_web_scripts_list]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: babalae/better-genshin-impact
|
||||
- uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: 8.x
|
||||
- name: Cache NuGet packages
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('**/BetterGenshinImpact.csproj') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-nuget-
|
||||
- name: 🛠️ Build application
|
||||
run: dotnet publish BetterGenshinImpact/BetterGenshinImpact.csproj -c Release -p:PublishProfile=FolderProfile -p:Version=${{ needs.validate.outputs.version }}
|
||||
continue-on-error: true
|
||||
- name: 🧹 Clear & Move Files
|
||||
run: |
|
||||
$sourceDir = ".\BetterGenshinImpact\bin\x64\Release\net8.0-windows10.0.22621.0\publish\win-x64"
|
||||
Get-ChildItem -Path $sourceDir -Recurse -Filter "*.lib" | Remove-Item -Force
|
||||
Get-ChildItem -Path $sourceDir -Recurse -Filter "*ffmpeg*.dll" | Remove-Item -Force
|
||||
Get-ChildItem -Path $sourceDir -Recurse -Filter "*.pdb" | Remove-Item -Force
|
||||
New-Item -Path "dist/BetterGI" -ItemType Directory
|
||||
xcopy "$sourceDir\*" ".\dist\BetterGI\" /E /H /I /Y
|
||||
# 下载前面构建好的web内容
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: web_map_editor
|
||||
path: dist/BetterGI/Assets/Map/Editor
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: web_scripts_list
|
||||
path: dist/BetterGI/Assets/Web/ScriptRepo
|
||||
# 下载构建 repo 的内容补充数据
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: babalae/bettergi-publish
|
||||
path: publish
|
||||
- name: 🗜️ Extract Map
|
||||
run: |
|
||||
cd publish
|
||||
# Extract zst files
|
||||
Get-ChildItem -Filter *.zst | ForEach-Object {
|
||||
if ($_.PSIsContainer -eq $false) {
|
||||
$file = $_.Name
|
||||
$output_file = "..\dist\BetterGI\Assets\Map\$($file -replace '.zst$', '')"
|
||||
& zstd -d $file -o $output_file
|
||||
Write-Host "$file -> $output_file"
|
||||
}
|
||||
}
|
||||
# Extract zip files
|
||||
Get-ChildItem -Filter *.zip | ForEach-Object {
|
||||
if ($_.PSIsContainer -eq $false) {
|
||||
$file = $_.FullName
|
||||
$destination = "..\dist\BetterGI\Assets\Map"
|
||||
Expand-Archive -Path $file -DestinationPath $destination -Force
|
||||
Write-Host "$file -> $destination"
|
||||
}
|
||||
}
|
||||
# 生成更新器
|
||||
- name: 📥 Download kachina-builder release
|
||||
if: ${{ github.event.inputs.kachina-channel == 'release' }}
|
||||
uses: robinraju/release-downloader@v1.8
|
||||
with:
|
||||
repository: "YuehaiTeam/kachina-installer"
|
||||
latest: true
|
||||
fileName: "kachina-builder.exe"
|
||||
|
||||
- name: 📥 Download kachina-builder dev
|
||||
if: ${{ github.event.inputs.kachina-channel == 'dev' }}
|
||||
uses: dawidd6/action-download-artifact@v8
|
||||
with:
|
||||
github_token: ${{secrets.GITHUB_TOKEN}}
|
||||
repo: "YuehaiTeam/kachina-installer"
|
||||
workflow: "build.yml"
|
||||
name: artifact
|
||||
branch: main
|
||||
event: push
|
||||
workflow_conclusion: success
|
||||
- name: 📦 Gen Updater by kachina-builder
|
||||
run: |
|
||||
cd dist
|
||||
..\kachina-builder.exe pack -c ..\publish\kachina.config.json -o BetterGI/BetterGI.update.exe
|
||||
# 打包上传
|
||||
- name: 📦 Generate archive
|
||||
run: |
|
||||
cd dist
|
||||
7z a "BetterGI_v${{ needs.validate.outputs.version }}.7z" BetterGI -t7z -mx=5 -mf=BCJ2 -r -y
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: BetterGI_7z
|
||||
path: dist/BetterGI_*.7z
|
||||
|
||||
build_installer:
|
||||
runs-on: windows-latest
|
||||
needs: [build_dist]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: BetterGI_7z
|
||||
path: dist
|
||||
- name: Unpack BetterGI_*.7z
|
||||
run: |
|
||||
cd dist
|
||||
7z x "BetterGI_v${{ needs.validate.outputs.version }}.7z"
|
||||
- name: 📥 Download kachina-builder release
|
||||
if: ${{ github.event.inputs.kachina-channel == 'release' }}
|
||||
uses: robinraju/release-downloader@v1.8
|
||||
with:
|
||||
repository: "YuehaiTeam/kachina-installer"
|
||||
latest: true
|
||||
fileName: "kachina-builder.exe"
|
||||
- name: 📥 Download kachina-builder dev
|
||||
if: ${{ github.event.inputs.kachina-channel == 'dev' }}
|
||||
uses: dawidd6/action-download-artifact@v8
|
||||
with:
|
||||
github_token: ${{secrets.GITHUB_TOKEN}}
|
||||
repo: "YuehaiTeam/kachina-installer"
|
||||
workflow: "build.yml"
|
||||
name: artifact
|
||||
branch: main
|
||||
event: push
|
||||
workflow_conclusion: success
|
||||
- name: 📥 Download last release
|
||||
uses: robinraju/release-downloader@v1.8
|
||||
with:
|
||||
repository: "babalae/better-genshin-impact"
|
||||
latest: true
|
||||
fileName: "BetterGI_v*.7z"
|
||||
out-file-path: 'last'
|
||||
- name: 📥 Get 2nd and 3rd release
|
||||
id: release_tags
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
$releasesUrl = "https://api.github.com/repos/babalae/better-genshin-impact/releases"
|
||||
$headers = @{
|
||||
"Authorization" = "Bearer $env:GITHUB_TOKEN"
|
||||
"Accept" = "application/vnd.github.v3+json"
|
||||
}
|
||||
$releases = Invoke-RestMethod -Uri $releasesUrl -Headers $headers -Method Get
|
||||
$validReleases = $releases |
|
||||
Where-Object { -not $_.draft -and -not $_.prerelease } |
|
||||
Sort-Object { [DateTime]$_.published_at } -Descending
|
||||
if ($validReleases.Count -lt 3) {
|
||||
Write-Error "至少需要 3 个正式 Release(当前找到 $($validReleases.Count) 个)"
|
||||
exit 1
|
||||
}
|
||||
"second_release_tag=$($validReleases[1].tag_name)" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
|
||||
"third_release_tag=$($validReleases[2].tag_name)" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
|
||||
|
||||
- name: 📥 Download 2nd last release
|
||||
uses: robinraju/release-downloader@v1.8
|
||||
with:
|
||||
repository: "babalae/better-genshin-impact"
|
||||
tag: ${{ steps.release_tags.outputs.second_release_tag }}
|
||||
fileName: "BetterGI_v*.7z"
|
||||
out-file-path: '2nd'
|
||||
- name: 📥 Download 3rd last release
|
||||
uses: robinraju/release-downloader@v1.8
|
||||
with:
|
||||
repository: "babalae/better-genshin-impact"
|
||||
tag: ${{ steps.release_tags.outputs.third_release_tag }}
|
||||
fileName: "BetterGI_v*.7z"
|
||||
out-file-path: '3rd'
|
||||
- name: Unpack releases
|
||||
run: |
|
||||
cd last
|
||||
7z x "BetterGI*.7z" -otemp
|
||||
if (Test-Path -Path ".\temp\BetterGI" -PathType Container) {
|
||||
Move-Item -Path ".\temp\BetterGI" -Destination ".\BetterGI"
|
||||
} else {
|
||||
Rename-Item -Path ".\temp" -NewName ".\BetterGI"
|
||||
}
|
||||
cd ..
|
||||
cd 2nd
|
||||
7z x "BetterGI*.7z" -otemp
|
||||
if (Test-Path -Path ".\temp\BetterGI" -PathType Container) {
|
||||
Move-Item -Path ".\temp\BetterGI" -Destination ".\BetterGI"
|
||||
} else {
|
||||
Rename-Item -Path ".\temp" -NewName ".\BetterGI"
|
||||
}
|
||||
cd ..
|
||||
cd 3rd
|
||||
7z x "BetterGI*.7z" -otemp
|
||||
if (Test-Path -Path ".\temp\BetterGI" -PathType Container) {
|
||||
Move-Item -Path ".\temp\BetterGI" -Destination ".\BetterGI"
|
||||
} else {
|
||||
Rename-Item -Path ".\temp" -NewName ".\BetterGI"
|
||||
}
|
||||
cd ..
|
||||
ls .\last
|
||||
ls .\2nd
|
||||
ls .\3rd
|
||||
- name: 📦 Pack kachina-builder
|
||||
run: |
|
||||
cd dist
|
||||
..\kachina-builder.exe gen -j 6 -i BetterGI -m metadata.json -o hashed -r babalae/bettergi -t ${{ needs.validate.outputs.version }} --diff-vers ..\last\BetterGI --diff-vers ..\2nd\BetterGI --diff-vers ..\3rd\BetterGI --diff-ignore *[.txt,.onnx] -u .\BetterGI\BetterGI.update.exe
|
||||
..\kachina-builder.exe pack -c ../kachina.config.json -m metadata.json -d hashed -o BetterGI.Install.${{ needs.validate.outputs.version }}.exe
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: BetterGI_Install
|
||||
path: dist/BetterGI.Install.*.exe
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: BetterGI_Metadata
|
||||
path: dist/metadata.json
|
||||
|
||||
build_setup:
|
||||
runs-on: windows-latest
|
||||
needs: [build_dist]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: BetterGI_7z
|
||||
path: dist
|
||||
- name: Unpack BetterGI_*.7z & Repack
|
||||
run: |
|
||||
cd dist
|
||||
7z x "BetterGI_v${{ needs.validate.outputs.version }}.7z"
|
||||
cd BetterGI
|
||||
7z a -t7z "..\..\publish.7z" *
|
||||
- name: 📥 Download MicaSetup
|
||||
uses: robinraju/release-downloader@v1.8
|
||||
with:
|
||||
repository: "lemutec/MicaSetup"
|
||||
latest: true
|
||||
fileName: "MicaSetup_v*.7z"
|
||||
- name: 📦 Pack MicaSetup
|
||||
run: |
|
||||
$archiveFiles = Get-ChildItem -Path . -Filter "MicaSetup_v*.7z"
|
||||
foreach ($archive in $archiveFiles) {
|
||||
& 7z x $archive.FullName
|
||||
}
|
||||
.\makemica.exe micasetup.json
|
||||
ren BetterGI_Setup.exe BetterGI_Setup_v${{ needs.validate.outputs.version }}.exe
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: BetterGI_Setup
|
||||
path: BetterGI_Setup*.exe
|
||||
|
||||
mirrorchyan_uploading:
|
||||
if: github.repository_owner == 'babalae'
|
||||
needs: [build_dist, build_installer]
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: downloads
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract 7z
|
||||
shell: bash
|
||||
run: |
|
||||
cd downloads/BetterGI_7z
|
||||
7z x BetterGI_v*.7z -oun7z
|
||||
mv ../BetterGI_Metadata/metadata.json ./un7z/BetterGI/.metadata.json
|
||||
|
||||
- name: Upload Zip
|
||||
uses: MirrorChyan/uploading-action@v1
|
||||
with:
|
||||
filetype: local
|
||||
mirrorchyan_rid: BGI
|
||||
working-directory: downloads/BetterGI_7z/un7z/
|
||||
pick_files: '["BetterGI"]'
|
||||
version_name: ${{ needs.validate.outputs.version }}
|
||||
upload_token: ${{ secrets.MirrorChyanUploadToken }}
|
||||
auto_channel: false
|
||||
channel: beta
|
||||
|
||||
- name: Upload Install.exe
|
||||
uses: MirrorChyan/uploading-action@v1
|
||||
with:
|
||||
filetype: local
|
||||
mirrorchyan_rid: BGI
|
||||
working-directory: downloads/BetterGI_Install/
|
||||
filename: "BetterGI.Install.*.exe"
|
||||
extra_zip: true
|
||||
version_name: ${{ needs.validate.outputs.version }}
|
||||
upload_token: ${{ secrets.MirrorChyanUploadToken }}
|
||||
auto_channel: false
|
||||
channel: beta
|
||||
os: win
|
||||
arch: x64
|
||||
@@ -1,6 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<AssemblyName>BetterGI</AssemblyName>
|
||||
<Version>0.0.1</Version>
|
||||
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -9,8 +12,6 @@
|
||||
<LangVersion>12.0</LangVersion>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ApplicationIcon>Assets\Images\logo.ico</ApplicationIcon>
|
||||
<AssemblyName>BetterGI</AssemblyName>
|
||||
<AssemblyVersion>0.45.0</AssemblyVersion>
|
||||
<Platforms>x64</Platforms>
|
||||
<DebugType>embedded</DebugType>
|
||||
</PropertyGroup>
|
||||
@@ -67,6 +68,7 @@
|
||||
<PackageReference Include="Sdcb.PaddleInference.runtime.win64.openblas" Version="2.6.1" />
|
||||
<PackageReference Include="Sdcb.PaddleOCR" Version="2.7.0.3" />
|
||||
<PackageReference Include="Sdl.MultiSelectComboBox" Version="1.0.103" />
|
||||
<PackageReference Include="Semver" Version="3.0.0" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.RichTextBoxEx.Wpf" Version="1.1.0.1" />
|
||||
|
||||
@@ -3,12 +3,15 @@ using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Semver;
|
||||
|
||||
namespace BetterGenshinImpact.Core.Config;
|
||||
|
||||
public class Global
|
||||
{
|
||||
public static string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version!.ToString(3);
|
||||
public static string Version { get; } = Assembly.GetEntryAssembly()?.
|
||||
GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.
|
||||
InformationalVersion!;
|
||||
|
||||
public static string StartUpPath { get; set; } = AppContext.BaseDirectory;
|
||||
|
||||
@@ -59,10 +62,10 @@ public class Global
|
||||
{
|
||||
try
|
||||
{
|
||||
Version oldVersionX = new(oldVersion);
|
||||
Version currentVersionX = new(currentVersion);
|
||||
var oldVersionX = SemVersion.Parse(oldVersion);
|
||||
var currentVersionX = SemVersion.Parse(currentVersion);
|
||||
|
||||
if (currentVersionX > oldVersionX)
|
||||
if (currentVersionX.CompareSortOrderTo(oldVersionX) > 0)
|
||||
// 需要更新
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -47,11 +47,12 @@ public class UpdateService : IUpdateService
|
||||
{
|
||||
try
|
||||
{
|
||||
#if DEBUG && true
|
||||
return;
|
||||
#endif
|
||||
string newVersion = await GetLatestVersionAsync();
|
||||
|
||||
// #if DEBUG && true
|
||||
// newVersion = "256.256.256.256";
|
||||
// #endif
|
||||
|
||||
|
||||
if (string.IsNullOrWhiteSpace(newVersion))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user