From 96eebb84cc04d8e1101f9a696cd55c32044f7295 Mon Sep 17 00:00:00 2001 From: talynone Date: Mon, 27 Apr 2026 01:45:02 -0700 Subject: [PATCH] Add Windows 11 ARM native build support --- .github/workflows/release.yml | 8 ++-- package.json | 4 ++ scripts/download-bins.js | 78 ++++++++++++++++++++++++++++++++++- 3 files changed, 86 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bbb1909..86926be 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,6 +22,8 @@ jobs: args: '--target aarch64-unknown-linux-gnu --config ./src-tauri/tauri.linux-aarch64.conf.json' - platform: 'windows-latest' args: '' + - platform: 'windows-11-arm' + args: '--target aarch64-pc-windows-msvc' runs-on: ${{ matrix.platform }} steps: - name: 🚚 Checkout repository @@ -56,7 +58,7 @@ jobs: run: npm run download - name: 📄 Read and Process CHANGELOG (Unix) - if: matrix.platform != 'windows-latest' + if: matrix.platform != 'windows-latest' && matrix.platform != 'windows-11-arm' id: changelog_unix shell: bash run: | @@ -77,7 +79,7 @@ jobs: fi - name: 📄 Read and Process CHANGELOG (Windows) - if: matrix.platform == 'windows-latest' + if: matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm' id: changelog_windows shell: pwsh run: | @@ -106,7 +108,7 @@ jobs: with: tagName: ${{ github.ref_name }} releaseName: ${{ github.event.repository.name }}-${{ github.ref_name }} - releaseBody: ${{ matrix.platform == 'windows-latest' && steps.changelog_windows.outputs.content || steps.changelog_unix.outputs.content }} + releaseBody: ${{ (matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm') && steps.changelog_windows.outputs.content || steps.changelog_unix.outputs.content }} releaseDraft: true prerelease: false includeUpdaterJson: true diff --git a/package.json b/package.json index 975763f..2f33a9d 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,10 @@ "tauri:build:macos-x64": "npm run tauri build -- --config ./src-tauri/tauri.macos-x86_64.conf.json", "tauri:dev:macos-arm64": "npm run tauri dev -- --config ./src-tauri/tauri.macos-aarch64.conf.json", "tauri:build:macos-arm64": "npm run tauri build -- --config ./src-tauri/tauri.macos-aarch64.conf.json", + "tauri:dev:windows-x64": "npm run tauri dev -- --target x86_64-pc-windows-msvc", + "tauri:build:windows-x64": "npm run tauri build -- --target x86_64-pc-windows-msvc", + "tauri:dev:windows-arm64": "npm run tauri dev -- --target aarch64-pc-windows-msvc", + "tauri:build:windows-arm64": "npm run tauri build -- --target aarch64-pc-windows-msvc", "download": "node ./scripts/download-bins.js" }, "dependencies": { diff --git a/scripts/download-bins.js b/scripts/download-bins.js index eb59329..068726e 100644 --- a/scripts/download-bins.js +++ b/scripts/download-bins.js @@ -38,6 +38,19 @@ const binaries = { path.join(downloadDir, 'yt-dlp-x86_64-pc-windows-msvc.exe') ] }, + { + name: 'yt-dlp-aarch64-pc-windows-msvc', + platform: 'win32', + url: `https://github.com/yt-dlp/yt-dlp-nightly-builds/releases${versions['yt-dlp'] === 'latest' ? '/latest' : ''}/download${versions['yt-dlp'] !== 'latest' ? '/'+versions['yt-dlp'] : ''}/yt-dlp_arm64.exe`, + src: path.join(downloadDir, 'yt-dlp-aarch64-pc-windows-msvc.exe'), + dest: [ + path.join(binDir, 'yt-dlp-aarch64-pc-windows-msvc.exe') + ], + archive: null, + cleanup: [ + path.join(downloadDir, 'yt-dlp-aarch64-pc-windows-msvc.exe') + ] + }, { name: 'yt-dlp-x86_64-unknown-linux-gnu', platform: 'linux', @@ -102,6 +115,28 @@ const binaries = { path.join(downloadDir, 'ffmpeg-master-latest-win64-gpl') ] }, + { + name: 'ffmpeg-ffprobe-aarch64-pc-windows-msvc', + platform: 'win32', + url: `https://github.com/yt-dlp/FFmpeg-Builds/releases${versions['ffmpeg-ffprobe'] === 'latest' ? '/latest' : ''}/download${versions['ffmpeg-ffprobe'] !== 'latest' ? '/'+versions['ffmpeg-ffprobe'] : ''}/ffmpeg-master-latest-winarm64-gpl.zip`, + src: path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl.zip'), + dest: null, + archive: { + type: 'zip', + binSrc: [ + path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl', 'bin', 'ffmpeg.exe'), + path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl', 'bin', 'ffprobe.exe') + ], + binDest: [ + path.join(binDir, 'ffmpeg-aarch64-pc-windows-msvc.exe'), + path.join(binDir, 'ffprobe-aarch64-pc-windows-msvc.exe') + ] + }, + cleanup: [ + path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl.zip'), + path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl') + ] + }, { name: 'ffmpeg-ffprobe-x86_64-unknown-linux-gnu', platform: 'linux', @@ -256,6 +291,26 @@ const binaries = { path.join(downloadDir, 'deno.exe') ] }, + { + name: 'deno-aarch64-pc-windows-msvc', + platform: 'win32', + url: `https://github.com/denoland/deno/releases${versions['deno'] === 'latest' ? '/latest' : ''}/download${versions['deno'] !== 'latest' ? '/v'+versions['deno'] : ''}/deno-aarch64-pc-windows-msvc.zip`, + src: path.join(downloadDir, 'deno-aarch64-pc-windows-msvc.zip'), + dest: null, + archive: { + type: 'zip', + binSrc: [ + path.join(downloadDir, 'deno.exe') + ], + binDest: [ + path.join(binDir, 'deno-aarch64-pc-windows-msvc.exe') + ] + }, + cleanup: [ + path.join(downloadDir, 'deno-aarch64-pc-windows-msvc.zip'), + path.join(downloadDir, 'deno.exe') + ] + }, { name: 'deno-x86_64-unknown-linux-gnu', platform: 'linux', @@ -358,6 +413,26 @@ const binaries = { path.join(downloadDir, `aria2-${versions['aria2c']}-win-64bit-build1`) ] }, + { + name: 'aria2c-aarch64-pc-windows-msvc', + platform: 'win32', + url: `https://github.com/minnyres/aria2-windows-arm64/releases/download/v${versions['aria2c']}/aria2_${versions['aria2c']}_arm64.zip`, + src: path.join(downloadDir, `aria2_${versions['aria2c']}_arm64.zip`), + dest: null, + archive: { + type: 'zip', + binSrc: [ + path.join(downloadDir, 'aria2c.exe') + ], + binDest: [ + path.join(binDir, 'aria2c-aarch64-pc-windows-msvc.exe') + ] + }, + cleanup: [ + path.join(downloadDir, `aria2_${versions['aria2c']}_arm64.zip`), + path.join(downloadDir, 'aria2c.exe') + ] + }, { name: 'aria2c-x86_64-unknown-linux-gnu', platform: 'linux', @@ -406,7 +481,8 @@ const binaries = { url: `https://github.com/jim60105/bgutil-ytdlp-pot-provider-rs/releases${versions['neodlp-pot'] === 'latest' ? '/latest' : ''}/download${versions['neodlp-pot'] !== 'latest' ? '/v'+versions['neodlp-pot'] : ''}/bgutil-pot-windows-x86_64.exe`, src: path.join(downloadDir, 'bgutil-pot-windows-x86_64.exe'), dest: [ - path.join(binDir, 'neodlp-pot-x86_64-pc-windows-msvc.exe') + path.join(binDir, 'neodlp-pot-x86_64-pc-windows-msvc.exe'), + path.join(binDir, 'neodlp-pot-aarch64-pc-windows-msvc.exe') ], archive: null, cleanup: [