@simplysm/capacitor-plugin-auto-update 13.0.0-beta.5 → 13.0.0-beta.50
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/dist/ApkInstaller.d.ts.map +1 -0
- package/dist/ApkInstaller.js.map +0 -1
- package/dist/AutoUpdate.d.ts.map +1 -0
- package/dist/AutoUpdate.js +3 -3
- package/dist/AutoUpdate.js.map +0 -1
- package/dist/IApkInstallerPlugin.d.ts.map +1 -0
- package/dist/IApkInstallerPlugin.js.map +0 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +0 -1
- package/dist/web/ApkInstallerWeb.d.ts.map +1 -0
- package/dist/web/ApkInstallerWeb.js.map +0 -1
- package/package.json +13 -9
- package/.cache/typecheck-browser.tsbuildinfo +0 -1
- package/dist/capacitor-plugin-auto-update/src/ApkInstaller.d.ts.map +0 -1
- package/dist/capacitor-plugin-auto-update/src/AutoUpdate.d.ts.map +0 -1
- package/dist/capacitor-plugin-auto-update/src/IApkInstallerPlugin.d.ts.map +0 -1
- package/dist/capacitor-plugin-auto-update/src/index.d.ts.map +0 -1
- package/dist/capacitor-plugin-auto-update/src/web/ApkInstallerWeb.d.ts.map +0 -1
- package/dist/capacitor-plugin-file-system/src/FileSystem.d.ts +0 -65
- package/dist/capacitor-plugin-file-system/src/FileSystem.d.ts.map +0 -1
- package/dist/capacitor-plugin-file-system/src/IFileSystemPlugin.d.ts +0 -49
- package/dist/capacitor-plugin-file-system/src/IFileSystemPlugin.d.ts.map +0 -1
- package/dist/capacitor-plugin-file-system/src/index.d.ts +0 -3
- package/dist/capacitor-plugin-file-system/src/index.d.ts.map +0 -1
- package/dist/capacitor-plugin-file-system/src/web/FileSystemWeb.d.ts +0 -54
- package/dist/capacitor-plugin-file-system/src/web/FileSystemWeb.d.ts.map +0 -1
- package/dist/capacitor-plugin-file-system/src/web/IndexedDbStore.d.ts +0 -16
- package/dist/capacitor-plugin-file-system/src/web/IndexedDbStore.d.ts.map +0 -1
- package/dist/capacitor-plugin-file-system/src/web/VirtualFileSystem.d.ts +0 -26
- package/dist/capacitor-plugin-file-system/src/web/VirtualFileSystem.d.ts.map +0 -1
- package/dist/core-browser/src/extensions/element-ext.d.ts +0 -98
- package/dist/core-browser/src/extensions/element-ext.d.ts.map +0 -1
- package/dist/core-browser/src/extensions/html-element-ext.d.ts +0 -54
- package/dist/core-browser/src/extensions/html-element-ext.d.ts.map +0 -1
- package/dist/core-browser/src/index.d.ts +0 -7
- package/dist/core-browser/src/index.d.ts.map +0 -1
- package/dist/core-browser/src/utils/blob.d.ts +0 -10
- package/dist/core-browser/src/utils/blob.d.ts.map +0 -1
- package/dist/core-browser/src/utils/download.d.ts +0 -11
- package/dist/core-browser/src/utils/download.d.ts.map +0 -1
- package/dist/core-common/src/common.types.d.ts +0 -74
- package/dist/core-common/src/common.types.d.ts.map +0 -1
- package/dist/core-common/src/env.d.ts +0 -6
- package/dist/core-common/src/env.d.ts.map +0 -1
- package/dist/core-common/src/errors/argument-error.d.ts +0 -25
- package/dist/core-common/src/errors/argument-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/not-implemented-error.d.ts +0 -29
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/sd-error.d.ts +0 -27
- package/dist/core-common/src/errors/sd-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/timeout-error.d.ts +0 -31
- package/dist/core-common/src/errors/timeout-error.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.d.ts +0 -15
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +0 -19
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +0 -215
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +0 -1
- package/dist/core-common/src/extensions/map-ext.d.ts +0 -57
- package/dist/core-common/src/extensions/map-ext.d.ts.map +0 -1
- package/dist/core-common/src/extensions/set-ext.d.ts +0 -36
- package/dist/core-common/src/extensions/set-ext.d.ts.map +0 -1
- package/dist/core-common/src/features/debounce-queue.d.ts +0 -53
- package/dist/core-common/src/features/debounce-queue.d.ts.map +0 -1
- package/dist/core-common/src/features/event-emitter.d.ts +0 -66
- package/dist/core-common/src/features/event-emitter.d.ts.map +0 -1
- package/dist/core-common/src/features/serial-queue.d.ts +0 -47
- package/dist/core-common/src/features/serial-queue.d.ts.map +0 -1
- package/dist/core-common/src/index.d.ts +0 -32
- package/dist/core-common/src/index.d.ts.map +0 -1
- package/dist/core-common/src/types/date-only.d.ts +0 -152
- package/dist/core-common/src/types/date-only.d.ts.map +0 -1
- package/dist/core-common/src/types/date-time.d.ts +0 -96
- package/dist/core-common/src/types/date-time.d.ts.map +0 -1
- package/dist/core-common/src/types/lazy-gc-map.d.ts +0 -80
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +0 -1
- package/dist/core-common/src/types/time.d.ts +0 -68
- package/dist/core-common/src/types/time.d.ts.map +0 -1
- package/dist/core-common/src/types/uuid.d.ts +0 -35
- package/dist/core-common/src/types/uuid.d.ts.map +0 -1
- package/dist/core-common/src/utils/bytes.d.ts +0 -51
- package/dist/core-common/src/utils/bytes.d.ts.map +0 -1
- package/dist/core-common/src/utils/date-format.d.ts +0 -90
- package/dist/core-common/src/utils/date-format.d.ts.map +0 -1
- package/dist/core-common/src/utils/json.d.ts +0 -34
- package/dist/core-common/src/utils/json.d.ts.map +0 -1
- package/dist/core-common/src/utils/num.d.ts +0 -60
- package/dist/core-common/src/utils/num.d.ts.map +0 -1
- package/dist/core-common/src/utils/obj.d.ts +0 -258
- package/dist/core-common/src/utils/obj.d.ts.map +0 -1
- package/dist/core-common/src/utils/path.d.ts +0 -23
- package/dist/core-common/src/utils/path.d.ts.map +0 -1
- package/dist/core-common/src/utils/primitive.d.ts +0 -18
- package/dist/core-common/src/utils/primitive.d.ts.map +0 -1
- package/dist/core-common/src/utils/str.d.ts +0 -103
- package/dist/core-common/src/utils/str.d.ts.map +0 -1
- package/dist/core-common/src/utils/template-strings.d.ts +0 -84
- package/dist/core-common/src/utils/template-strings.d.ts.map +0 -1
- package/dist/core-common/src/utils/transferable.d.ts +0 -47
- package/dist/core-common/src/utils/transferable.d.ts.map +0 -1
- package/dist/core-common/src/utils/wait.d.ts +0 -19
- package/dist/core-common/src/utils/wait.d.ts.map +0 -1
- package/dist/core-common/src/utils/xml.d.ts +0 -36
- package/dist/core-common/src/utils/xml.d.ts.map +0 -1
- package/dist/core-common/src/zip/sd-zip.d.ts +0 -80
- package/dist/core-common/src/zip/sd-zip.d.ts.map +0 -1
- package/dist/orm-common/src/db-context.d.ts +0 -669
- package/dist/orm-common/src/db-context.d.ts.map +0 -1
- package/dist/orm-common/src/errors/db-transaction-error.d.ts +0 -51
- package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +0 -1
- package/dist/orm-common/src/exec/executable.d.ts +0 -79
- package/dist/orm-common/src/exec/executable.d.ts.map +0 -1
- package/dist/orm-common/src/exec/queryable.d.ts +0 -708
- package/dist/orm-common/src/exec/queryable.d.ts.map +0 -1
- package/dist/orm-common/src/exec/search-parser.d.ts +0 -72
- package/dist/orm-common/src/exec/search-parser.d.ts.map +0 -1
- package/dist/orm-common/src/expr/expr-unit.d.ts +0 -25
- package/dist/orm-common/src/expr/expr-unit.d.ts.map +0 -1
- package/dist/orm-common/src/expr/expr.d.ts +0 -1369
- package/dist/orm-common/src/expr/expr.d.ts.map +0 -1
- package/dist/orm-common/src/index.d.ts +0 -32
- package/dist/orm-common/src/index.d.ts.map +0 -1
- package/dist/orm-common/src/models/system-migration.d.ts +0 -10
- package/dist/orm-common/src/models/system-migration.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +0 -95
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +0 -66
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +0 -84
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +0 -45
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +0 -84
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +0 -54
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +0 -84
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +0 -52
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/query-builder.d.ts +0 -7
- package/dist/orm-common/src/query-builder/query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/factory/column-builder.d.ts +0 -394
- package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/factory/index-builder.d.ts +0 -151
- package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts +0 -337
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/procedure-builder.d.ts +0 -202
- package/dist/orm-common/src/schema/procedure-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/table-builder.d.ts +0 -259
- package/dist/orm-common/src/schema/table-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/view-builder.d.ts +0 -183
- package/dist/orm-common/src/schema/view-builder.d.ts.map +0 -1
- package/dist/orm-common/src/types/column.d.ts +0 -172
- package/dist/orm-common/src/types/column.d.ts.map +0 -1
- package/dist/orm-common/src/types/db.d.ts +0 -175
- package/dist/orm-common/src/types/db.d.ts.map +0 -1
- package/dist/orm-common/src/types/expr.d.ts +0 -474
- package/dist/orm-common/src/types/expr.d.ts.map +0 -1
- package/dist/orm-common/src/types/query-def.d.ts +0 -351
- package/dist/orm-common/src/types/query-def.d.ts.map +0 -1
- package/dist/orm-common/src/utils/result-parser.d.ts +0 -38
- package/dist/orm-common/src/utils/result-parser.d.ts.map +0 -1
- package/dist/service-client/src/features/event-client.d.ts +0 -14
- package/dist/service-client/src/features/event-client.d.ts.map +0 -1
- package/dist/service-client/src/features/file-client.d.ts +0 -13
- package/dist/service-client/src/features/file-client.d.ts.map +0 -1
- package/dist/service-client/src/features/orm/orm-client-connector.d.ts +0 -10
- package/dist/service-client/src/features/orm/orm-client-connector.d.ts.map +0 -1
- package/dist/service-client/src/features/orm/orm-client-db-context-executor.d.ts +0 -26
- package/dist/service-client/src/features/orm/orm-client-db-context-executor.d.ts.map +0 -1
- package/dist/service-client/src/features/orm/orm-connect-config.d.ts +0 -13
- package/dist/service-client/src/features/orm/orm-connect-config.d.ts.map +0 -1
- package/dist/service-client/src/index.d.ts +0 -12
- package/dist/service-client/src/index.d.ts.map +0 -1
- package/dist/service-client/src/protocol/client-protocol-wrapper.d.ts +0 -23
- package/dist/service-client/src/protocol/client-protocol-wrapper.d.ts.map +0 -1
- package/dist/service-client/src/service-client.d.ts +0 -41
- package/dist/service-client/src/service-client.d.ts.map +0 -1
- package/dist/service-client/src/transport/service-transport.d.ts +0 -24
- package/dist/service-client/src/transport/service-transport.d.ts.map +0 -1
- package/dist/service-client/src/transport/socket-provider.d.ts +0 -31
- package/dist/service-client/src/transport/socket-provider.d.ts.map +0 -1
- package/dist/service-client/src/types/connection-config.d.ts +0 -8
- package/dist/service-client/src/types/connection-config.d.ts.map +0 -1
- package/dist/service-client/src/types/progress.types.d.ts +0 -10
- package/dist/service-client/src/types/progress.types.d.ts.map +0 -1
- package/dist/service-common/src/index.d.ts +0 -8
- package/dist/service-common/src/index.d.ts.map +0 -1
- package/dist/service-common/src/protocol/protocol.types.d.ts +0 -100
- package/dist/service-common/src/protocol/protocol.types.d.ts.map +0 -1
- package/dist/service-common/src/protocol/service-protocol.d.ts +0 -63
- package/dist/service-common/src/protocol/service-protocol.d.ts.map +0 -1
- package/dist/service-common/src/service-types/auto-update-service.types.d.ts +0 -17
- package/dist/service-common/src/service-types/auto-update-service.types.d.ts.map +0 -1
- package/dist/service-common/src/service-types/crypto-service.types.d.ts +0 -22
- package/dist/service-common/src/service-types/crypto-service.types.d.ts.map +0 -1
- package/dist/service-common/src/service-types/orm-service.types.d.ts +0 -30
- package/dist/service-common/src/service-types/orm-service.types.d.ts.map +0 -1
- package/dist/service-common/src/service-types/smtp-service.types.d.ts +0 -55
- package/dist/service-common/src/service-types/smtp-service.types.d.ts.map +0 -1
- package/dist/service-common/src/types.d.ts +0 -43
- package/dist/service-common/src/types.d.ts.map +0 -1
- package/src/ApkInstaller.ts +0 -54
- package/src/AutoUpdate.ts +0 -215
- package/src/IApkInstallerPlugin.ts +0 -12
- package/src/index.ts +0 -3
- package/src/web/ApkInstallerWeb.ts +0 -30
- /package/dist/{capacitor-plugin-auto-update/src/ApkInstaller.d.ts → ApkInstaller.d.ts} +0 -0
- /package/dist/{capacitor-plugin-auto-update/src/AutoUpdate.d.ts → AutoUpdate.d.ts} +0 -0
- /package/dist/{capacitor-plugin-auto-update/src/IApkInstallerPlugin.d.ts → IApkInstallerPlugin.d.ts} +0 -0
- /package/dist/{capacitor-plugin-auto-update/src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{capacitor-plugin-auto-update/src/web → web}/ApkInstallerWeb.d.ts +0 -0
package/src/AutoUpdate.ts
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
|
|
2
|
-
import { html, waitUntil, pathJoin, pathBasename, pathExtname } from "@simplysm/core-common";
|
|
3
|
-
import { downloadBytes } from "@simplysm/core-browser";
|
|
4
|
-
import type { ServiceClient } from "@simplysm/service-client";
|
|
5
|
-
import type { AutoUpdateService } from "@simplysm/service-common";
|
|
6
|
-
import semver from "semver";
|
|
7
|
-
import { ApkInstaller } from "./ApkInstaller";
|
|
8
|
-
|
|
9
|
-
export abstract class AutoUpdate {
|
|
10
|
-
private static readonly _BUTTON_CSS = `
|
|
11
|
-
all: unset;
|
|
12
|
-
color: blue;
|
|
13
|
-
width: 100%;
|
|
14
|
-
padding: 10px;
|
|
15
|
-
line-height: 1.5em;
|
|
16
|
-
font-size: 20px;
|
|
17
|
-
position: fixed;
|
|
18
|
-
bottom: 0;
|
|
19
|
-
left: 0;
|
|
20
|
-
border-top: 1px solid lightgrey;
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
|
-
private static readonly _BUTTON_ACTIVE_CSS = `
|
|
24
|
-
background: lightgrey;
|
|
25
|
-
`;
|
|
26
|
-
|
|
27
|
-
private static _throwAboutReinstall(code: number, targetHref?: string) {
|
|
28
|
-
const downloadHtml =
|
|
29
|
-
targetHref != null
|
|
30
|
-
? html`
|
|
31
|
-
<style>
|
|
32
|
-
._button { ${this._BUTTON_CSS} }
|
|
33
|
-
._button:active { ${this._BUTTON_ACTIVE_CSS} }
|
|
34
|
-
</style>
|
|
35
|
-
<a class="_button" href="intent://${targetHref.replace(/^https?:\/\//, "")}#Intent;scheme=http;end">
|
|
36
|
-
다운로드
|
|
37
|
-
</a>
|
|
38
|
-
`
|
|
39
|
-
: "";
|
|
40
|
-
|
|
41
|
-
throw new Error(html`
|
|
42
|
-
APK파일을 다시 다운로드 받아, 설치해야 합니다(${code}). ${downloadHtml}
|
|
43
|
-
`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
private static async _checkPermission(log: (messageHtml: string) => void, targetHref?: string) {
|
|
47
|
-
if (!navigator.userAgent.toLowerCase().includes("android")) {
|
|
48
|
-
throw new Error("안드로이드만 지원합니다.");
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
if (!(await ApkInstaller.hasPermissionManifest())) {
|
|
53
|
-
this._throwAboutReinstall(1, targetHref);
|
|
54
|
-
}
|
|
55
|
-
} catch (err) {
|
|
56
|
-
// eslint-disable-next-line no-console
|
|
57
|
-
console.error("[AutoUpdate] hasPermissionManifest 체크 실패:", err);
|
|
58
|
-
this._throwAboutReinstall(2, targetHref);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const hasPerm = await ApkInstaller.hasPermission();
|
|
62
|
-
if (!hasPerm) {
|
|
63
|
-
log(html`
|
|
64
|
-
설치권한이 설정되어야합니다.
|
|
65
|
-
<style>
|
|
66
|
-
button { ${this._BUTTON_CSS} }
|
|
67
|
-
button:active { ${this._BUTTON_ACTIVE_CSS} }
|
|
68
|
-
</style>
|
|
69
|
-
<button onclick="location.reload()">재시도</button>
|
|
70
|
-
`);
|
|
71
|
-
await ApkInstaller.requestPermission();
|
|
72
|
-
// 최대 5분(300초) 대기 - 사용자가 설정 화면에서 권한을 승인할 시간
|
|
73
|
-
await waitUntil(
|
|
74
|
-
async () => {
|
|
75
|
-
return ApkInstaller.hasPermission();
|
|
76
|
-
},
|
|
77
|
-
1000,
|
|
78
|
-
300,
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
private static async _installApk(log: (messageHtml: string) => void, apkFilePath: string): Promise<void> {
|
|
84
|
-
log(html`
|
|
85
|
-
최신버전을 설치한 후 재시작하세요.
|
|
86
|
-
<style>
|
|
87
|
-
button { ${this._BUTTON_CSS} }
|
|
88
|
-
button:active { ${this._BUTTON_ACTIVE_CSS} }
|
|
89
|
-
</style>
|
|
90
|
-
<button onclick="location.reload()">재시도</button>
|
|
91
|
-
`);
|
|
92
|
-
const apkFileUri = await FileSystem.getFileUri(apkFilePath);
|
|
93
|
-
await ApkInstaller.install(apkFileUri);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
private static _getErrorMessage(err: unknown) {
|
|
97
|
-
return html`
|
|
98
|
-
업데이트 중 오류 발생:
|
|
99
|
-
<br />
|
|
100
|
-
${err instanceof Error ? err.message : String(err)}
|
|
101
|
-
`;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
private static async _freezeApp() {
|
|
105
|
-
await new Promise(() => {}); // 무한대기
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
static async run(opt: { log: (messageHtml: string) => void; serviceClient: ServiceClient }) {
|
|
109
|
-
try {
|
|
110
|
-
opt.log(`최신버전 확인 중...`);
|
|
111
|
-
|
|
112
|
-
// 서버의 버전 및 다운로드링크 가져오기
|
|
113
|
-
const autoUpdateServiceClient = opt.serviceClient.getService<AutoUpdateService>("AutoUpdateService");
|
|
114
|
-
|
|
115
|
-
const serverVersionInfo = await autoUpdateServiceClient.getLastVersion("android");
|
|
116
|
-
if (!serverVersionInfo) {
|
|
117
|
-
// eslint-disable-next-line no-console
|
|
118
|
-
console.log("서버에서 최신버전 정보를 가져오지 못했습니다.");
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
opt.log(`권한 확인 중...`);
|
|
123
|
-
await this._checkPermission(opt.log, opt.serviceClient.hostUrl + serverVersionInfo.downloadPath);
|
|
124
|
-
|
|
125
|
-
// 현재 앱 버전 가져오기
|
|
126
|
-
const currentVersionInfo = await ApkInstaller.getVersionInfo();
|
|
127
|
-
|
|
128
|
-
// 최신버전이거나 서버 버전이 낮으면 반환
|
|
129
|
-
if (semver.valid(currentVersionInfo.versionName) === null || semver.valid(serverVersionInfo.version) === null) {
|
|
130
|
-
// eslint-disable-next-line no-console
|
|
131
|
-
console.log("Invalid semver version, skipping update check");
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
if (!semver.gt(serverVersionInfo.version, currentVersionInfo.versionName)) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
opt.log(`최신버전 파일 다운로드중...`);
|
|
139
|
-
const buffer = await downloadBytes(opt.serviceClient.hostUrl + serverVersionInfo.downloadPath, {
|
|
140
|
-
onProgress: (progress) => {
|
|
141
|
-
const progressText = ((progress.receivedLength * 100) / progress.contentLength).toFixed(2);
|
|
142
|
-
opt.log(`최신버전 파일 다운로드중...(${progressText}%)`);
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
const storagePath = await FileSystem.getStoragePath("appCache");
|
|
146
|
-
const apkFilePath = pathJoin(storagePath, `latest.apk`);
|
|
147
|
-
await FileSystem.writeFile(apkFilePath, buffer);
|
|
148
|
-
|
|
149
|
-
await this._installApk(opt.log, apkFilePath);
|
|
150
|
-
await this._freezeApp();
|
|
151
|
-
} catch (err) {
|
|
152
|
-
opt.log(this._getErrorMessage(err));
|
|
153
|
-
await this._freezeApp();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
static async runByExternalStorage(opt: { log: (messageHtml: string) => void; dirPath: string }) {
|
|
158
|
-
try {
|
|
159
|
-
opt.log(`권한 확인 중...`);
|
|
160
|
-
await this._checkPermission(opt.log);
|
|
161
|
-
|
|
162
|
-
opt.log(`최신버전 확인 중...`);
|
|
163
|
-
|
|
164
|
-
// 버전 가져오기
|
|
165
|
-
const externalPath = await FileSystem.getStoragePath("external");
|
|
166
|
-
const fileInfos = await FileSystem.readdir(pathJoin(externalPath, opt.dirPath));
|
|
167
|
-
|
|
168
|
-
const versions = fileInfos
|
|
169
|
-
.filter((fileInfo) => !fileInfo.isDirectory)
|
|
170
|
-
.map((fileInfo) => ({
|
|
171
|
-
fileName: fileInfo.name,
|
|
172
|
-
version: pathBasename(fileInfo.name, pathExtname(fileInfo.name)),
|
|
173
|
-
extName: pathExtname(fileInfo.name),
|
|
174
|
-
}))
|
|
175
|
-
.filter((item) => {
|
|
176
|
-
return item.extName === ".apk" && /^[0-9.]*$/.test(item.version);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
// 버전파일 저장된것 없으면 반환
|
|
180
|
-
if (versions.length === 0) return;
|
|
181
|
-
|
|
182
|
-
const latestVersion = semver.maxSatisfying(
|
|
183
|
-
versions.map((item) => item.version),
|
|
184
|
-
"*",
|
|
185
|
-
);
|
|
186
|
-
|
|
187
|
-
// 유효한 semver 버전이 없으면 반환
|
|
188
|
-
if (latestVersion == null) {
|
|
189
|
-
// eslint-disable-next-line no-console
|
|
190
|
-
console.log("유효한 semver 버전 파일이 없습니다.");
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// 현재 앱 버전 가져오기
|
|
195
|
-
const currentVersionInfo = await ApkInstaller.getVersionInfo();
|
|
196
|
-
|
|
197
|
-
// 최신버전이거나 외부 저장소 버전이 낮으면 반환
|
|
198
|
-
if (semver.valid(currentVersionInfo.versionName) === null || semver.valid(latestVersion) === null) {
|
|
199
|
-
// eslint-disable-next-line no-console
|
|
200
|
-
console.log("Invalid semver version, skipping update check");
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
if (!semver.gt(latestVersion, currentVersionInfo.versionName)) {
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
const apkFilePath = pathJoin(externalPath, opt.dirPath, latestVersion + ".apk");
|
|
208
|
-
await this._installApk(opt.log, apkFilePath);
|
|
209
|
-
await this._freezeApp();
|
|
210
|
-
} catch (err) {
|
|
211
|
-
opt.log(this._getErrorMessage(err));
|
|
212
|
-
await this._freezeApp();
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface IVersionInfo {
|
|
2
|
-
versionName: string;
|
|
3
|
-
versionCode: string;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export interface IApkInstallerPlugin {
|
|
7
|
-
install(options: { uri: string }): Promise<void>;
|
|
8
|
-
hasPermission(): Promise<{ granted: boolean }>;
|
|
9
|
-
requestPermission(): Promise<void>;
|
|
10
|
-
hasPermissionManifest(): Promise<{ declared: boolean }>;
|
|
11
|
-
getVersionInfo(): Promise<IVersionInfo>;
|
|
12
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { WebPlugin } from "@capacitor/core";
|
|
2
|
-
import type { IApkInstallerPlugin, IVersionInfo } from "../IApkInstallerPlugin";
|
|
3
|
-
|
|
4
|
-
export class ApkInstallerWeb extends WebPlugin implements IApkInstallerPlugin {
|
|
5
|
-
install(_options: { uri: string }): Promise<void> {
|
|
6
|
-
alert("[ApkInstaller] 웹 환경에서는 APK 설치를 지원하지 않습니다.");
|
|
7
|
-
return Promise.resolve();
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
hasPermission(): Promise<{ granted: boolean }> {
|
|
11
|
-
// 웹에서는 권한 체크 스킵
|
|
12
|
-
return Promise.resolve({ granted: true });
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
async requestPermission(): Promise<void> {
|
|
16
|
-
// 웹에서는 no-op
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
hasPermissionManifest(): Promise<{ declared: boolean }> {
|
|
20
|
-
// 웹에서는 매니페스트 체크 스킵
|
|
21
|
-
return Promise.resolve({ declared: true });
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
getVersionInfo(): Promise<IVersionInfo> {
|
|
25
|
-
return Promise.resolve({
|
|
26
|
-
versionName: (import.meta as unknown as { env?: Record<string, string> }).env?.["__VER__"] ?? "0.0.0",
|
|
27
|
-
versionCode: "0",
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
File without changes
|
|
File without changes
|
/package/dist/{capacitor-plugin-auto-update/src/IApkInstallerPlugin.d.ts → IApkInstallerPlugin.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|