(setStartStr: SetStartStrFn)
| 34 | let componentWatchdogStopping = false |
| 35 | |
| 36 | async function init(setStartStr: SetStartStrFn) { |
| 37 | setStartStr(t('init')) |
| 38 | roConfig.env.path.homeDir = await homeDir() |
| 39 | listenWindow() |
| 40 | |
| 41 | await getOsInfo() |
| 42 | |
| 43 | setStartStr(t('read_config')) |
| 44 | await readNmConfig() |
| 45 | |
| 46 | //设置语言 |
| 47 | if (nmConfig.settings.language) { |
| 48 | await setLocalized(nmConfig.settings.language) |
| 49 | } else { |
| 50 | const matchingLang = roConfig.options.setting.language.select.find( |
| 51 | lang => lang.langCode === navigator.language.toLowerCase() |
| 52 | ) |
| 53 | const defaultLang = |
| 54 | roConfig.options.setting.language.select[roConfig.options.setting.language.defIndex] |
| 55 | nmConfig.settings.language = matchingLang?.value || defaultLang?.value || 'en' |
| 56 | await setLocalized(nmConfig.settings.language) |
| 57 | } |
| 58 | |
| 59 | //设置缓存路径 |
| 60 | if (!nmConfig.settings.path.cacheDir) { |
| 61 | nmConfig.settings.path.cacheDir = defaultCacheDir() |
| 62 | } |
| 63 | |
| 64 | setThemeMode(nmConfig.settings.themeMode) |
| 65 | |
| 66 | setStartStr(t('start_framework')) |
| 67 | |
| 68 | await startRclone() |
| 69 | await startOpenlist() |
| 70 | |
| 71 | startUpdateCont() |
| 72 | |
| 73 | startComponentWatchdog() |
| 74 | runStartupTasksInBackground() |
| 75 | |
| 76 | // 根据 startHide 配置决定是否显示窗口 |
| 77 | if (!nmConfig.settings.startHide) { |
| 78 | await appWindow.show() |
| 79 | await appWindow.setFocus() |
| 80 | } |
| 81 | |
| 82 | // 启动后静默检查应用更新(延迟 5 秒,不阻塞启动) |
| 83 | setTimeout(() => { |
| 84 | checkForUpdate(true).catch(err => console.error('Update check failed:', err)) |
| 85 | }, 5000) |
| 86 | } |
| 87 | |
| 88 | async function runStartupTasksInBackground() { |
| 89 | hooks.startup.storageInitDone = false |
no test coverage detected