diff --git a/src/main/index.ts b/src/main/index.ts index 54c82b5..e0e4497 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -200,5 +200,10 @@ ipcMain.on('get-store-value', (_, key) => { _.returnValue = value || ''; }); +// 添加 IPC 处理程序 +ipcMain.on('get-arch', (event) => { + event.returnValue = process.arch; +}); + // In this file you can include the rest of your app"s specific main process // code. You can also put them in separate files and require them here. diff --git a/src/renderer/components/common/UpdateModal.vue b/src/renderer/components/common/UpdateModal.vue index 1f52906..c5758ae 100644 --- a/src/renderer/components/common/UpdateModal.vue +++ b/src/renderer/components/common/UpdateModal.vue @@ -97,10 +97,41 @@ const checkForUpdates = async () => { }; const handleUpdate = async () => { - const downloadUrl = updateInfo.value.releaseInfo?.assets[0]?.browser_download_url; + const assets = updateInfo.value.releaseInfo?.assets || []; + const platform = window.electron.process.platform; + const arch = window.electron.ipcRenderer.sendSync('get-arch'); + console.log(arch); + console.log(platform); + + let downloadUrl = ''; + + // 根据平台和架构选择对应的安装包 + if (platform === 'darwin') { + // macOS + const macAsset = assets.find(asset => + asset.name.includes('mac') + ); + downloadUrl = macAsset?.browser_download_url || ''; + } else if (platform === 'win32') { + // Windows + const winAsset = assets.find(asset => + asset.name.includes('win') && + (arch === 'x64' ? asset.name.includes('x64') : asset.name.includes('ia32')) + ); + downloadUrl = winAsset?.browser_download_url || ''; + } else if (platform === 'linux') { + // Linux + const linuxAsset = assets.find(asset => + (asset.name.endsWith('.AppImage') || asset.name.endsWith('.deb')) && + asset.name.includes('x64') + ); + downloadUrl = linuxAsset?.browser_download_url || ''; + } + if (downloadUrl) { window.open(downloadUrl, '_blank'); } else { + // 如果没有找到对应的安装包,跳转到 release 页面 window.open('https://github.com/algerkong/AlgerMusicPlayer/releases/latest', '_blank'); } closeModal();