electron-updator 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,18 @@
24
24
  $ npm i electron-updator --save
25
25
  ```
26
26
 
27
+ <!-- GITCONTRIBUTOR_START -->
28
+
29
+ ## Contributors
30
+
31
+ |[<img src="https://avatars.githubusercontent.com/u/1011681?v=4" width="100px;"/><br/><sub><b>xudafeng</b></sub>](https://github.com/xudafeng)<br/>|[<img src="https://avatars.githubusercontent.com/u/4081746?v=4" width="100px;"/><br/><sub><b>zlyi</b></sub>](https://github.com/zlyi)<br/>|
32
+ | :---: | :---: |
33
+
34
+
35
+ This project follows the git-contributor [spec](https://github.com/xudafeng/git-contributor), auto updated at `Mon Jan 30 2023 19:21:07 GMT+0800`.
36
+
37
+ <!-- GITCONTRIBUTOR_END -->
38
+
27
39
  ## License
28
40
 
29
41
  The MIT License (MIT)
@@ -52,19 +52,6 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
52
52
  }
53
53
  async checkForUpdates(executeType = constants_1.ExecuteType.Auto) {
54
54
  this.logger.info(`AppUpdator#checkForUpdates:state is ${this.state}`);
55
- if (executeType === constants_1.ExecuteType.User) {
56
- if (this.state === "downloaded" /* StateType.Downloaded */) {
57
- this.logger.info(`AppUpdator#checkForUpdates:UPDATE_DOWNLOADED`);
58
- this.emit(constants_1.EventType.UPDATE_DOWNLOADED, {
59
- executeType,
60
- });
61
- }
62
- else {
63
- this.logger.info(`AppUpdator#checkForUpdates:UPDATE_NOT_AVAILABLE`);
64
- this.emit(constants_1.EventType.UPDATE_NOT_AVAILABLE, { updateInfo: this.updateInfo });
65
- }
66
- return;
67
- }
68
55
  this.setState("idle" /* StateType.Idle */);
69
56
  try {
70
57
  // 新一轮更新流程,更新 TimeStamp
@@ -76,17 +63,20 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
76
63
  const needUpdate = this.options?.needUpdate(updateInfoResponse);
77
64
  if (!needUpdate) {
78
65
  this.logger.info(`updateInfo is ${JSON.stringify(this.updateInfo)},needUpdate is false`);
79
- this.emit(constants_1.EventType.UPDATE_NOT_AVAILABLE, { updateInfo: this.updateInfo });
66
+ this.emit(constants_1.EventType.UPDATE_NOT_AVAILABLE, {
67
+ updateInfo: this.updateInfo,
68
+ executeType,
69
+ });
80
70
  this.setState("idle" /* StateType.Idle */);
81
71
  return;
82
72
  }
83
- this.logger.info(`AppUpdator#checkForUpdates:needUpdate is true`);
73
+ this.logger.info('AppUpdator#checkForUpdates:needUpdate is true');
84
74
  this.availableUpdate = this.doGetAvailableUpdateInfo(this.updateInfo);
85
- if (!this.options?.autoDownload) {
86
- this.logger.info(`AppUpdator#checkForUpdates:emit UPDATE_AVAILABLE`);
75
+ if (!this.options?.autoDownload || executeType === constants_1.ExecuteType.User) {
76
+ this.logger.info('AppUpdator#checkForUpdates:emit UPDATE_AVAILABLE');
87
77
  this.emit(constants_1.EventType.UPDATE_AVAILABLE, {
88
- executeType,
89
78
  updateInfo: this.updateInfo,
79
+ executeType,
90
80
  });
91
81
  return;
92
82
  }
@@ -103,7 +93,7 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
103
93
  await this.downloadUpdateFile(this.updateInfo);
104
94
  const result = await this.preCheck();
105
95
  if (result.success) {
106
- this.logger.info(`AppUpdator#downloadUpdate:emit UPDATE_DOWNLOADED`);
96
+ this.logger.info('AppUpdator#downloadUpdate:emit UPDATE_DOWNLOADED');
107
97
  this.emit(constants_1.EventType.UPDATE_DOWNLOADED, {
108
98
  executeType,
109
99
  });
@@ -116,6 +106,7 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
116
106
  async quitAndInstall() {
117
107
  this.logger.info(`AppUpdator#quitAndInstall:state is ${this.state}`);
118
108
  if (this.state !== "downloaded" /* StateType.Downloaded */) {
109
+ this.downloadUpdate();
119
110
  return;
120
111
  }
121
112
  this.setState("idle" /* StateType.Idle */);
@@ -128,7 +119,7 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
128
119
  result = await this.doQuitAndInstallAsar();
129
120
  }
130
121
  if (result.success) {
131
- this.logger.warn(`AppUpdator#quitAndInstall:install success`);
122
+ this.logger.warn('AppUpdator#quitAndInstall:install success');
132
123
  this.emit(constants_1.EventType.BEFORE_QUIT_FOR_UPDATE);
133
124
  }
134
125
  else {
@@ -141,11 +132,11 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
141
132
  }
142
133
  }
143
134
  async preCheckForAsar() {
144
- this.logger.info(`AppUpdator#preCheckForAsar`);
135
+ this.logger.info('AppUpdator#preCheckForAsar');
145
136
  return await this.unzip();
146
137
  }
147
138
  async preCheck() {
148
- this.logger.info(`AppUpdator#preCheck`);
139
+ this.logger.info('AppUpdator#preCheck');
149
140
  const { resourcePath } = this.availableUpdate;
150
141
  if (this.state !== "downloaded" /* StateType.Downloaded */) {
151
142
  return {
@@ -155,7 +146,7 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
155
146
  }
156
147
  // 清理老包
157
148
  try {
158
- this.logger.info(`AppUpdator#preCheck:cleanOldArchive`);
149
+ this.logger.info('AppUpdator#preCheck:cleanOldArchive');
159
150
  await (0, utils_1.cleanOldArchive)(resourcePath);
160
151
  }
161
152
  catch (e) {
@@ -205,7 +196,7 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
205
196
  this.emit(constants_1.EventType.UPDATE_DOWNLOAD_PROGRESS, data);
206
197
  },
207
198
  });
208
- this.logger.info(`AppUpdator#downloadUpdateFile:Downloaded`);
199
+ this.logger.info('AppUpdator#downloadUpdateFile:Downloaded');
209
200
  this.setState("downloaded" /* StateType.Downloaded */);
210
201
  }
211
202
  catch (e) {
@@ -215,7 +206,7 @@ class AppUpdator extends eventemitter3_1.EventEmitter {
215
206
  }
216
207
  }
217
208
  async unzip() {
218
- this.logger.info(`AppUpdator#unzip:start`);
209
+ this.logger.info('AppUpdator#unzip:start');
219
210
  try {
220
211
  const result = await this.doUnzip();
221
212
  if (!result.success) {
@@ -91,10 +91,6 @@ class MacUpdator extends app_updator_1.AppUpdator {
91
91
  error,
92
92
  };
93
93
  }
94
- this.logger.warn('AppUpdator#quitAndInstall:install success');
95
- this.emit(constants_1.EventType.BEFORE_QUIT_FOR_UPDATE);
96
- // 重启应用
97
- this.app.relaunch();
98
94
  return {
99
95
  success: true,
100
96
  };
@@ -20,6 +20,7 @@ const downloadFile = async ({ logger, url, signature, targetDir, progressHandle
20
20
  logger.info('downloadFile#downloadFile (start)');
21
21
  const writeStream = (0, _1.createWriteStream)(targetDir);
22
22
  let currentLength = 0;
23
+ let currentProgress = 0;
23
24
  progressHandle({
24
25
  status: constants_1.DownloadProgressStatus.Begin,
25
26
  });
@@ -37,9 +38,12 @@ const downloadFile = async ({ logger, url, signature, targetDir, progressHandle
37
38
  try {
38
39
  currentLength += data.length;
39
40
  const progress = (currentLength / totalLength) * 100;
41
+ if (progress > currentProgress) {
42
+ currentProgress++;
43
+ }
40
44
  progressHandle({
41
45
  status: constants_1.DownloadProgressStatus.Downloading,
42
- progress,
46
+ progress: currentProgress,
43
47
  url,
44
48
  signature,
45
49
  data,
@@ -12,7 +12,7 @@ const app_updator_1 = require("./app-updator");
12
12
  const utils_1 = require("./utils");
13
13
  class WindowsUpdator extends app_updator_1.AppUpdator {
14
14
  doGetAvailableUpdateInfo(updateInfo) {
15
- this.logger.info(`WindowsUpdator#doGetAvailableUpdateInfo:start`);
15
+ this.logger.info('WindowsUpdator#doGetAvailableUpdateInfo:start');
16
16
  let resourcePath = path_1.default.resolve(this.app.userDataPath);
17
17
  const latestAsarPath = path_1.default.resolve(resourcePath, 'latest.asar');
18
18
  const latestAppPath = path_1.default.resolve(resourcePath, 'latest');
@@ -27,12 +27,12 @@ class WindowsUpdator extends app_updator_1.AppUpdator {
27
27
  };
28
28
  }
29
29
  async doPreCheckForPackage() {
30
- this.logger.info(`WindowsUpdator#doPreCheckForPackage:start`);
30
+ this.logger.info('WindowsUpdator#doPreCheckForPackage:start');
31
31
  // Windows 全量安装默认预检正常
32
32
  return Promise.resolve({ success: true });
33
33
  }
34
34
  async doUnzip() {
35
- this.logger.info(`WindowsUpdator#doUnzip:start`);
35
+ this.logger.info('WindowsUpdator#doUnzip:start');
36
36
  try {
37
37
  const { downloadTargetDir, resourcePath } = this.availableUpdate;
38
38
  const unzipExe = (0, utils_1.getExecuteFile)('unzip.exe');
@@ -45,13 +45,13 @@ class WindowsUpdator extends app_updator_1.AppUpdator {
45
45
  error,
46
46
  };
47
47
  }
48
- this.logger.info(`WindowsUpdator#doUnzip:success`);
48
+ this.logger.info('WindowsUpdator#doUnzip:success');
49
49
  return {
50
50
  success: true,
51
51
  };
52
52
  }
53
53
  async doQuitAndInstallPackage() {
54
- this.logger.info(`WindowsUpdator#doQuitAndInstallPackage:success`);
54
+ this.logger.info('WindowsUpdator#doQuitAndInstallPackage:success');
55
55
  const { downloadTargetDir } = this.availableUpdate;
56
56
  try {
57
57
  // Windows 全量安装
@@ -67,7 +67,7 @@ class WindowsUpdator extends app_updator_1.AppUpdator {
67
67
  }
68
68
  }
69
69
  async doQuitAndInstallAsar() {
70
- this.logger.info(`WindowsUpdator#doQuitAndInstallAsar:start`);
70
+ this.logger.info('WindowsUpdator#doQuitAndInstallAsar:start');
71
71
  const productName = this.options?.productName;
72
72
  const { resourcePath } = this.availableUpdate;
73
73
  const exePath = this.app.exePath;
@@ -76,6 +76,8 @@ class WindowsUpdator extends app_updator_1.AppUpdator {
76
76
  const executeCommand = `"${updateExePath}" "${targetPath}" "${resourcePath}" "${productName}.exe" "${exePath}"`;
77
77
  try {
78
78
  await (0, sudo_prompt_exec_1.sudoPromptExec)(this.options, this.logger, executeCommand);
79
+ this.logger.warn('AppUpdator#quitAndInstall:install success');
80
+ this.emit(constants_1.EventType.BEFORE_QUIT_FOR_UPDATE);
79
81
  return Promise.resolve({ success: true });
80
82
  }
81
83
  catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electron-updator",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "electron-updator is a software updator management solution for Electron applications, It is convenient to complete full software update and dynamic update.",
5
5
  "scripts": {
6
6
  "build": "sh ./build.sh",
@@ -25,10 +25,11 @@
25
25
  "url": "https://github.com/electron-modules/electron-updator"
26
26
  },
27
27
  "dependencies": {
28
+ "eventemitter3": "^4.0.0",
28
29
  "lodash": "4.17.21",
29
30
  "moment": "2.29.4",
30
- "eventemitter3": "^4.0.0",
31
- "rimraf-alt": "0.2.0",
31
+ "rimraf-alt": "*",
32
+ "sudo-prompt-alt": "9",
32
33
  "urllib": "2.34.1"
33
34
  },
34
35
  "devDependencies": {
@@ -47,6 +48,8 @@
47
48
  "electron": "18",
48
49
  "electron-windows": "18",
49
50
  "eslint": "^7.32.0",
51
+ "eslint-config-egg": "^9.0.0",
52
+ "eslint-plugin-no-only-tests": "^2.6.0",
50
53
  "git-contributor": "*",
51
54
  "husky": "^7.0.4",
52
55
  "mm": "^3.0.2",