撤销操作
This commit is contained in:
@@ -1,234 +0,0 @@
|
|||||||
name: Build and Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main, beta ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ main, beta ]
|
|
||||||
release:
|
|
||||||
types: [ published ]
|
|
||||||
|
|
||||||
env:
|
|
||||||
DOTNET_VERSION: '4.7.2'
|
|
||||||
PROJECT_PATH: 'Ink Canvas'
|
|
||||||
INNO_SETUP_VERSION: '6.2.2'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: windows-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- platform: 'x86'
|
|
||||||
runtime: 'win-x86'
|
|
||||||
configuration: 'Release'
|
|
||||||
arch_suffix: 'x86'
|
|
||||||
- platform: 'x64'
|
|
||||||
runtime: 'win-x64'
|
|
||||||
configuration: 'Release'
|
|
||||||
arch_suffix: 'x64'
|
|
||||||
- platform: 'ARM64'
|
|
||||||
runtime: 'win-arm64'
|
|
||||||
configuration: 'Release'
|
|
||||||
arch_suffix: 'arm64'
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup .NET Framework
|
|
||||||
uses: actions/setup-dotnet@v4
|
|
||||||
with:
|
|
||||||
dotnet-version: '4.7.2'
|
|
||||||
|
|
||||||
- name: Get version from project
|
|
||||||
id: get_version
|
|
||||||
run: |
|
|
||||||
$version = (Get-Content "${{ env.PROJECT_PATH }}/InkCanvasForClass.csproj" | Select-String '<Version>(.*)</Version>' | ForEach-Object { $_.Matches[0].Groups[1].Value })
|
|
||||||
echo "version=$version" >> $env:GITHUB_OUTPUT
|
|
||||||
echo "Version: $version"
|
|
||||||
|
|
||||||
- name: Restore NuGet packages
|
|
||||||
run: nuget restore "${{ env.PROJECT_PATH }}/InkCanvasForClass.csproj"
|
|
||||||
|
|
||||||
- name: Build solution
|
|
||||||
run: msbuild "${{ env.PROJECT_PATH }}/InkCanvasForClass.csproj" /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} /p:OutputPath=./publish/${{ matrix.platform }}/ /p:PublishUrl=./publish/${{ matrix.platform }}/
|
|
||||||
|
|
||||||
- name: Copy additional files
|
|
||||||
run: |
|
|
||||||
# 复制配置文件和其他必要文件
|
|
||||||
if (Test-Path "${{ env.PROJECT_PATH }}/InkCanvasForClass.exe.config") {
|
|
||||||
Copy-Item "${{ env.PROJECT_PATH }}/InkCanvasForClass.exe.config" -Destination "./publish/${{ matrix.platform }}/"
|
|
||||||
}
|
|
||||||
# 复制Resources文件夹
|
|
||||||
if (Test-Path "${{ env.PROJECT_PATH }}/Resources") {
|
|
||||||
Copy-Item "${{ env.PROJECT_PATH }}/Resources" -Destination "./publish/${{ matrix.platform }}/" -Recurse
|
|
||||||
}
|
|
||||||
# 复制其他必要文件
|
|
||||||
Copy-Item "${{ env.PROJECT_PATH }}/*.dll" -Destination "./publish/${{ matrix.platform }}/" -ErrorAction SilentlyContinue
|
|
||||||
Copy-Item "${{ env.PROJECT_PATH }}/*.json" -Destination "./publish/${{ matrix.platform }}/" -ErrorAction SilentlyContinue
|
|
||||||
|
|
||||||
- name: Install Inno Setup
|
|
||||||
if: matrix.platform != 'ARM64'
|
|
||||||
run: |
|
|
||||||
$url = "https://files.jrsoftware.org/is/6/innosetup-${{ env.INNO_SETUP_VERSION }}.exe"
|
|
||||||
$output = "innosetup.exe"
|
|
||||||
Invoke-WebRequest -Uri $url -OutFile $output
|
|
||||||
Start-Process -FilePath $output -ArgumentList "/SILENT" -Wait
|
|
||||||
echo "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" >> $env:GITHUB_PATH
|
|
||||||
|
|
||||||
- name: Create Inno Setup script for current architecture
|
|
||||||
if: matrix.platform != 'ARM64'
|
|
||||||
run: |
|
|
||||||
$scriptContent = @"
|
|
||||||
; 自动生成的 Inno Setup 脚本
|
|
||||||
#define MyAppName "InkCanvasForClass CE"
|
|
||||||
#define MyAppVersion "${{ steps.get_version.outputs.version }}"
|
|
||||||
#define MyAppPublisher "CJK_mkp"
|
|
||||||
#define MyAppURL "https://inkcanvasforclass.github.io"
|
|
||||||
#define MyAppExeName "InkCanvasForClass.exe"
|
|
||||||
#define MyAppAssocName MyAppName + ""
|
|
||||||
#define MyAppAssocExt ".exe"
|
|
||||||
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
|
|
||||||
|
|
||||||
[Setup]
|
|
||||||
AppId={{CA801226-FD02-4C78-BCF8-753B38E70CB3}
|
|
||||||
AppName={#MyAppName}
|
|
||||||
AppVersion={#MyAppVersion}
|
|
||||||
AppPublisher={#MyAppPublisher}
|
|
||||||
AppPublisherURL={#MyAppURL}
|
|
||||||
AppSupportURL={#MyAppURL}
|
|
||||||
AppUpdatesURL={#MyAppURL}
|
|
||||||
DefaultDirName={autopf}\{#MyAppName}
|
|
||||||
UninstallDisplayIcon={app}\{#MyAppExeName}
|
|
||||||
ChangesAssociations=yes
|
|
||||||
DefaultGroupName={#MyAppName}
|
|
||||||
AllowNoIcons=yes
|
|
||||||
PrivilegesRequiredOverridesAllowed=dialog
|
|
||||||
OutputDir=./installers
|
|
||||||
OutputBaseFilename=InkCanvasForClass-CE-${{ matrix.arch_suffix }}-Setup
|
|
||||||
SolidCompression=yes
|
|
||||||
WizardStyle=modern
|
|
||||||
ArchitecturesAllowed=x86 x64compatible
|
|
||||||
ArchitecturesInstallIn64BitMode=x64compatible
|
|
||||||
|
|
||||||
[Languages]
|
|
||||||
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
|
|
||||||
|
|
||||||
[Tasks]
|
|
||||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
|
||||||
|
|
||||||
[Files]
|
|
||||||
Source: "./publish/${{ matrix.platform }}\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "./publish/${{ matrix.platform }}\InkCanvasForClass.exe.config"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "./publish/${{ matrix.platform }}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
|
||||||
|
|
||||||
[Registry]
|
|
||||||
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
|
|
||||||
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
|
|
||||||
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
|
|
||||||
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
|
|
||||||
|
|
||||||
[Icons]
|
|
||||||
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
|
||||||
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
|
|
||||||
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
|
||||||
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
||||||
|
|
||||||
[Run]
|
|
||||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
|
||||||
"@
|
|
||||||
$scriptContent | Out-File -FilePath "installer-${{ matrix.platform }}.iss" -Encoding UTF8
|
|
||||||
|
|
||||||
- name: Create installer using Inno Setup
|
|
||||||
if: matrix.platform != 'ARM64'
|
|
||||||
run: |
|
|
||||||
mkdir -p ./installers
|
|
||||||
iscc installer-${{ matrix.platform }}.iss
|
|
||||||
|
|
||||||
- name: Create ARM64 portable package
|
|
||||||
if: matrix.platform == 'ARM64'
|
|
||||||
run: |
|
|
||||||
Compress-Archive -Path "./publish/${{ matrix.platform }}/*" -DestinationPath "./installers/InkCanvasForClass-CE-arm64-Portable.zip"
|
|
||||||
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: InkCanvas-${{ matrix.platform }}
|
|
||||||
path: |
|
|
||||||
./publish/${{ matrix.platform }}/
|
|
||||||
./installers/
|
|
||||||
retention-days: 30
|
|
||||||
|
|
||||||
create-release:
|
|
||||||
needs: build
|
|
||||||
runs-on: windows-latest
|
|
||||||
if: github.event_name == 'release'
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Download all artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
path: ./artifacts
|
|
||||||
|
|
||||||
- name: Get version from project
|
|
||||||
id: get_version
|
|
||||||
run: |
|
|
||||||
$version = (Get-Content "${{ env.PROJECT_PATH }}/InkCanvasForClass.csproj" | Select-String '<Version>(.*)</Version>' | ForEach-Object { $_.Matches[0].Groups[1].Value })
|
|
||||||
echo "version=$version" >> $env:GITHUB_OUTPUT
|
|
||||||
echo "Version: $version"
|
|
||||||
|
|
||||||
- name: Prepare release files
|
|
||||||
run: |
|
|
||||||
# 创建发布目录
|
|
||||||
mkdir -p ./release
|
|
||||||
|
|
||||||
# 复制x86安装包
|
|
||||||
if (Test-Path "./artifacts/InkCanvas-x86/installers") {
|
|
||||||
Copy-Item "./artifacts/InkCanvas-x86/installers/*" -Destination "./release/" -Recurse
|
|
||||||
}
|
|
||||||
|
|
||||||
# 复制x64安装包
|
|
||||||
if (Test-Path "./artifacts/InkCanvas-x64/installers") {
|
|
||||||
Copy-Item "./artifacts/InkCanvas-x64/installers/*" -Destination "./release/" -Recurse
|
|
||||||
}
|
|
||||||
|
|
||||||
# 复制ARM64便携版
|
|
||||||
if (Test-Path "./artifacts/InkCanvas-ARM64/installers") {
|
|
||||||
Copy-Item "./artifacts/InkCanvas-ARM64/installers/*" -Destination "./release/" -Recurse
|
|
||||||
}
|
|
||||||
|
|
||||||
# 列出所有文件
|
|
||||||
Get-ChildItem -Path "./release" -Recurse | ForEach-Object { Write-Host "Release file: $($_.FullName)" }
|
|
||||||
|
|
||||||
- name: Create Release
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
tag_name: v${{ steps.get_version.outputs.version }}
|
|
||||||
name: InkCanvasForClass CE v${{ steps.get_version.outputs.version }}
|
|
||||||
body: |
|
|
||||||
## InkCanvasForClass CE v${{ steps.get_version.outputs.version }}
|
|
||||||
|
|
||||||
### 下载
|
|
||||||
- **x86 (32位)**: 适用于32位Windows系统
|
|
||||||
- **x64 (64位)**: 适用于64位Windows系统
|
|
||||||
- **ARM64**: 适用于ARM64 Windows系统(便携版)
|
|
||||||
|
|
||||||
### 安装说明
|
|
||||||
1. 下载对应您系统架构的安装包
|
|
||||||
2. 运行安装程序并按照提示完成安装
|
|
||||||
3. ARM64版本为便携版,解压后直接运行即可
|
|
||||||
|
|
||||||
### 系统要求
|
|
||||||
- Windows 7/10/11
|
|
||||||
- .NET Framework 4.7.2 或更高版本
|
|
||||||
|
|
||||||
files: |
|
|
||||||
./release/*
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
Reference in New Issue
Block a user