张恒

添加了updater的示例,但是似乎,更新包安装会有点点问题,待修复

......@@ -55,9 +55,9 @@ let mainConfig = {
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: resolve('dist/electron')
})
// new CleanWebpackPlugin({
// cleanOnceBeforeBuildPatterns: resolve('dist/electron')
// })
],
resolve: {
alias: {
......
......@@ -14,3 +14,4 @@ yarn-error.log*
*.njsproj
*.sln
electron-vue-template-ts.7z
server/client/electron-vue-admin Setup 0.0.1.exe
......
......@@ -1401,6 +1401,11 @@
"integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==",
"dev": true
},
"@types/semver": {
"version": "6.0.2",
"resolved": "https://registry.npm.taobao.org/@types/semver/download/@types/semver-6.0.2.tgz",
"integrity": "sha1-XosJ8OSvUwNLHQ+5l3oneEeDYgU="
},
"@types/source-list-map": {
"version": "0.1.2",
"resolved": "http://r.cnpmjs.org/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz",
......@@ -2114,7 +2119,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
......@@ -2995,7 +2999,7 @@
},
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1569207136481&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
"integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
"dev": true
}
......@@ -3260,7 +3264,6 @@
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz",
"integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==",
"dev": true,
"requires": {
"debug": "^4.1.1",
"sax": "^1.2.4"
......@@ -3270,7 +3273,6 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
......@@ -3278,8 +3280,7 @@
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
......@@ -5032,6 +5033,38 @@
"integrity": "sha1-Lb658L3/3bFmL5ygDSbEnTHcD34=",
"dev": true
},
"electron-updater": {
"version": "4.1.2",
"resolved": "https://registry.npm.taobao.org/electron-updater/download/electron-updater-4.1.2.tgz",
"integrity": "sha1-RqbmLMjQx9k123r/gyB9oqIf94g=",
"requires": {
"@types/semver": "^6.0.1",
"builder-util-runtime": "8.3.0",
"fs-extra": "^8.1.0",
"js-yaml": "^3.13.1",
"lazy-val": "^1.0.4",
"lodash.isequal": "^4.5.0",
"pako": "^1.0.10",
"semver": "^6.2.0"
},
"dependencies": {
"fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-8.1.0.tgz",
"integrity": "sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=",
"requires": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz",
"integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0="
}
}
},
"element-ui": {
"version": "2.12.0",
"resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.12.0.tgz",
......@@ -5610,8 +5643,7 @@
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"esquery": {
"version": "1.0.1",
......@@ -8270,7 +8302,7 @@
"dependencies": {
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
"resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz",
"integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
"dev": true,
"requires": {
......@@ -8306,7 +8338,6 @@
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
......@@ -8387,7 +8418,6 @@
"version": "4.0.0",
"resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
......@@ -8443,8 +8473,7 @@
"lazy-val": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
"integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
"dev": true
"integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q=="
},
"lcid": {
"version": "1.0.0",
......@@ -8701,6 +8730,11 @@
"integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
"dev": true
},
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz",
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
},
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npm.taobao.org/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz",
......@@ -10124,8 +10158,7 @@
"pako": {
"version": "1.0.10",
"resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz",
"integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=",
"dev": true
"integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI="
},
"parallel-transform": {
"version": "1.1.0",
......@@ -11716,8 +11749,7 @@
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"schema-utils": {
"version": "1.0.0",
......@@ -12432,8 +12464,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"sshpk": {
"version": "1.16.1",
......@@ -13621,8 +13652,7 @@
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": {
"version": "1.0.0",
......@@ -14193,7 +14223,7 @@
"dependencies": {
"acorn": {
"version": "6.3.0",
"resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.3.0.tgz",
"resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.3.0.tgz",
"integrity": "sha1-AIdQkRn/pPwKAEHR6TpBfmjLhW4=",
"dev": true
},
......@@ -14228,7 +14258,7 @@
},
"cacache": {
"version": "12.0.3",
"resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz",
"resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.3.tgz",
"integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=",
"dev": true,
"requires": {
......
......@@ -16,9 +16,16 @@
"build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js",
"pack": "npm run pack:main && npm run pack:renderer",
"pack:main": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.main.config.js",
"pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js"
"pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js",
"update:serve":"node server/index.js"
},
"build": {
"publish": [
{
"provider": "generic",
"url": "http://127.0.0.1:25565/"
}
],
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true
......@@ -59,6 +66,7 @@
"dependencies": {
"axios": "^0.19.0",
"date-fns": "^1.30.1",
"electron-updater": "^4.1.2",
"element-ui": "^2.12.0",
"js-cookie": "^2.2.0",
"nedb": "^1.8.0",
......@@ -115,6 +123,7 @@
"eslint-plugin-node": "^9.2.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.0",
"express": "^4.17.1",
"file-loader": "^4.2.0",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "0.8.0",
......
version: 6.0.13
files:
- url: electron-vue-admin Setup 0.0.1.exe
sha512: 6higqp9mFJANIRdE59Cyl/3CgaWuHZU92EaRUfwTjXPi9b/OH/ndiLNhK8AgWB9JIz57xBwnmgXl+eT0xAjUGw==
size: 46775259
path: electron-vue-admin Setup 0.0.1.exe
sha512: 6higqp9mFJANIRdE59Cyl/3CgaWuHZU92EaRUfwTjXPi9b/OH/ndiLNhK8AgWB9JIz57xBwnmgXl+eT0xAjUGw==
releaseDate: '2019-10-18T05:21:25.707Z'
var express = require('express')
var fs = require('fs')
const path = require('path')
var app = express()
app.use(express.static(path.join(__dirname, './client')))
var server = app.listen(25565, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
\ No newline at end of file
import { autoUpdater } from 'electron-updater'
import { ipcMain } from 'electron'
/**
* -1 检查更新失败 0 正在检查更新 1 检测到新版本,准备下载 2 未检测到新版本 3 下载中 4 下载暂停 5 下载暂停恢复 6 下载完成 7 下载失败 8 取消下载
* */
function Message (mainWindow, type, data) {
const senddata = {
state: type,
msg: data
}
mainWindow.webContents.send('UpdateMsg', senddata)
}
export default {
Update (mainWindow) {
// 设置地址要和package中的一样
autoUpdater.setFeedURL('http://127.0.0.1:25565/')
// 当更新发生错误的时候触发。
autoUpdater.on('error', (err) => {
console.log('更新出现错误')
console.log(err)
Message(mainWindow, -1, err)
})
// 当开始检查更新的时候触发
autoUpdater.on('checking-for-update', (event, arg) => {
console.log('开始检查更新')
Message(mainWindow, 0)
})
// 发现可更新数据时
autoUpdater.on('update-available', (event, arg) => {
console.log('有更新')
Message(mainWindow, 1)
})
// 没有可更新数据时
autoUpdater.on('update-not-available', (event, arg) => {
console.log('没有更新')
Message(mainWindow, 2)
})
// 下载监听
autoUpdater.on('download-progress', (progressObj) => {
Message(mainWindow, 3, progressObj)
})
// 下载完成
autoUpdater.on('update-downloaded', () => {
console.log('下载完成')
Message(mainWindow, 4)
})
// 执行自动更新检查
ipcMain.on('check-update', () => {
autoUpdater.checkForUpdates()
})
// 渲染进程执行更新操作
ipcMain.on('confirm-update', () => {
autoUpdater.quitAndInstall()
})
}
}
......@@ -3,6 +3,7 @@ import menuconfig from '../config/menu'
import config from '@config'
import setIpc from './ipcMain'
import electronDevtoolsInstaller, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
import upload from './checkupdate'
const winURL = process.env.NODE_ENV === 'development' ? 'http://localhost:9080' : `file://${__dirname}/index.html`
var loadWindow = null
......@@ -35,6 +36,7 @@ function createMainWindow () {
mainWindow.loadURL(winURL)
setIpc.Mainfunc(ipcMain, mainWindow, config.IsUseSysTitle)
upload.Update(mainWindow)
if (process.env.NODE_ENV === 'development') {
mainWindow.webContents.once('dom-ready', () => {
......
......@@ -22,15 +22,22 @@
<el-button type="primary" round @click="setdata">写入数据</el-button>
<el-button type="primary" round @click="getdata">读取数据</el-button>
<el-button type="primary" round @click="deledata">清除所有数据</el-button>
<el-button type="primary" round @click="CheckUpdate">检查更新</el-button>
</div>
</div>
</main>
<el-dialog title="进度" :visible.sync="dialogVisible" :before-close="handleClose" center width="14%" top="45vh">
<div class="conten">
<el-progress type="dashboard" :percentage="percentage" :color="colors"></el-progress>
</div>
</el-dialog>
</div>
</template>
<script>
import SystemInformation from "./LandingPage/SystemInformation";
import api from "../tools/dialog";
import ipcApi from "../utils/ipcRenderer";
export default {
name: "landing-page",
components: { SystemInformation },
......@@ -40,8 +47,18 @@ export default {
name: "yyy",
age: "12"
},
textarray: []
textarray: [],
percentage:0,
colors: [
{ color: "#f56c6c", percentage: 20 },
{ color: "#e6a23c", percentage: 40 },
{ color: "#6f7ad3", percentage: 60 },
{ color: "#1989fa", percentage: 80 },
{ color: "#5cb87a", percentage: 100 }
],
dialogVisible: true
}),
created() {},
methods: {
// 获取electron方法
open() {
......@@ -90,6 +107,54 @@ export default {
// }
// api.ErrorMessageBox(dialog,data)
},
CheckUpdate() {
const dialog = this.$electron.remote.dialog;
ipcApi.send("check-update");
console.log("启动检查");
ipcApi.on("UpdateMsg", (event, data) => {
console.log(data)
switch (data.state) {
case -1:
const msgdata = {
title: "警告",
message: "更新检查失败!"
};
api.MessageBox(dialog, msgdata);
break;
case 0:
this.$message("正在检查更新");
break;
case 1:
this.$message({
type: "success",
message: "已检查到新版本,开始下载"
});
this.dialogVisible = true
break;
case 2:
this.$message({ type: "success", message: "无新版本" });
break;
case 3:
this.percentage = data.msg.percent.toFixed(1)
break;
case 4:
this.$alert("更新下载完成!", "提示", {
confirmButtonText: "确定",
callback: action => {
ipcApi.send("confirm-update");
}
});
break;
default:
break;
}
});
},
handleClose(){
this.dialogVisible = false
}
}
};
</script>
......@@ -152,4 +217,7 @@ main > div {
color: black;
margin-bottom: 10px;
}
.conten {
text-align: center;
}
</style>
\ No newline at end of file
......