مرجع ادغام پروژه Electron با استفاده از کامپوننت electron-updater رسمی
1. معرفی کامپوننت electron-updater رسمی
کامپوننت رسمی electron-updater ارائه شده توسط Electron از طریق سرورهای بهروزرسانی یا فایلهای استاتیک، پشتیبانی از بهروزرسانیهای اتوماتیک برنامه را فراهم میکند، که قابلیتهای اصلی آن شامل موارد زیر است:
- بررسی نسخه سازگار با پروتکل بهروزرسانی Electron
- فرآیند دانلود و نصب بسته نصب چند پلتفرمی
- پیکربندی استراتژی بهروزرسانی انعطافپذیر
منابع اصلی
- مستندات رسمی آدرس: Documentation
- آدرس API UpgradeLink: Documentation
논리 کلی: با فراخوانی API استراتژی بهروزرسانی ارائه شده توسط UpgradeLink، کامپوننت electron-updater فرآیند بهروزرسانی خاص را اجرا میکند، و ادغام بدونδιακοπή با سیستم بهروزرسانی رسمی را بهوجود میآورد.
نمودار流程图 ادغام
2. مراحل اصلی ادغام
1. نصب کامپوننت بهروزرسانی رسمی
2. مستندات سرور بهروزرسانی پویا رسمی را بخوانید، فرآیند ادغام را درک کنید. آدرس مستند
UpgradeLink API بهروزرسانی را ارائه میدهد که کاملاً با پارامترهای درخواست و ساختار پاسخ مورد نیاز规یفیکیشن رسمی سازگار است، که امکان جایگزینی بدونδιακοπή را فراهم میکند.
3. فایل dev-update.yml را اضافه کنید تا آدرس دانلود بسته بهروزرسانی را پیکربندی کنید
provider: generic
updaterCacheDirName: electron-demo-updater # Download directory4. جایگزینی کد، روش بررسی بهروزرسانی را تنظیم کنید
بر اساس کد بررسی بهروزرسانی رسمی، ما فقط نیاز داریم که آدرس رابط در روش رسمی checkForUpdates را با آدرس ارائه شده توسط UpgradeLink جایگزین کنیم.
// Print related parameters
console.log(app.getVersion());
console.log(process.platform);
console.log(process.arch);
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
url: FeedURL,
provider: 'generic',
});
autoUpdater.requestHeaders = {
'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();
// Print return result
console.log("result: ", result);
if (!result || !result.updateInfo) {
// Interface call failed
return {
error: "Update information cannot be obtained",
currentVersion: app.getVersion()
};
} else if (result.updateInfo.version === app.getVersion()) {
// If the returned version number is consistent with the current one, it indicates that the current version is the latest
return {
updateAvailable: false,
currentVersion: app.getVersion()
};
} else if (result.updateInfo.version) {
return {
updateAvailable: true,
currentVersion: app.getVersion(),
newVersion: result.updateInfo.version
};
}
return {
updateAvailable: false,
currentVersion: app.getVersion()
};5. جایگزینی کد، روش دانلود و بهروزرسانی را تنظیم کنید، آدرس دانلود را به آدرس بازگشتی از رابط بررسی بهروزرسانی تنظیم کنید
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
url: FeedURL,
provider: 'generic',
});
autoUpdater.requestHeaders = {
'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();
// Print check update interface return result
console.log(result);
autoUpdater.setFeedURL({
url: result.updateInfo.path,
provider: 'generic',
});
console.log('[Process] Download update started, URL:', result.updateInfo.path);
try {
await autoUpdater.downloadUpdate();
console.log('[Process] Download update completed');
} catch (e) {
console.error('[Process] Download update failed:', e);
console.error('[DEBUG] Error stack:', e.stack);
throw e;
}پارامترهای درخواست پروتکل بهروزرسانی (مانند platform, arch) و ساختار پاسخ توسط UpgradeLink کاملاً با规یفیکیشن رسمی سازگار هستند، که امکان جایگزینی مستقیم را فراهم میکند.
مطالعه بالا راهنمای ادغام است. اگر نیاز به تعدیل جزئیات محتوا یا تکمیل توصیفات سناریوهای خاص دارید، لطفاً نیازهای خاص را اطلاع دهید.