Skip to content

مرجع ادغام پروژه Electron با استفاده از کامپوننت electron-updater رسمی

1. معرفی کامپوننت electron-updater رسمی

کامپوننت رسمی electron-updater ارائه شده توسط Electron از طریق سرورهای به‌روزرسانی یا فایل‌های استاتیک، پشتیبانی از به‌روزرسانی‌های اتوماتیک برنامه را فراهم می‌کند، که قابلیت‌های اصلی آن شامل موارد زیر است:

  • بررسی نسخه سازگار با پروتکل به‌روزرسانی Electron
  • فرآیند دانلود و نصب بسته نصب چند پلتفرمی
  • پیکربندی استراتژی به‌روزرسانی انعطاف‌پذیر

منابع اصلی

논리 کلی: با فراخوانی API استراتژی به‌روزرسانی ارائه شده توسط UpgradeLink، کامپوننت electron-updater فرآیند به‌روزرسانی خاص را اجرا می‌کند، و ادغام بدون‌διακοπή با سیستم به‌روزرسانی رسمی را به‌وجود می‌آورد.

نمودار流程图 ادغام

2. مراحل اصلی ادغام

آدرس پروژه electron-demo مرجع

1. نصب کامپوننت به‌روزرسانی رسمی

2. مستندات سرور به‌روزرسانی پویا رسمی را بخوانید، فرآیند ادغام را درک کنید. آدرس مستند

UpgradeLink API به‌روزرسانی را ارائه می‌دهد که کاملاً با پارامترهای درخواست و ساختار پاسخ مورد نیاز规یفیکیشن رسمی سازگار است، که امکان جایگزینی بدون‌διακοπή را فراهم می‌کند.

3. فایل dev-update.yml را اضافه کنید تا آدرس دانلود بسته به‌روزرسانی را پیکربندی کنید

yaml
provider: generic
updaterCacheDirName: electron-demo-updater # Download directory

4. جایگزینی کد، روش بررسی به‌روزرسانی را تنظیم کنید

بر اساس کد بررسی به‌روزرسانی رسمی، ما فقط نیاز داریم که آدرس رابط در روش رسمی checkForUpdates را با آدرس ارائه شده توسط UpgradeLink جایگزین کنیم.

javascript
// 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. جایگزینی کد، روش دانلود و به‌روزرسانی را تنظیم کنید، آدرس دانلود را به آدرس بازگشتی از رابط بررسی به‌روزرسانی تنظیم کنید

javascript
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 کاملاً با规یفیکیشن رسمی سازگار هستند، که امکان جایگزینی مستقیم را فراهم می‌کند.

مطالعه بالا راهنمای ادغام است. اگر نیاز به تعدیل جزئیات محتوا یا تکمیل توصیفات سناریوهای خاص دارید، لطفاً نیازهای خاص را اطلاع دهید.

toolsetlink@163.com