mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-02-02 11:08:13 -05:00
🔨 Refactor: optimize auto update
This commit is contained in:
parent
2fab2cd79d
commit
e0e26bd9ad
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piclist",
|
||||
"version": "1.5.3",
|
||||
"version": "1.5.2",
|
||||
"author": {
|
||||
"name": "Kuingsmile",
|
||||
"email": "msq@msq.pub"
|
||||
|
@ -779,7 +779,7 @@ TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR: Custom config file parse error, please check
|
||||
TIPS_SHORTCUT_MODIFIED_SUCCEED: Shortcut modified successfully
|
||||
TIPS_SHORTCUT_MODIFIED_CONFLICT: Shortcut conflict, please reset
|
||||
TIPS_CUSTOM_LINK_STYLE_MODIFIED_SUCCEED: Custom link style modified successfully
|
||||
TIPS_FIND_NEW_VERSION: Find new version ${v}, update many new features, do you want to download the latest version?
|
||||
TIPS_FIND_NEW_VERSION: Find new version ${v}, update many new features, do you want to download the latest version in the background?
|
||||
UPDATE_DOWNLOADED: Update downloaded
|
||||
TIPS_UPDATE_DOWNLOADED: The update has been downloaded and will be installed on the next app restart. Would you like to restart now?
|
||||
# privacy
|
||||
|
@ -780,7 +780,7 @@ TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR: 自定义文件解析出错,请检查路
|
||||
TIPS_SHORTCUT_MODIFIED_SUCCEED: 快捷键已经修改成功
|
||||
TIPS_SHORTCUT_MODIFIED_CONFLICT: 快捷键冲突,请重新设置
|
||||
TIPS_CUSTOM_LINK_STYLE_MODIFIED_SUCCEED: 自定义链接格式已经修改成功
|
||||
TIPS_FIND_NEW_VERSION: 发现新版本${v},更新了很多功能,是否去下载最新的版本?
|
||||
TIPS_FIND_NEW_VERSION: 发现新版本${v},更新了很多功能,是否后台下载最新的版本?
|
||||
UPDATE_DOWNLOADED: 更新已下载
|
||||
TIPS_UPDATE_DOWNLOADED: 更新已下载,将在下次启动时安装,是否现在重启?
|
||||
|
||||
|
@ -778,7 +778,7 @@ TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR: 自訂設定檔案解析出錯,請檢查
|
||||
TIPS_SHORTCUT_MODIFIED_SUCCEED: 快捷鍵已經修改成功
|
||||
TIPS_SHORTCUT_MODIFIED_CONFLICT: 快捷鍵衝突,請重新設定
|
||||
TIPS_CUSTOM_LINK_STYLE_MODIFIED_SUCCEED: 自訂連結格式已經修改成功
|
||||
TIPS_FIND_NEW_VERSION: 發現新版本${v},更新了很多功能,是否去下載最新的版本?
|
||||
TIPS_FIND_NEW_VERSION: 發現新版本${v},更新了很多功能,是否後台下載最新的版本?
|
||||
UPDATE_DOWNLOADED: 更新已下載
|
||||
TIPS_UPDATE_DOWNLOADED: 更新已下載,将在下次啟動時安裝,是否立即重啟?
|
||||
# privacy
|
||||
|
@ -1,37 +1,36 @@
|
||||
"use strict";
|
||||
'use strict'
|
||||
|
||||
require('dotenv').config()
|
||||
|
||||
const { notarize } = require("@electron/notarize")
|
||||
const { notarize } = require('@electron/notarize')
|
||||
const {
|
||||
ELECTRON_SKIP_NOTARIZATION,
|
||||
XCODE_APP_LOADER_EMAIL,
|
||||
XCODE_APP_LOADER_PASSWORD,
|
||||
XCODE_APP_LOADER_PASSWORD
|
||||
} = process.env
|
||||
|
||||
async function main(context) {
|
||||
async function main (context) {
|
||||
const { electronPlatformName, appOutDir } = context
|
||||
|
||||
if (
|
||||
electronPlatformName !== "darwin" ||
|
||||
ELECTRON_SKIP_NOTARIZATION === "true" ||
|
||||
electronPlatformName !== 'darwin' ||
|
||||
ELECTRON_SKIP_NOTARIZATION === 'true' ||
|
||||
!XCODE_APP_LOADER_EMAIL ||
|
||||
!XCODE_APP_LOADER_PASSWORD
|
||||
) {
|
||||
console.log("Skipping Apple notarization.")
|
||||
return;
|
||||
console.log('Skipping Apple notarization.')
|
||||
return
|
||||
}
|
||||
|
||||
console.log("Starting Apple notarization.")
|
||||
const appName = context.packager.appInfo.productFilename;
|
||||
console.log('Starting Apple notarization.')
|
||||
const appName = context.packager.appInfo.productFilename
|
||||
await notarize({
|
||||
appBundleId: "com.kuingsmile.piclist",
|
||||
appBundleId: 'com.kuingsmile.piclist',
|
||||
appPath: `${appOutDir}/${appName}.app`,
|
||||
appleId: XCODE_APP_LOADER_EMAIL,
|
||||
appleIdPassword: XCODE_APP_LOADER_PASSWORD,
|
||||
appleIdPassword: XCODE_APP_LOADER_PASSWORD
|
||||
})
|
||||
console.log("Finished Apple notarization.")
|
||||
|
||||
console.log('Finished Apple notarization.')
|
||||
}
|
||||
|
||||
exports.default = main;
|
||||
exports.default = main
|
||||
|
@ -14,7 +14,6 @@ const ACCOUNT_ID = process.env.R2_ACCOUNT_ID
|
||||
const SECRET_ID = process.env.R2_SECRET_ID
|
||||
const SECRET_KEY = process.env.R2_SECRET_KEY
|
||||
|
||||
|
||||
const uploadFile = async () => {
|
||||
try {
|
||||
const platform = process.platform
|
||||
|
@ -7,10 +7,11 @@ const pkg = require('../package.json')
|
||||
const configList = require('./config')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const yaml = require('js-yaml')
|
||||
|
||||
const BUCKET = 'piclist-dl'
|
||||
const VERSION = pkg.version
|
||||
const FILE_PATH = `latest/`
|
||||
const FILE_PATH = 'latest/'
|
||||
const ACCOUNT_ID = process.env.R2_ACCOUNT_ID
|
||||
const SECRET_ID = process.env.R2_SECRET_ID
|
||||
const SECRET_KEY = process.env.R2_SECRET_KEY
|
||||
@ -19,9 +20,22 @@ const s3 = new S3({
|
||||
endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
|
||||
accessKeyId: SECRET_ID,
|
||||
secretAccessKey: SECRET_KEY,
|
||||
signatureVersion: 'v4',
|
||||
signatureVersion: 'v4'
|
||||
})
|
||||
|
||||
const removeDupField = path => {
|
||||
const file = fs.readFileSync(path, 'utf8')
|
||||
const data = yaml.load(file)
|
||||
const filesMap = {}
|
||||
data.files.forEach(file => {
|
||||
const key = file.url + file.sha512 + file.size
|
||||
filesMap[key] = file
|
||||
})
|
||||
data.files = Object.values(filesMap)
|
||||
const newYml = yaml.dump(data, { lineWidth: -1 })
|
||||
fs.writeFileSync(path, newYml, 'utf8')
|
||||
}
|
||||
|
||||
const uploadFile = async () => {
|
||||
try {
|
||||
const platform = process.platform
|
||||
@ -30,7 +44,7 @@ const uploadFile = async () => {
|
||||
for (const [index, config] of configList[platform].entries()) {
|
||||
const fileName = `${config.appNameWithPrefix}${VERSION}${config.arch}${config.ext}`
|
||||
const distPath = path.join(__dirname, '../dist_electron')
|
||||
let versionFileName = config['version-file']
|
||||
const versionFileName = config['version-file']
|
||||
console.log('[PicList Dist] Uploading...', fileName, `${index + 1}/${configList[platform].length}`)
|
||||
const fileStream = fs.createReadStream(path.join(distPath, fileName))
|
||||
const options = {
|
||||
@ -55,7 +69,7 @@ const uploadFile = async () => {
|
||||
}
|
||||
}
|
||||
})
|
||||
parallelUploads3.on('httpUploadProgress', (progress) => {
|
||||
parallelUploads3.on('httpUploadProgress', progress => {
|
||||
const progressBar = Math.round((progress.loaded / progress.total) * 100)
|
||||
process.stdout.write(`\r${progressBar}% ${fileName}`)
|
||||
})
|
||||
@ -72,17 +86,22 @@ const uploadFile = async () => {
|
||||
} else {
|
||||
versionFilePath = path.join(distPath, 'latest-linux.yml')
|
||||
}
|
||||
removeDupField(versionFilePath)
|
||||
const versionFileBuffer = fs.readFileSync(versionFilePath)
|
||||
await s3.upload({
|
||||
await s3
|
||||
.upload({
|
||||
Bucket: BUCKET,
|
||||
Key: `${versionFileName}`,
|
||||
Body: versionFileBuffer
|
||||
}).promise()
|
||||
await s3.upload({
|
||||
})
|
||||
.promise()
|
||||
await s3
|
||||
.upload({
|
||||
Bucket: BUCKET,
|
||||
Key: `${FILE_PATH}${versionFileName}`,
|
||||
Body: versionFileBuffer
|
||||
}).promise()
|
||||
})
|
||||
.promise()
|
||||
versionFileHasUploaded = true
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,6 @@ import { IWindowList } from '#/types/enum'
|
||||
import pasteTemplate from '~/main/utils/pasteTemplate'
|
||||
import pkg from 'root/package.json'
|
||||
import { ensureFilePath, handleCopyUrl } from '~/main/utils/common'
|
||||
import { privacyManager } from '~/main/utils/privacyManager'
|
||||
// import { T } from '#/i18n'
|
||||
import { T } from '~/main/i18n'
|
||||
import { isMacOSVersionGreaterThanOrEqualTo } from '~/main/utils/getMacOSVersion'
|
||||
@ -50,12 +49,6 @@ export function createMenu () {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('PRIVACY_AGREEMENT'),
|
||||
click () {
|
||||
privacyManager.show(false)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('RELOAD_APP'),
|
||||
click () {
|
||||
@ -115,12 +108,6 @@ export function createContextMenu () {
|
||||
// @ts-ignore
|
||||
submenu
|
||||
},
|
||||
{
|
||||
label: T('PRIVACY_AGREEMENT'),
|
||||
click () {
|
||||
privacyManager.show(false)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: T('RELOAD_APP'),
|
||||
click () {
|
||||
|
@ -43,6 +43,7 @@ import getManageApi from '../manage/Main'
|
||||
import UpDownTaskQueue from '../manage/datastore/upDownTaskQueue'
|
||||
import { T } from '~/main/i18n'
|
||||
import { UpdateInfo, autoUpdater } from 'electron-updater'
|
||||
import updateChecker from '../utils/updateChecker'
|
||||
const isDevelopment = process.env.NODE_ENV !== 'production'
|
||||
|
||||
const handleStartUpFiles = (argv: string[], cwd: string) => {
|
||||
@ -77,11 +78,14 @@ autoUpdater.on('update-available', (info: UpdateInfo) => {
|
||||
buttons: ['Yes', 'No'],
|
||||
message: T('TIPS_FIND_NEW_VERSION', {
|
||||
v: info.version
|
||||
})
|
||||
}),
|
||||
checkboxLabel: T('NO_MORE_NOTICE'),
|
||||
checkboxChecked: false
|
||||
}).then((result) => {
|
||||
if (result.response === 0) {
|
||||
autoUpdater.downloadUpdate()
|
||||
}
|
||||
db.set('settings.showUpdateTip', !result.checkboxChecked)
|
||||
})
|
||||
})
|
||||
|
||||
@ -151,8 +155,7 @@ class LifeCycle {
|
||||
}
|
||||
createTray()
|
||||
db.set('needReload', false)
|
||||
// updateChecker()
|
||||
autoUpdater.checkForUpdatesAndNotify()
|
||||
updateChecker()
|
||||
// 不需要阻塞
|
||||
process.nextTick(() => {
|
||||
shortKeyHandler.init()
|
||||
|
@ -1,13 +1,9 @@
|
||||
import { dialog, shell } from 'electron'
|
||||
import db from '~/main/apis/core/datastore'
|
||||
import pkg from 'root/package.json'
|
||||
import { lt } from 'semver'
|
||||
import { T } from '~/main/i18n'
|
||||
import { getLatestVersion } from '#/utils/getLatestVersion'
|
||||
const version = pkg.version
|
||||
import { autoUpdater } from 'electron-updater'
|
||||
// const releaseUrl = 'https://api.github.com/repos/Molunerfinn/PicGo/releases'
|
||||
// const releaseUrlBackup = 'https://picgo-1251750343.cos.ap-chengdu.myqcloud.com'
|
||||
const downloadUrl = 'https://github.com/Kuingsmile/PicList/releases/latest'
|
||||
// const downloadUrl = 'https://github.com/Kuingsmile/PicList/releases/latest'
|
||||
|
||||
const checkVersion = async () => {
|
||||
let showTip = db.get('settings.showUpdateTip')
|
||||
@ -18,25 +14,7 @@ const checkVersion = async () => {
|
||||
if (showTip) {
|
||||
const res: string = await getLatestVersion()
|
||||
if (res !== '') {
|
||||
const latest = res
|
||||
const result = compareVersion2Update(version, latest)
|
||||
if (result) {
|
||||
dialog.showMessageBox({
|
||||
type: 'info',
|
||||
title: T('FIND_NEW_VERSION'),
|
||||
buttons: ['Yes', 'No'],
|
||||
message: T('TIPS_FIND_NEW_VERSION', {
|
||||
v: latest
|
||||
}),
|
||||
checkboxLabel: T('NO_MORE_NOTICE'),
|
||||
checkboxChecked: false
|
||||
}).then(res => {
|
||||
if (res.response === 0) { // if selected yes
|
||||
shell.openExternal(downloadUrl)
|
||||
}
|
||||
db.set('settings.showUpdateTip', !res.checkboxChecked)
|
||||
})
|
||||
}
|
||||
autoUpdater.checkForUpdatesAndNotify()
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
@ -45,13 +23,4 @@ const checkVersion = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
// if true -> update else return false
|
||||
const compareVersion2Update = (current: string, latest: string) => {
|
||||
try {
|
||||
return lt(current, latest)
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export default checkVersion
|
||||
|
@ -151,7 +151,6 @@
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="false"
|
||||
:label="$T('SETTINGS_OPEN_UPDATE_HELPER')"
|
||||
>
|
||||
<el-switch
|
||||
|
Loading…
Reference in New Issue
Block a user