@@ -200,6 +200,10 @@ jobs:
200200 needs : prepare
201201 if : success()
202202 runs-on : windows-latest
203+ strategy :
204+ fail-fast : false
205+ matrix :
206+ architecture : [AnyCPU, x86]
203207 outputs :
204208 archive_name : ${{ steps.create_archive.outputs.archive_name }}
205209 zip_size : ${{ steps.calculate_size.outputs.zip_size }}
@@ -227,12 +231,12 @@ jobs:
227231 env :
228232 DLASS_SENTRY_DSN : ${{ secrets.DLASS_SENTRY_DSN }}
229233 run : |
230- msbuild /p:platform="AnyCPU " /p:configuration="Release" /p:GitFlow="Github Action" "Ink Canvas/InkCanvasForClass.csproj" /m /p:UseMultiToolTask=true /p:EnforceProcessCountAcrossBuilds=true /verbosity:minimal -maxcpucount /p:RunAnalyzers=false
234+ msbuild /p:platform="${{ matrix.architecture }} " /p:configuration="Release" /p:GitFlow="Github Action" "Ink Canvas/InkCanvasForClass.csproj" /m /p:UseMultiToolTask=true /p:EnforceProcessCountAcrossBuilds=true /verbosity:minimal -maxcpucount /p:RunAnalyzers=false
231235
232236 - name : Check if exe file is generated
233237 id : check-exe
234238 run : |
235- $exePath = "Ink Canvas/ bin/ Release/ net472/ InkCanvasForClass.exe"
239+ $exePath = "Ink Canvas\ bin\ Release\${{ matrix.architecture }}\ net472\ InkCanvasForClass.exe"
236240
237241 if (Test-Path $exePath) {
238242 echo "build_success=true" >> $env:GITHUB_OUTPUT
@@ -265,13 +269,22 @@ jobs:
265269 if : steps.check-exe.outputs.build_success == 'true'
266270 run : |
267271 $version = "${{ needs.prepare.outputs.version }}"
268- $archiveName = "InkCanvasForClass.CE.$version.zip"
272+ $architecture = "${{ matrix.architecture }}"
273+
274+ # 根据架构生成文件名后缀
275+ if ($architecture -eq "AnyCPU") {
276+ $suffix = "-x64"
277+ } else {
278+ $suffix = ""
279+ }
280+
281+ $archiveName = "InkCanvasForClass.CE.$version$suffix.zip"
269282
270283 # 创建发布目录
271284 New-Item -ItemType Directory -Path "release" -Force
272285
273- # 复制发布文件
274- Copy-Item "Ink Canvas/ bin/ Release/ net472/ *" "release/" -Recurse -Force
286+ # 复制发布文件(使用架构特定的路径)
287+ Copy-Item "Ink Canvas\ bin\ Release\$architecture\ net472\ *" "release/" -Recurse -Force
275288
276289 # 创建压缩包
277290 Compress-Archive -Path "release/*" -DestinationPath $archiveName -Force
@@ -282,6 +295,7 @@ jobs:
282295 if : steps.check-exe.outputs.build_success == 'true'
283296 run : |
284297 $version = "${{ needs.prepare.outputs.version }}"
298+ $architecture = "${{ matrix.architecture }}"
285299
286300 # 更新 ISS 文件中的版本信息
287301 $issPath = "build/InkCanvasForClass CE.iss"
@@ -317,8 +331,17 @@ jobs:
317331 if : steps.check-exe.outputs.build_success == 'true'
318332 run : |
319333 $version = "${{ needs.prepare.outputs.version }}"
334+ $architecture = "${{ matrix.architecture }}"
335+
336+ # 根据架构生成文件名后缀
337+ if ($architecture -eq "AnyCPU") {
338+ $suffix = "-x64"
339+ } else {
340+ $suffix = ""
341+ }
342+
320343 $setupFile = "InkCanvasForClass CE Setup.exe"
321- $newSetupName = "InkCanvasForClass.CE.$version.Setup.exe"
344+ $newSetupName = "InkCanvasForClass.CE.$version$suffix .Setup.exe"
322345
323346 if (Test-Path $setupFile) {
324347 Rename-Item -Path $setupFile -NewName $newSetupName
@@ -331,7 +354,16 @@ jobs:
331354 if : steps.check-exe.outputs.build_success == 'true'
332355 run : |
333356 $version = "${{ needs.prepare.outputs.version }}"
334- $archiveName = "InkCanvasForClass.CE.$version.zip"
357+ $architecture = "${{ matrix.architecture }}"
358+
359+ # 根据架构生成文件名后缀
360+ if ($architecture -eq "AnyCPU") {
361+ $suffix = "-x64"
362+ } else {
363+ $suffix = ""
364+ }
365+
366+ $archiveName = "InkCanvasForClass.CE.$version$suffix.zip"
335367
336368 # 获取文件大小(字节)
337369 $fileSize = (Get-Item $archiveName).Length
@@ -343,7 +375,16 @@ jobs:
343375 if : steps.check-exe.outputs.build_success == 'true'
344376 run : |
345377 $version = "${{ needs.prepare.outputs.version }}"
346- $installerName = "InkCanvasForClass.CE.$version.Setup.exe"
378+ $architecture = "${{ matrix.architecture }}"
379+
380+ # 根据架构生成文件名后缀
381+ if ($architecture -eq "AnyCPU") {
382+ $suffix = "-x64"
383+ } else {
384+ $suffix = ""
385+ }
386+
387+ $installerName = "InkCanvasForClass.CE.$version$suffix.Setup.exe"
347388
348389 if (Test-Path $installerName) {
349390 # 获取文件大小(字节)
@@ -354,14 +395,34 @@ jobs:
354395 Write-Error "Installer file not found: $installerName"
355396 }
356397
398+ - name : Upload Build Artifacts
399+ if : steps.check-exe.outputs.build_success == 'true'
400+ run : |
401+ $version = "${{ needs.prepare.outputs.version }}"
402+ $architecture = "${{ matrix.architecture }}"
403+
404+ # 根据架构生成文件名后缀
405+ if ($architecture -eq "AnyCPU") {
406+ $suffix = "-x64"
407+ } else {
408+ $suffix = ""
409+ }
410+
411+ $zipFile = "InkCanvasForClass.CE.$version$suffix.zip"
412+ $setupFile = "InkCanvasForClass.CE.$version$suffix.Setup.exe"
413+
414+ echo "zip_file=$zipFile" >> $env:GITHUB_OUTPUT
415+ echo "setup_file=$setupFile" >> $env:GITHUB_OUTPUT
416+ id : get_file_names
417+
357418 - name : Upload Build Artifacts
358419 if : steps.check-exe.outputs.build_success == 'true'
359420 uses : actions/upload-artifact@v7
360421 with :
361- name : build-files-${{ needs.prepare.outputs.version }}
422+ name : build-files-${{ needs.prepare.outputs.version }}-${{ matrix.architecture }}
362423 path : |
363- InkCanvasForClass.CE. ${{ needs.prepare .outputs.version }}.zip
364- InkCanvasForClass.CE. ${{ needs.prepare .outputs.version }}.Setup.exe
424+ ${{ steps.get_file_names .outputs.zip_file }}
425+ ${{ steps.get_file_names .outputs.setup_file }}
365426
366427 - name : Create Build Summary
367428 if : always()
@@ -376,6 +437,7 @@ jobs:
376437 echo "**Version:** ${{ needs.prepare.outputs.version }}" >> $GITHUB_STEP_SUMMARY
377438 echo "**Tag:** \`${{ needs.prepare.outputs.tag_name }}\`" >> $GITHUB_STEP_SUMMARY
378439 echo "**Release Type:** ${{ needs.prepare.outputs.is_prerelease == 'true' && 'Pre-release' || 'Release' }}" >> $GITHUB_STEP_SUMMARY
440+ echo "**Architecture:** ${{ matrix.architecture }}" >> $GITHUB_STEP_SUMMARY
379441 echo "**Commit:** \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
380442 echo "**Run:** #${{ github.run_number }}" >> $GITHUB_STEP_SUMMARY
381443 echo "" >> $GITHUB_STEP_SUMMARY
@@ -393,6 +455,7 @@ jobs:
393455 echo "" >> $GITHUB_STEP_SUMMARY
394456 echo "**Version:** ${{ needs.prepare.outputs.version }}" >> $GITHUB_STEP_SUMMARY
395457 echo "**Tag:** \`${{ needs.prepare.outputs.tag_name }}\`" >> $GITHUB_STEP_SUMMARY
458+ echo "**Architecture:** ${{ matrix.architecture }}" >> $GITHUB_STEP_SUMMARY
396459 echo "**Event:** ${{ github.event_name }} (${{ github.event.action || 'N/A' }})" >> $GITHUB_STEP_SUMMARY
397460 echo "**Commit:** \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
398461 echo "**Run:** #${{ github.run_number }}" >> $GITHUB_STEP_SUMMARY
@@ -411,7 +474,8 @@ jobs:
411474 - name : Download Build Artifacts
412475 uses : actions/download-artifact@v8
413476 with :
414- name : build-files-${{ needs.prepare.outputs.version }}
477+ pattern : build-files-${{ needs.prepare.outputs.version }}-*
478+ merge-multiple : false
415479
416480 - name : Setup Python
417481 uses : actions/setup-python@v6
@@ -422,8 +486,10 @@ jobs:
422486 uses : sigstore/gh-action-sigstore-python@v3.2.0
423487 with :
424488 inputs : |
425- InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip
426- InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.Setup.exe
489+ build-files-${{ needs.prepare.outputs.version }}-AnyCPU/*.zip
490+ build-files-${{ needs.prepare.outputs.version }}-AnyCPU/*.exe
491+ build-files-${{ needs.prepare.outputs.version }}-x86/*.zip
492+ build-files-${{ needs.prepare.outputs.version }}-x86/*.exe
427493 release-signing-artifacts : true
428494 upload-signing-artifacts : true
429495 env :
@@ -434,8 +500,8 @@ jobs:
434500 with :
435501 name : signed-files-${{ needs.prepare.outputs.version }}
436502 path : |
437- InkCanvasForClass.CE. ${{ needs.prepare.outputs.version }}.zip .sigstore.json
438- InkCanvasForClass.CE. ${{ needs.prepare.outputs.version }}.Setup.exe .sigstore.json
503+ build-files- ${{ needs.prepare.outputs.version }}-AnyCPU/* .sigstore.json
504+ build-files- ${{ needs.prepare.outputs.version }}-x86/* .sigstore.json
439505
440506 release :
441507 needs : [prepare, build, sign]
@@ -450,7 +516,8 @@ jobs:
450516 - name : Download Build Artifacts
451517 uses : actions/download-artifact@v8
452518 with :
453- name : build-files-${{ needs.prepare.outputs.version }}
519+ pattern : build-files-${{ needs.prepare.outputs.version }}-*
520+ merge-multiple : true
454521
455522 - name : Download Signed Artifacts (if exists)
456523 uses : actions/download-artifact@v8
@@ -480,23 +547,43 @@ jobs:
480547 fileTable+=$'| 文件名 | 大小 |\n'
481548 fileTable+=$'|--------|------|\n'
482549
483- # ZIP 文件信息
484- fileTable+=$'| InkCanvasForClass.CE.'"$version"
485- fileTable+=$'.zip | ${{ needs.build.outputs.zip_size }} bytes |\n'
550+ # AnyCPU (x64) 架构文件
551+ if [ -f "InkCanvasForClass.CE.$version-x64.zip" ]; then
552+ zipSize=$(stat -c%s "InkCanvasForClass.CE.$version-x64.zip")
553+ fileTable+=$'| InkCanvasForClass.CE.'"$version"'-x64.zip | '"$zipSize"' bytes |\n'
554+ fi
555+
556+ if [ -f "InkCanvasForClass.CE.$version-x64.Setup.exe" ]; then
557+ installerSize=$(stat -c%s "InkCanvasForClass.CE.$version-x64.Setup.exe")
558+ fileTable+=$'| InkCanvasForClass.CE.'"$version"'-x64.Setup.exe | '"$installerSize"' bytes |\n'
559+ fi
486560
487- # 安装包文件信息
488- installerSize="${{ needs.build.outputs.installer_size }}"
489- if [ -n "$installerSize" ]; then
561+ if [ -f "InkCanvasForClass.CE.$version-x64.zip.sigstore.json" ]; then
562+ sigstoreSize=$(stat -c%s "InkCanvasForClass.CE.$version-x64.zip.sigstore.json")
563+ fileTable+=$'| InkCanvasForClass.CE.'"$version"'-x64.zip.sigstore.json | '"$sigstoreSize"' bytes |\n'
564+ fi
565+
566+ if [ -f "InkCanvasForClass.CE.$version-x64.Setup.exe.sigstore.json" ]; then
567+ sigstoreSize=$(stat -c%s "InkCanvasForClass.CE.$version-x64.Setup.exe.sigstore.json")
568+ fileTable+=$'| InkCanvasForClass.CE.'"$version"'-x64.Setup.exe.sigstore.json | '"$sigstoreSize"' bytes |\n'
569+ fi
570+
571+ # x86 架构文件
572+ if [ -f "InkCanvasForClass.CE.$version.zip" ]; then
573+ zipSize=$(stat -c%s "InkCanvasForClass.CE.$version.zip")
574+ fileTable+=$'| InkCanvasForClass.CE.'"$version"'.zip | '"$zipSize"' bytes |\n'
575+ fi
576+
577+ if [ -f "InkCanvasForClass.CE.$version.Setup.exe" ]; then
578+ installerSize=$(stat -c%s "InkCanvasForClass.CE.$version.Setup.exe")
490579 fileTable+=$'| InkCanvasForClass.CE.'"$version"'.Setup.exe | '"$installerSize"' bytes |\n'
491580 fi
492581
493- # 检查是否有签名文件
494582 if [ -f "InkCanvasForClass.CE.$version.zip.sigstore.json" ]; then
495583 sigstoreSize=$(stat -c%s "InkCanvasForClass.CE.$version.zip.sigstore.json")
496584 fileTable+=$'| InkCanvasForClass.CE.'"$version"'.zip.sigstore.json | '"$sigstoreSize"' bytes |\n'
497585 fi
498586
499- # 检查安装程序签名文件
500587 if [ -f "InkCanvasForClass.CE.$version.Setup.exe.sigstore.json" ]; then
501588 sigstoreSize=$(stat -c%s "InkCanvasForClass.CE.$version.Setup.exe.sigstore.json")
502589 fileTable+=$'| InkCanvasForClass.CE.'"$version"'.Setup.exe.sigstore.json | '"$sigstoreSize"' bytes |\n'
@@ -531,6 +618,10 @@ jobs:
531618 draft : ${{ github.event.inputs.draft || false }}
532619 prerelease : ${{ needs.prepare.outputs.is_prerelease == 'true' }}
533620 files : |
621+ InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}-x64.zip
622+ InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}-x64.Setup.exe
623+ InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}-x64.zip.sigstore.json
624+ InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}-x64.Setup.exe.sigstore.json
534625 InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip
535626 InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.Setup.exe
536627 InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip.sigstore.json
@@ -541,7 +632,7 @@ jobs:
541632
542633 post_release :
543634 needs : [prepare, release]
544- if : success()
635+ if : success() && github.event.inputs.draft != 'true'
545636 runs-on : ubuntu-slim
546637 permissions :
547638 id-token : write
@@ -550,7 +641,8 @@ jobs:
550641 - name : Download Build Artifacts
551642 uses : actions/download-artifact@v8
552643 with :
553- name : build-files-${{ needs.prepare.outputs.version }}
644+ pattern : build-files-${{ needs.prepare.outputs.version }}-*
645+ merge-multiple : true
554646
555647 - name : Get beta token
556648 uses : octo-sts/action@main
@@ -580,18 +672,32 @@ jobs:
580672 cd $REPO_DIR
581673 IS_PRERELEASE="${{ needs.prepare.outputs.is_prerelease }}"
582674 VERSION="${{ needs.prepare.outputs.version }}"
583- ZIP_FILE="$GITHUB_WORKSPACE/InkCanvasForClass.CE.$VERSION.zip"
675+ X64_ZIP_FILE="$GITHUB_WORKSPACE/InkCanvasForClass.CE.$VERSION-x64.zip"
676+ X86_ZIP_FILE="$GITHUB_WORKSPACE/InkCanvasForClass.CE.$VERSION.zip"
584677
585678 if [ "$IS_PRERELEASE" == "true" ]; then
586679 mkdir -p Beta
587- cp "$ZIP_FILE" Beta/
588- git add Beta/InkCanvasForClass.CE.$VERSION.zip
680+ if [ -f "$X64_ZIP_FILE" ]; then
681+ cp "$X64_ZIP_FILE" Beta/
682+ git add Beta/InkCanvasForClass.CE.$VERSION-x64.zip
683+ fi
684+ if [ -f "$X86_ZIP_FILE" ]; then
685+ cp "$X86_ZIP_FILE" Beta/
686+ git add Beta/InkCanvasForClass.CE.$VERSION.zip
687+ fi
589688 git commit -m "Add $VERSION PreRelease"
590689 else
591690 mkdir -p Release Beta
592- cp "$ZIP_FILE" Release/
593- cp "$ZIP_FILE" Beta/
594- git add Release/InkCanvasForClass.CE.$VERSION.zip Beta/InkCanvasForClass.CE.$VERSION.zip
691+ if [ -f "$X64_ZIP_FILE" ]; then
692+ cp "$X64_ZIP_FILE" Release/
693+ cp "$X64_ZIP_FILE" Beta/
694+ git add Release/InkCanvasForClass.CE.$VERSION-x64.zip Beta/InkCanvasForClass.CE.$VERSION-x64.zip
695+ fi
696+ if [ -f "$X86_ZIP_FILE" ]; then
697+ cp "$X86_ZIP_FILE" Release/
698+ cp "$X86_ZIP_FILE" Beta/
699+ git add Release/InkCanvasForClass.CE.$VERSION.zip Beta/InkCanvasForClass.CE.$VERSION.zip
700+ fi
595701 git commit -m "Add $VERSION Release"
596702 fi
597703 git push origin main
@@ -622,6 +728,7 @@ jobs:
622728 draft : false
623729 prerelease : ${{ needs.prepare.outputs.is_prerelease == 'true' }}
624730 files : |
731+ InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}-x64.zip
625732 InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip
626733 fail_on_unmatched_files : false
627734 repository : " InkCanvasForClass/community-beta"
0 commit comments