Преглед изворни кода

修改一些bug,和更新地址

wanglaoye пре 11 месеци
родитељ
комит
8d73dd16f6

+ 64 - 0
log/2023-9-18.log

@@ -0,0 +1,64 @@
+[2023-09-18 11:30:56.632] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 11:35:21.205] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 11:39:45.588] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 13:29:20.701] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 13:29:53.494] [info]  76:undefined
+[2023-09-18 13:29:54.710] [info]  updater-118:HttpError: 500 Internal Server Error
+"method: GET url: http://testapi.xklr.net:8601/appUpdate/doctor/latest.yml?noCache=1hajc8fjc\n\n          Data:\n          {\"code\":401,\"msg\":\"登录已过期,请重新登录!\",\"data\":null,\"data2\":null}\n          "
+Headers: {
+  "content-type": "application/json",
+  "date": "Mon, 18 Sep 2023 05:29:54 GMT",
+  "vary": "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
+  "content-length": "78"
+}
+[2023-09-18 13:29:54.927] [info]  76:undefined
+[2023-09-18 13:29:55.015] [info]  updater-118:HttpError: 500 Internal Server Error
+"method: GET url: http://testapi.xklr.net:8601/appUpdate/doctor/latest.yml?noCache=1hajc8gvg\n\n          Data:\n          {\"code\":401,\"msg\":\"登录已过期,请重新登录!\",\"data\":null,\"data2\":null}\n          "
+Headers: {
+  "content-type": "application/json",
+  "date": "Mon, 18 Sep 2023 05:29:54 GMT",
+  "vary": "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
+  "content-length": "78"
+}
+[2023-09-18 13:30:31.858] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 13:30:33.426] [info]  76:undefined
+[2023-09-18 13:30:34.543] [info]  updater-118:HttpError: 500 Internal Server Error
+"method: GET url: http://testapi.xklr.net:8601/appUpdate/doctor/latest.yml?noCache=1hajc9mil\n\n          Data:\n          {\"code\":401,\"msg\":\"登录已过期,请重新登录!\",\"data\":null,\"data2\":null}\n          "
+Headers: {
+  "content-type": "application/json",
+  "date": "Mon, 18 Sep 2023 05:30:33 GMT",
+  "vary": "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
+  "content-length": "78"
+}
+[2023-09-18 13:31:34.758] [info]  76:undefined
+[2023-09-18 13:31:34.816] [info]  updater-118:HttpError: 500 Internal Server Error
+"method: GET url: http://testapi.xklr.net:8601/appUpdate/doctor/latest.yml?noCache=1hajcbif7\n\n          Data:\n          {\"code\":401,\"msg\":\"登录已过期,请重新登录!\",\"data\":null,\"data2\":null}\n          "
+Headers: {
+  "content-type": "application/json",
+  "date": "Mon, 18 Sep 2023 05:31:34 GMT",
+  "vary": "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
+  "content-length": "78"
+}
+[2023-09-18 13:33:05.754] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 13:33:07.428] [info]  76:undefined
+[2023-09-18 13:33:08.557] [info]  updater-118:HttpError: 500 Internal Server Error
+"method: GET url: http://testapi.xklr.net:8601/appUpdate/doctor/latest.yml?noCache=1hajcecv8\n\n          Data:\n          {\"code\":401,\"msg\":\"登录已过期,请重新登录!\",\"data\":null,\"data2\":null}\n          "
+Headers: {
+  "content-type": "application/json",
+  "date": "Mon, 18 Sep 2023 05:33:07 GMT",
+  "vary": "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
+  "content-length": "78"
+}
+[2023-09-18 13:33:41.991] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-18 13:33:43.591] [info]  76:undefined
+[2023-09-18 13:33:44.726] [info]  updater-118:HttpError: 500 Internal Server Error
+"method: GET url: http://testapi.xklr.net:8601/appUpdate/doctor/latest.yml?noCache=1hajcfg9b\n\n          Data:\n          {\"code\":401,\"msg\":\"登录已过期,请重新登录!\",\"data\":null,\"data2\":null}\n          "
+Headers: {
+  "content-type": "application/json",
+  "date": "Mon, 18 Sep 2023 05:33:44 GMT",
+  "vary": "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
+  "content-length": "78"
+}
+[2023-09-18 13:34:30.436] [info]  76:undefined
+[2023-09-18 13:34:30.690] [info]  89:[object Object]
+[2023-09-18 13:34:30.692] [info]  updater-118:Error: ENOENT: no such file or directory, open 'D:\web\product\electron\doctor-xklr\dist\electron\dev-app-update.yml'

+ 5 - 0
log/2023-9-22.log

@@ -0,0 +1,5 @@
+[2023-09-22 15:27:06.070] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-22 15:32:37.071] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-22 15:36:27.297] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-22 15:36:38.103] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron
+[2023-09-22 15:37:16.939] [info]  38:D:\web\product\electron\doctor-xklr\dist\electron

+ 193 - 0
npminstall-debug.log

@@ -0,0 +1,193 @@
+{
+  root: 'D:\\web\\product\\electron\\doctor-xklr',
+  registry: 'https://registry.npmmirror.com',
+  pkgs: [],
+  production: false,
+  cacheStrict: false,
+  cacheDir: null,
+  env: {
+    npm_config_registry: 'https://registry.npmmirror.com',
+    npm_config_argv: '{"remain":[],"cooked":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\15432\\\\.cnpmrc","--disturl=https://npmmirror.com/mirrors/node","--registry=https://registry.npmmirror.com"],"original":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\15432\\\\.cnpmrc","--disturl=https://npmmirror.com/mirrors/node","--registry=https://registry.npmmirror.com"]}',
+    npm_config_user_agent: 'npminstall/7.5.2 npm/? node/v14.21.3 win32 ia32',
+    NODE: 'C:\\Program Files (x86)\\nodejs\\',
+    npm_node_execpath: 'C:\\Program Files (x86)\\nodejs\\',
+    npm_execpath: 'C:\\Users\\15432\\AppData\\Roaming\\npm\\node_modules\\cnpm\\node_modules\\npminstall\\bin\\install.js',
+    npm_config_userconfig: 'C:\\Users\\15432\\.cnpmrc',
+    npm_config_disturl: 'https://npmmirror.com/mirrors/node',
+    npm_config_r: 'https://registry.npmmirror.com',
+    COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com',
+    NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
+    NVM_NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
+    PHANTOMJS_CDNURL: 'https://cdn.npmmirror.com/binaries/phantomjs',
+    CHROMEDRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/chromedriver',
+    OPERADRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/operadriver',
+    CYPRESS_DOWNLOAD_PATH_TEMPLATE: 'https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip',
+    ELECTRON_MIRROR: 'https://cdn.npmmirror.com/binaries/electron/',
+    ELECTRON_BUILDER_BINARIES_MIRROR: 'https://cdn.npmmirror.com/binaries/electron-builder-binaries/',
+    SASS_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-sass',
+    SWC_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-swc',
+    NWJS_URLBASE: 'https://cdn.npmmirror.com/binaries/nwjs/v',
+    PUPPETEER_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
+    PUPPETEER_DOWNLOAD_BASE_URL: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
+    PLAYWRIGHT_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/playwright',
+    SENTRYCLI_CDNURL: 'https://cdn.npmmirror.com/binaries/sentry-cli',
+    SAUCECTL_INSTALL_BINARY_MIRROR: 'https://cdn.npmmirror.com/binaries/saucectl',
+    RE2_DOWNLOAD_MIRROR: 'https://cdn.npmmirror.com/binaries/node-re2',
+    RE2_DOWNLOAD_SKIP_PATH: 'true',
+    PRISMA_ENGINES_MIRROR: 'https://cdn.npmmirror.com/binaries/prisma',
+    npm_config_better_sqlite3_binary_host: 'https://cdn.npmmirror.com/binaries/better-sqlite3',
+    npm_config_keytar_binary_host: 'https://cdn.npmmirror.com/binaries/keytar',
+    npm_config_sharp_binary_host: 'https://cdn.npmmirror.com/binaries/sharp',
+    npm_config_sharp_libvips_binary_host: 'https://cdn.npmmirror.com/binaries/sharp-libvips',
+    npm_config_robotjs_binary_host: 'https://cdn.npmmirror.com/binaries/robotjs',
+    npm_rootpath: 'D:\\web\\product\\electron\\doctor-xklr',
+    INIT_CWD: 'D:\\web\\product\\electron\\doctor-xklr',
+    npm_config_cache: 'C:\\Users\\15432\\.npminstall_tarball'
+  },
+  binaryMirrors: {
+    ENVS: {
+      COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com',
+      NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
+      NVM_NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node',
+      PHANTOMJS_CDNURL: 'https://cdn.npmmirror.com/binaries/phantomjs',
+      CHROMEDRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/chromedriver',
+      OPERADRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/operadriver',
+      CYPRESS_DOWNLOAD_PATH_TEMPLATE: 'https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip',
+      ELECTRON_MIRROR: 'https://cdn.npmmirror.com/binaries/electron/',
+      ELECTRON_BUILDER_BINARIES_MIRROR: 'https://cdn.npmmirror.com/binaries/electron-builder-binaries/',
+      SASS_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-sass',
+      SWC_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-swc',
+      NWJS_URLBASE: 'https://cdn.npmmirror.com/binaries/nwjs/v',
+      PUPPETEER_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
+      PUPPETEER_DOWNLOAD_BASE_URL: 'https://cdn.npmmirror.com/binaries/chrome-for-testing',
+      PLAYWRIGHT_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/playwright',
+      SENTRYCLI_CDNURL: 'https://cdn.npmmirror.com/binaries/sentry-cli',
+      SAUCECTL_INSTALL_BINARY_MIRROR: 'https://cdn.npmmirror.com/binaries/saucectl',
+      RE2_DOWNLOAD_MIRROR: 'https://cdn.npmmirror.com/binaries/node-re2',
+      RE2_DOWNLOAD_SKIP_PATH: 'true',
+      PRISMA_ENGINES_MIRROR: 'https://cdn.npmmirror.com/binaries/prisma',
+      npm_config_better_sqlite3_binary_host: 'https://cdn.npmmirror.com/binaries/better-sqlite3',
+      npm_config_keytar_binary_host: 'https://cdn.npmmirror.com/binaries/keytar',
+      npm_config_sharp_binary_host: 'https://cdn.npmmirror.com/binaries/sharp',
+      npm_config_sharp_libvips_binary_host: 'https://cdn.npmmirror.com/binaries/sharp-libvips',
+      npm_config_robotjs_binary_host: 'https://cdn.npmmirror.com/binaries/robotjs'
+    },
+    '@ali/s2': { host: 'https://cdn.npmmirror.com/binaries/looksgood-s2' },
+    sharp: { replaceHostFiles: [Array], replaceHostMap: [Object] },
+    '@tensorflow/tfjs-node': {
+      replaceHostFiles: [Array],
+      replaceHostRegExpMap: [Object],
+      replaceHostMap: [Object]
+    },
+    cypress: {
+      host: 'https://cdn.npmmirror.com/binaries/cypress',
+      newPlatforms: [Object]
+    },
+    'utf-8-validate': {
+      host: 'https://cdn.npmmirror.com/binaries/utf-8-validate/v{version}'
+    },
+    xprofiler: {
+      remote_path: './xprofiler/v{version}/',
+      host: 'https://cdn.npmmirror.com/binaries'
+    },
+    leveldown: { host: 'https://cdn.npmmirror.com/binaries/leveldown/v{version}' },
+    couchbase: { host: 'https://cdn.npmmirror.com/binaries/couchbase/v{version}' },
+    gl: { host: 'https://cdn.npmmirror.com/binaries/gl/v{version}' },
+    sqlite3: {
+      host: 'https://cdn.npmmirror.com/binaries/sqlite3',
+      remote_path: 'v{version}'
+    },
+    '@journeyapps/sqlcipher': { host: 'https://cdn.npmmirror.com/binaries' },
+    grpc: {
+      host: 'https://cdn.npmmirror.com/binaries',
+      remote_path: '{name}/v{version}'
+    },
+    'grpc-tools': { host: 'https://cdn.npmmirror.com/binaries' },
+    wrtc: {
+      host: 'https://cdn.npmmirror.com/binaries',
+      remote_path: '{name}/v{version}'
+    },
+    fsevents: { host: 'https://cdn.npmmirror.com/binaries/fsevents' },
+    nodejieba: { host: 'https://cdn.npmmirror.com/binaries/nodejieba' },
+    canvas: { host: 'https://cdn.npmmirror.com/binaries/canvas' },
+    'skia-canvas': { host: 'https://cdn.npmmirror.com/binaries/skia-canvas' },
+    'flow-bin': {
+      replaceHost: 'https://github.com/facebook/flow/releases/download/v',
+      host: 'https://cdn.npmmirror.com/binaries/flow/v'
+    },
+    'jpegtran-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/jpegtran-bin'
+    },
+    'cwebp-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/cwebp-bin'
+    },
+    'zopflipng-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/zopflipng-bin'
+    },
+    'optipng-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/optipng-bin'
+    },
+    mozjpeg: {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/mozjpeg-bin'
+    },
+    gifsicle: {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/gifsicle-bin'
+    },
+    'pngquant-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/pngquant-bin',
+      replaceHostMap: [Object]
+    },
+    'pngcrush-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/pngcrush-bin'
+    },
+    'jpeg-recompress-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/jpeg-recompress-bin'
+    },
+    'advpng-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/advpng-bin'
+    },
+    'pngout-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/pngout-bin'
+    },
+    'jpegoptim-bin': {
+      replaceHost: [Array],
+      host: 'https://cdn.npmmirror.com/binaries/jpegoptim-bin'
+    },
+    argon2: { host: 'https://cdn.npmmirror.com/binaries/argon2' },
+    'ali-zeromq': { host: 'https://cdn.npmmirror.com/binaries/ali-zeromq' },
+    'ali-usb_ctl': { host: 'https://cdn.npmmirror.com/binaries/ali-usb_ctl' },
+    'gdal-async': { host: 'https://cdn.npmmirror.com/binaries/node-gdal-async' },
+    'libpg-query': { host: 'https://cdn.npmmirror.com/binaries' }
+  },
+  forbiddenLicenses: null,
+  flatten: false,
+  proxy: undefined,
+  prune: false,
+  disableFallbackStore: false,
+  workspacesMap: Map(0) {},
+  enableWorkspace: false,
+  workspaceRoot: 'D:\\web\\product\\electron\\doctor-xklr',
+  isWorkspaceRoot: true,
+  isWorkspacePackage: false,
+  strictSSL: true,
+  ignoreScripts: false,
+  ignoreOptionalDependencies: false,
+  detail: false,
+  forceLinkLatest: false,
+  trace: false,
+  engineStrict: false,
+  registryOnly: false,
+  client: false,
+  autoFixVersion: [Function: autoFixVersion]
+}

+ 2 - 0
package.json

@@ -1,9 +1,11 @@
 {
   "name": "doctor-xklr",
+  "productName": "星空路人-医生端",
   "version": "1.2.6",
   "private": false,
   "author": "wly",
   "scripts": {
+    "build": "vue-cli-service electron:build",
     "serve": "vue-cli-service electron:serve",
     "test:unit": "vue-cli-service test:unit",
     "test:e2e": "vue-cli-service test:e2e",

+ 20 - 4
src/main/main.js

@@ -24,8 +24,8 @@ if (!isdev) {
 }
 const iconSrc = __static + "/images/icon.ico";
 const loadURL = isdev
-    ? `${process.env.WEBPACK_DEV_SERVER_URL}#/ball`
-    : `${LOAD_URL}#ball`;
+  ? `${process.env.WEBPACK_DEV_SERVER_URL}#/ball`
+  : `${LOAD_URL}#ball`;
 // console.log(loadURL)
 let mainWindow = null
 async function createWindow() {
@@ -55,9 +55,25 @@ async function createWindow() {
     }
   })
   //禁止程序多开,此处需要单例锁的打开注释即可
-  const gotTheLock = app.requestSingleInstanceLock();
+  //只存在一个
+  const gotTheLock = app.requestSingleInstanceLock()
   if (!gotTheLock) {
-    app.quit();
+    app.quit()
+  } {
+    app.on('second-instance', (event, argv) => {
+      if (process.platform === 'win32') {
+        if (win) {
+          if (win.isMinimized()) {
+            win.restore()
+          }
+          if (win.isVisible()) {
+            win.focus()
+          } else {
+            win.show()
+          }
+        }
+      }
+    })
   }
   mainWindow.on('ready-to-show', () => {
     mainWindow.show()

+ 1 - 1
src/main/windows/settingwin.js

@@ -34,7 +34,7 @@ const createSettingwin = function (BrowserWindow) {
         hasShadow: process.platform !== "darwin",
         alwaysOnTop: true,
         webPreferences: {
-            devTools: false,//isdev
+            devTools: isdev,//isdev
             contextIsolation: false,
             sandbox: false,
             nodeIntegration: true,

+ 3 - 5
src/main/windows/updaterwin.js

@@ -10,7 +10,7 @@ const loadURL = isdev
 const iconSrc = __static + "/images/icon.ico";
 // 服务器地址
 const server = 'http://testadmin.xklr.net:8601'
-const url = isdev ? __dirname : `${server}/appUpdateDoctor/`
+const url = isdev ? __dirname : `${server}/appUpdate/doctor/`
 // console.log(15, url)
 let updateWin = null;
 // 自动检测更新
@@ -41,7 +41,7 @@ export default function updatewin() {
                 hasShadow: process.platform !== "darwin",
                 alwaysOnTop: true,
                 webPreferences: {
-                    devTools: false,//isdev
+                    devTools: true,//isdev
                     contextIsolation: false,
                     sandbox: false,
                     nodeIntegration: true,
@@ -53,15 +53,13 @@ export default function updatewin() {
                 updateWin.webContents.openDevTools();
             }
         }
-
         createWindow();
         autoUpdater.autoDownload = true
         ipcMain.on('sendurl', (e, option) => {
-            console.log(1, option)
             if (!option.url) {
                 updateWin.webContents.send('state1', 5)
             } else {
-                autoUpdater.setFeedURL(option.url + '/appUpdateSign/')
+                autoUpdater.setFeedURL(option.url + '/appUpdate/doctor/')
                 autoUpdater.checkForUpdates()
             }
         })

+ 5 - 1
src/renderer/pages/login/index.vue

@@ -101,7 +101,7 @@ export default {
       let t = this
       t.loading = true
       t.$refs.form.validate(async (valid) => {
-        if (valid)
+        if (valid){
           try {
             await t.login(t.formInline).then(() => {
               localStorage.setItem('username', t.formInline.username)
@@ -139,6 +139,10 @@ export default {
           } finally {
             this.loading = false
           }
+        }else{
+          this.loading = false
+        }
+          
       })
     },
   },

+ 4 - 5
src/renderer/pages/update/index.vue

@@ -13,7 +13,7 @@
 import { mapActions } from 'vuex'
 import { ipcRenderer } from 'electron'
 export default {
-  name: 'Settingwin',
+  name: 'Update',
   data() {
     return {
       webURL: '',
@@ -34,16 +34,15 @@ export default {
     this.webURL = locationpath.webURL || '';
     this.get1()
     this.get2()
-    this.sendurl()
+    this.sendurl(this.webURL)
     // console.log(this.$router)
   },
   methods: {
     ...mapActions({
       getlocationpath: 'user/getlocationpath',
     }),
-    sendurl(){
-      console.log(111,this.webURL)
-      ipcRenderer.send('sendurl',{url:this.webURL})
+    sendurl(url){
+      ipcRenderer.send('sendurl',{url})
     },
     get1() {
       let t = this

+ 8 - 0
src/renderer/utils/common.js

@@ -9,6 +9,14 @@ let getFormatDate = function (value) {
   }
   return str;
 }
+export function isEmpty(str) {
+  if (str == null || typeof str == null || str == "" || str == "undefined") {
+    return true;
+  } else {
+    return false;
+  }
+}
+
 let getNowDate = function () {
   let d = new Date();
   let year = d.getFullYear();

+ 1 - 1
vue.config.js

@@ -172,7 +172,7 @@ module.exports = {
                     // 创建开始菜单图标
                     createStartMenuShortcut: true,
                     perMachine: false,
-                    artifactName: `${package.name}-${package.version}.exe`,
+                    artifactName: `${package.productName}-${package.version}.exe`,
                     // "deleteAppDataOnUninstall": true,
                     //  "runAfterFinish": true,
                     //  "differentialPackage": true