mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-08-28 19:46:50 +08:00
restore find logic of find pre installed chrome
This commit is contained in:
+24
-38
@@ -9,7 +9,6 @@ import {
|
||||
removeLastUsedAndAvailableBrowserPath
|
||||
} from '../browser-history'
|
||||
import gtag from '../../../../utils/gtag'
|
||||
import { sleep } from '@geekgeekrun/utils/sleep.mjs';
|
||||
|
||||
const getPuppeteerManagerModule = async () => {
|
||||
const puppeteerManager = await import('@puppeteer/browsers')
|
||||
@@ -65,32 +64,19 @@ export const checkAndDownloadPuppeteerExecutable = async (
|
||||
} catch {
|
||||
throw new Error('USER_CANCEL_DOWNLOAD_PUPPETEER')
|
||||
}
|
||||
let restRetriedTime = 10
|
||||
while (restRetriedTime > 0) {
|
||||
try {
|
||||
// maybe the exist installation is broken.
|
||||
await puppeteerManager.uninstall({
|
||||
cacheDir,
|
||||
buildId: EXPECT_CHROMIUM_BUILD_ID,
|
||||
browser: puppeteerManager.Browser.CHROME
|
||||
})
|
||||
installedBrowser = await puppeteerManager.install({
|
||||
browser: puppeteerManager.Browser.CHROME,
|
||||
cacheDir,
|
||||
buildId: EXPECT_CHROMIUM_BUILD_ID,
|
||||
downloadProgressCallback: options.downloadProgressCallback,
|
||||
baseUrl: `https://registry.npmmirror.com/-/binary/chrome-for-testing`
|
||||
})
|
||||
break
|
||||
}
|
||||
catch (err) {
|
||||
restRetriedTime--
|
||||
await sleep(5000)
|
||||
}
|
||||
}
|
||||
if (!installedBrowser) {
|
||||
throw new Error(`浏览器下载失败`)
|
||||
}
|
||||
// maybe the exist installation is broken.
|
||||
await puppeteerManager.uninstall({
|
||||
cacheDir,
|
||||
buildId: EXPECT_CHROMIUM_BUILD_ID,
|
||||
browser: puppeteerManager.Browser.CHROME
|
||||
})
|
||||
installedBrowser = await puppeteerManager.install({
|
||||
browser: puppeteerManager.Browser.CHROME,
|
||||
cacheDir,
|
||||
buildId: EXPECT_CHROMIUM_BUILD_ID,
|
||||
downloadProgressCallback: options.downloadProgressCallback,
|
||||
baseUrl: `https://registry.npmmirror.com/-/binary/chrome-for-testing`
|
||||
})
|
||||
} else {
|
||||
gtag('use_installed_browser')
|
||||
installedBrowser = (
|
||||
@@ -116,16 +102,16 @@ export const getAnyAvailablePuppeteerExecutable = async (): Promise<BrowserInfo
|
||||
if (lastUsedOne) {
|
||||
return lastUsedOne
|
||||
}
|
||||
// // find existed browser - the one maybe actively installed by user or ship with os like Edge on windows
|
||||
// try {
|
||||
// const existedOne = await findAndLocateUserInstalledChromiumExecutableSync()
|
||||
// await saveLastUsedAndAvailableBrowserInfo(existedOne)
|
||||
// // save its path
|
||||
// return existedOne
|
||||
// } catch (err) {
|
||||
// console.error(err)
|
||||
// console.log('no existed browser path found')
|
||||
// }
|
||||
// find existed browser - the one maybe actively installed by user or ship with os like Edge on windows
|
||||
try {
|
||||
const existedOne = await findAndLocateUserInstalledChromiumExecutableSync()
|
||||
await saveLastUsedAndAvailableBrowserInfo(existedOne)
|
||||
// save its path
|
||||
return existedOne
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
console.log('no existed browser path found')
|
||||
}
|
||||
// find existed browser - the fallback one
|
||||
if (await checkCachedPuppeteerExecutable()) {
|
||||
const cachedOne = await getExpectCachedPuppeteerExecutable()
|
||||
@@ -144,7 +130,7 @@ export async function findAndLocateUserInstalledChromiumExecutableSync(): Promis
|
||||
const findChrome: typeof import('find-chrome-bin').findChrome = (await import('find-chrome-bin'))
|
||||
.findChrome
|
||||
const targetBrowser = await findChrome({
|
||||
min: exceptChromiumMainVersion
|
||||
min: exceptChromiumMainVersion + 1
|
||||
})
|
||||
if (!targetBrowser?.executablePath) {
|
||||
throw new Error('NO_EXPECT_CHROMIUM_FOUND')
|
||||
|
||||
@@ -11,9 +11,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, onUnmounted, PropType } from 'vue'
|
||||
import { ref, onUnmounted, PropType, h } from 'vue'
|
||||
import { ElMessageBox } from 'element-plus'
|
||||
import { gtagRenderer } from '@renderer/utils/gtag'
|
||||
import { sleep } from '@geekgeekrun/utils/sleep.mjs'
|
||||
import FailMessage from './FailMessage.vue'
|
||||
|
||||
const props = defineProps({
|
||||
dependenciesStatus: {
|
||||
@@ -36,12 +38,24 @@ const downloadProcessExitCode = ref(0)
|
||||
const processDownloadBrowser = async () => {
|
||||
downloadProcessExitCode.value = 0
|
||||
browserDownloadPercentage.value = 0
|
||||
try {
|
||||
await electron.ipcRenderer.invoke('setup-dependencies')
|
||||
browserDownloadPercentage.value = 100
|
||||
} catch (err) {
|
||||
downloadProcessExitCode.value = 1
|
||||
throw err
|
||||
let restRetriedTime = 2
|
||||
while (restRetriedTime > 0) {
|
||||
try {
|
||||
try {
|
||||
await electron.ipcRenderer.invoke('setup-dependencies')
|
||||
browserDownloadPercentage.value = 100
|
||||
} catch (err) {
|
||||
downloadProcessExitCode.value = 1
|
||||
throw err
|
||||
}
|
||||
break
|
||||
} catch (err) {
|
||||
restRetriedTime--
|
||||
if (restRetriedTime === 0) {
|
||||
throw err
|
||||
}
|
||||
await sleep(5000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,12 +82,13 @@ const processTasks = async () => {
|
||||
await p
|
||||
} catch {
|
||||
gtagRenderer('encounter_error_when_download_deps')
|
||||
await ElMessageBox.confirm('需要重试吗?', '核心组件下载失败', {
|
||||
await ElMessageBox.confirm(h(FailMessage), {
|
||||
closeOnClickModal: false,
|
||||
closeOnPressEscape: false,
|
||||
showClose: false,
|
||||
type: 'error',
|
||||
cancelButtonText: '退出程序'
|
||||
cancelButtonText: '退出程序',
|
||||
confirmButtonText: '重试'
|
||||
})
|
||||
.then(() => {
|
||||
gtagRenderer('start_retry_download_deps')
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<template>
|
||||
<div>
|
||||
<p>核心组件下载失败,请重试。</p>
|
||||
<br />
|
||||
<br />
|
||||
<p>
|
||||
<b text-orange>提示:</b>由于网络颠簸,如果多次重试仍然失败,请 <el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
font-size-14px
|
||||
@click="handleOpenChromeDownloadPage"
|
||||
>点击此处</el-button
|
||||
> 下载最新版本 Google Chrome
|
||||
浏览器,安装完毕后,重新打开本程序,程序会自动检测该浏览器并使用它。
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { gtagRenderer } from '@renderer/utils/gtag'
|
||||
import debounce from 'lodash-es/debounce'
|
||||
const { ipcRenderer } = electron
|
||||
|
||||
const handleOpenChromeDownloadPage = debounce(
|
||||
async () => {
|
||||
gtagRenderer('open_chrome_download_page_clicked')
|
||||
ipcRenderer.send('open-external-link', 'https://www.google.cn/chrome/')
|
||||
},
|
||||
1000,
|
||||
{ leading: true, trailing: false }
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
Reference in New Issue
Block a user