README.md
@@ -22,3 +22,10 @@ ### Customize configuration See [Configuration Reference](https://cli.vuejs.org/config/). ### 打包项目要 nvm 切换到nodejs 16 ``` nvm ls nmv use 16*** ``` dependent/FbxAnalysis.jarBinary files differ
dependent/remove_service.bat
@@ -1,13 +1,22 @@ @echo off ::echo ��ǰ�̷���%~d0 %~d0 ::echo %cd% cd %~dp0 echo %cd% set java_path=%cd%\runtime\bin\java.exe set port=8099 set process_name=fbx.exe wmic process where "ExecutablePath='%java_path:\=\\%'" call terminate for /f "tokens=2,5" %%a in ('netstat -ano ^| findstr :%port% ^| sort /unique') do ( setlocal enabledelayedexpansion if not %%b == 0 ( set "pids=!pids! %%b" for %%i in (!pids!) do ( if not "%%i"==" " ( taskkill /f /im %%i 2>nul ) ) ) endlocal ) taskkill /im %process_name% /f >nul 2>&1 FbxAnalysis.exe stop FbxAnalysis.exe uninstall exit exit /b 0 dependent/setup_service.bat
@@ -1,12 +1,18 @@ @echo off ::echo ��ǰ�̷���%~d0 %~d0 ::echo %cd% cd %~dp0 echo %cd% FbxAnalysis.exe stop FbxAnalysis.exe start 2>nul if %errorlevel% ==0 ( exit ) else ( goto install ) :install FbxAnalysis.exe uninstall FbxAnalysis.exe install FbxAnalysis.exe start FbxAnalysis.exe start 2>nul exit dependent/stop.bat
@@ -1,12 +1,17 @@ @echo off ::echo 当前盘符:%~d0 %~d0 ::echo %cd% cd %~dp0 echo %cd% set port=8099 set java_path=%cd%\runtime\bin\java.exe wmic process where "ExecutablePath='%java_path:\=\\%'" call terminate for /f "tokens=2,5" %%a in ('netstat -ano ^| findstr :%port% ^| sort /unique') do ( setlocal enabledelayedexpansion if not %%b == 0 ( set "pids=!pids! %%b" for %%i in (!pids!) do ( if not "%%i"==" " ( taskkill /f /im %%i 2>nul ) ) ) endlocal ) exit fbx-0.1.0-Setup.exeBinary files differ
fbx-0.1.2-Setup.exeBinary files differ
fbx-0.1.3-Setup.exeBinary files differ
npminstall-debug.log
New file @@ -0,0 +1,197 @@ { root: 'D:\\GitWorkSpace\\fbxParser', registry: 'http://registry.npm.taobao.org', pkgs: [], production: false, cacheStrict: false, cacheDir: 'C:\\Users\\Administrator\\.npminstall_tarball', env: { npm_config_registry: 'http://registry.npm.taobao.org', npm_config_argv: '{"remain":[],"cooked":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\Administrator\\\\.cnpmrc","--disturl=https://cdn.npmmirror.com/binaries/node","--registry=http://registry.npm.taobao.org"],"original":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\Administrator\\\\.cnpmrc","--disturl=https://cdn.npmmirror.com/binaries/node","--registry=http://registry.npm.taobao.org"]}', npm_config_user_agent: 'npminstall/7.12.0 npm/? node/v18.18.2 win32 x64', npm_config_cache: 'C:\\Users\\Administrator\\.npminstall_tarball', NODE: 'D:\\soft\\nodejs\\node.exe', npm_node_execpath: 'D:\\soft\\nodejs\\node.exe', npm_execpath: 'D:\\tools\\nvm\\v18.18.2\\node_modules\\node_global\\node_modules\\cnpm\\node_modules\\npminstall\\bin\\install.js', npm_config_userconfig: 'C:\\Users\\Administrator\\.cnpmrc', npm_config_disturl: 'https://cdn.npmmirror.com/binaries/node', npm_config_r: 'http://registry.npm.taobao.org', COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com', EDGEDRIVER_CDNURL: 'https://npmmirror.com/mirrors/edgedriver', 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:\\GitWorkSpace\\fbxParser', INIT_CWD: 'D:\\GitWorkSpace\\fbxParser' }, binaryMirrors: { ENVS: { COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com', EDGEDRIVER_CDNURL: 'https://npmmirror.com/mirrors/edgedriver', 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:\\GitWorkSpace\\fbxParser', isWorkspaceRoot: true, isWorkspacePackage: false, offline: false, strictSSL: false, ignoreScripts: false, foregroundScripts: false, ignoreOptionalDependencies: false, detail: false, forceLinkLatest: false, trace: false, engineStrict: false, registryOnly: false, client: false, autoFixVersion: [Function: autoFixVersion] } package-lock.json
File was deleted package.json
@@ -1,6 +1,6 @@ { "name": "fbx", "version": "0.1.1", "version": "0.1.3", "author": "whychw", "description": "解析本地fbx文件 支持导出excel", "private": true, @@ -8,7 +8,8 @@ "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "electron:build": "vue-cli-service electron:build", "electron:build": "vue-cli-service electron:build --win --ia32", "electron:build32": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service electron:build --win --ia32", "electron:serve": "vue-cli-service electron:serve", "postinstall": "electron-builder install-app-deps", "postuninstall": "electron-builder install-app-deps", @@ -18,24 +19,24 @@ "main": "background.js", "dependencies": { "@electron/remote": "^2.0.8", "@vue/cli-plugin-babel": "^5.0.8", "axios": "0.18.1", "core-js": "^3.6.5", "electron-log": "^4.4.8", "tree-kill": "^1.2.2", "vue": "2.6.10", "vue-router": "3.0.6", "axios": "0.18.1", "vue-layer": "^1.2.0", "electron-log": "^4.4.8", "vue-router": "3.0.6", "vue-template-compiler": "2.6.10" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.13", "@vue/cli-plugin-eslint": "~4.5.13", "@vue/cli-service": "~4.5.13", "@vue/compiler-sfc": "^3.0.0", "babel-eslint": "^10.1.0", "electron": "^13.0.0", "echarts": "^4.8.0", "echarts-liquidfill": "^2.0.6", "electron": "^13.0.0", "electron-builder": "^25.1.8", "electron-devtools-installer": "^3.1.0", "electron-icon-builder": "^2.0.1", "element-ui": "^2.15.6", @@ -43,10 +44,11 @@ "eslint-plugin-vue": "^7.0.0", "less": "^3.12.2", "less-loader": "^6.2.0", "minimal-request-promise": "^1.5.0", "sass": "1.26.8", "sass-loader": "8.0.2", "minimal-request-promise": "^1.5.0", "vue-cli-plugin-electron-builder": "~2.1.1" "vue-cli-plugin-electron-builder": "~2.1.1", "webpack-cli": "^3.3.12" }, "eslintConfig": { "root": true, @@ -68,5 +70,6 @@ "> 1%", "last 2 versions", "not dead" ] ], "__npminstall_done": false } package_.json
New file @@ -0,0 +1,76 @@ { "name": "fbx", "version": "0.1.2", "author": "whychw", "description": "解析本地fbx文件 支持导出excel", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "electron:build": "vue-cli-service electron:build", "electron:build32": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service electron:build --win --ia32", "electron:serve": "SET \"NODE_OPTIONS=--openssl-legacy-provider\" && vue-cli-service electron:serve", "electron:serve1": "vue-cli-service electron:serve", "postinstall": "electron-builder install-app-deps", "postuninstall": "electron-builder install-app-deps", "debug:main": "electron --inspect=5858 ./src/background.js", "electron:generate-icons": "electron-icon-builder --input=./public/icon/1.png --output=build --flatten" }, "main": "background.js", "dependencies": { "@electron/remote": "^2.0.8", "@vue/cli-plugin-babel": "^5.0.8", "axios": "0.18.1", "core-js": "^3.6.5", "electron-log": "^4.4.8", "tree-kill": "^1.2.2", "vue": "2.6.10", "vue-layer": "^1.2.0", "vue-router": "3.0.6", "vue-template-compiler": "2.6.10" }, "devDependencies": { "@vue/cli-plugin-eslint": "~4.5.13", "@vue/cli-service": "~4.5.13", "@vue/compiler-sfc": "^3.0.0", "babel-eslint": "^10.1.0", "echarts": "^4.8.0", "echarts-liquidfill": "^2.0.6", "electron": "^13.0.0", "electron-builder": "^25.1.8", "electron-devtools-installer": "^3.1.0", "electron-icon-builder": "^2.0.1", "element-ui": "^2.15.6", "eslint": "^6.7.2", "eslint-plugin-vue": "^7.0.0", "less": "^3.12.2", "less-loader": "^6.2.0", "minimal-request-promise": "^1.5.0", "sass": "1.26.8", "sass-loader": "8.0.2", "vue-cli-plugin-electron-builder": "~2.1.1" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/essential" ], "parserOptions": { "parser": "babel-eslint" }, "rules": { "no-unused-vars": "off", "vue/no-unused-components": "off" } }, "browserslist": [ "> 1%", "last 2 versions", "not dead" ], "__npminstall_done": false } pnpm-lock.yaml
New file Diff too large setup.nsi
@@ -1,8 +1,9 @@ ; Script generated by the HM NIS Edit Script Wizard. !include "version.nsh" ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "fbx" !define PRODUCT_VERSION "0.1.0" !define PRODUCT_VERSION "${VERSION}" !define PRODUCT_PUBLISHER "whyc" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" setup_new.nsi
New file @@ -0,0 +1,822 @@ ; Script generated by the HM NIS Edit Script Wizard. !include "version.nsh" ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "fbx" !define PRODUCT_VERSION "${VERSION}" !define PRODUCT_PUBLISHER "whyc" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_RUN_LEVEL "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor /SOLID lzma SetCompressorDictSize 32 ; MUI 1.67 compatible ------ !include "MUI.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Language Selection Dialog Settings !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "dependent\licence.txt" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN "$INSTDIR\fbx.exe" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files ;!insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}-Setup.exe" InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show ;BrandingText "福光 - 武汉源畅" BrandingText " " Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function .onInstSuccess nsExec::Exec "$INSTDIR\setup_service.bat" Exec $INSTDIR\${PRODUCT_NAME}.exe FunctionEnd Section "MainSection" SEC01 SetOutPath "$INSTDIR" SetOverwrite try File "dist_electron\win-ia32-unpacked\chrome_100_percent.pak" File "dist_electron\win-ia32-unpacked\chrome_200_percent.pak" File "dist_electron\win-ia32-unpacked\d3dcompiler_47.dll" File "dist_electron\win-ia32-unpacked\fbx.exe" CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\fbx.exe" File "dist_electron\win-ia32-unpacked\ffmpeg.dll" File "dist_electron\win-ia32-unpacked\icudtl.dat" File "dist_electron\win-ia32-unpacked\libEGL.dll" File "dist_electron\win-ia32-unpacked\libGLESv2.dll" File "dist_electron\win-ia32-unpacked\LICENSE.electron.txt" File "dist_electron\win-ia32-unpacked\LICENSES.chromium.html" SetOutPath "$INSTDIR\locales" File "dist_electron\win-ia32-unpacked\locales\am.pak" File "dist_electron\win-ia32-unpacked\locales\ar.pak" File "dist_electron\win-ia32-unpacked\locales\bg.pak" File "dist_electron\win-ia32-unpacked\locales\bn.pak" File "dist_electron\win-ia32-unpacked\locales\ca.pak" File "dist_electron\win-ia32-unpacked\locales\cs.pak" File "dist_electron\win-ia32-unpacked\locales\da.pak" File "dist_electron\win-ia32-unpacked\locales\de.pak" File "dist_electron\win-ia32-unpacked\locales\el.pak" File "dist_electron\win-ia32-unpacked\locales\en-GB.pak" File "dist_electron\win-ia32-unpacked\locales\en-US.pak" File "dist_electron\win-ia32-unpacked\locales\es-419.pak" File "dist_electron\win-ia32-unpacked\locales\es.pak" File "dist_electron\win-ia32-unpacked\locales\et.pak" File "dist_electron\win-ia32-unpacked\locales\fa.pak" File "dist_electron\win-ia32-unpacked\locales\fi.pak" File "dist_electron\win-ia32-unpacked\locales\fil.pak" File "dist_electron\win-ia32-unpacked\locales\fr.pak" File "dist_electron\win-ia32-unpacked\locales\gu.pak" File "dist_electron\win-ia32-unpacked\locales\he.pak" File "dist_electron\win-ia32-unpacked\locales\hi.pak" File "dist_electron\win-ia32-unpacked\locales\hr.pak" File "dist_electron\win-ia32-unpacked\locales\hu.pak" File "dist_electron\win-ia32-unpacked\locales\id.pak" File "dist_electron\win-ia32-unpacked\locales\it.pak" File "dist_electron\win-ia32-unpacked\locales\ja.pak" File "dist_electron\win-ia32-unpacked\locales\kn.pak" File "dist_electron\win-ia32-unpacked\locales\ko.pak" File "dist_electron\win-ia32-unpacked\locales\lt.pak" File "dist_electron\win-ia32-unpacked\locales\lv.pak" File "dist_electron\win-ia32-unpacked\locales\ml.pak" File "dist_electron\win-ia32-unpacked\locales\mr.pak" File "dist_electron\win-ia32-unpacked\locales\ms.pak" File "dist_electron\win-ia32-unpacked\locales\nb.pak" File "dist_electron\win-ia32-unpacked\locales\nl.pak" File "dist_electron\win-ia32-unpacked\locales\pl.pak" File "dist_electron\win-ia32-unpacked\locales\pt-BR.pak" File "dist_electron\win-ia32-unpacked\locales\pt-PT.pak" File "dist_electron\win-ia32-unpacked\locales\ro.pak" File "dist_electron\win-ia32-unpacked\locales\ru.pak" File "dist_electron\win-ia32-unpacked\locales\sk.pak" File "dist_electron\win-ia32-unpacked\locales\sl.pak" File "dist_electron\win-ia32-unpacked\locales\sr.pak" File "dist_electron\win-ia32-unpacked\locales\sv.pak" File "dist_electron\win-ia32-unpacked\locales\sw.pak" File "dist_electron\win-ia32-unpacked\locales\ta.pak" File "dist_electron\win-ia32-unpacked\locales\te.pak" File "dist_electron\win-ia32-unpacked\locales\th.pak" File "dist_electron\win-ia32-unpacked\locales\tr.pak" File "dist_electron\win-ia32-unpacked\locales\uk.pak" File "dist_electron\win-ia32-unpacked\locales\vi.pak" File "dist_electron\win-ia32-unpacked\locales\zh-CN.pak" File "dist_electron\win-ia32-unpacked\locales\zh-TW.pak" SetOutPath "$INSTDIR\resources" File "dist_electron\win-ia32-unpacked\resources\app.asar" File "dist_electron\win-ia32-unpacked\resources\elevate.exe" SetOutPath "$INSTDIR" File "dist_electron\win-ia32-unpacked\resources.pak" File "dist_electron\win-ia32-unpacked\snapshot_blob.bin" SetOutPath "$INSTDIR\swiftshader" File "dist_electron\win-ia32-unpacked\swiftshader\libEGL.dll" File "dist_electron\win-ia32-unpacked\swiftshader\libGLESv2.dll" SetOutPath "$INSTDIR" File "dist_electron\win-ia32-unpacked\v8_context_snapshot.bin" File "dist_electron\win-ia32-unpacked\vk_swiftshader.dll" File "dist_electron\win-ia32-unpacked\vk_swiftshader_icd.json" File "dist_electron\win-ia32-unpacked\vulkan-1.dll" File "dependent\FbxAnalysis.exe" File "dependent\FbxAnalysis.jar" File "dependent\FbxAnalysis.xml" File "dependent\licence.txt" File "dependent\remove_service.bat" SetOutPath "$INSTDIR\runtime\bin" File "dependent\runtime\bin\api-ms-win-core-console-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-datetime-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-debug-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-errorhandling-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-file-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-file-l1-2-0.dll" File "dependent\runtime\bin\api-ms-win-core-file-l2-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-handle-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-heap-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-interlocked-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-libraryloader-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-localization-l1-2-0.dll" File "dependent\runtime\bin\api-ms-win-core-memory-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-namedpipe-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-processenvironment-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-processthreads-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-processthreads-l1-1-1.dll" File "dependent\runtime\bin\api-ms-win-core-profile-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-rtlsupport-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-string-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-synch-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-synch-l1-2-0.dll" File "dependent\runtime\bin\api-ms-win-core-sysinfo-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-timezone-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-core-util-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-conio-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-convert-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-environment-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-filesystem-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-heap-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-locale-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-math-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-multibyte-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-private-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-process-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-runtime-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-stdio-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-string-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-time-l1-1-0.dll" File "dependent\runtime\bin\api-ms-win-crt-utility-l1-1-0.dll" File "dependent\runtime\bin\attach.dll" File "dependent\runtime\bin\awt.dll" File "dependent\runtime\bin\bci.dll" File "dependent\runtime\bin\concrt140.dll" File "dependent\runtime\bin\dcpr.dll" File "dependent\runtime\bin\decora_sse.dll" File "dependent\runtime\bin\deploy.dll" SetOutPath "$INSTDIR\runtime\bin\dtplugin" File "dependent\runtime\bin\dtplugin\deployJava1.dll" File "dependent\runtime\bin\dtplugin\npdeployJava1.dll" SetOutPath "$INSTDIR\runtime\bin" File "dependent\runtime\bin\dt_shmem.dll" File "dependent\runtime\bin\dt_socket.dll" File "dependent\runtime\bin\eula.dll" File "dependent\runtime\bin\fontmanager.dll" File "dependent\runtime\bin\fxplugins.dll" File "dependent\runtime\bin\glass.dll" File "dependent\runtime\bin\glib-lite.dll" File "dependent\runtime\bin\gstreamer-lite.dll" File "dependent\runtime\bin\hprof.dll" File "dependent\runtime\bin\instrument.dll" File "dependent\runtime\bin\j2pcsc.dll" File "dependent\runtime\bin\j2pkcs11.dll" File "dependent\runtime\bin\jaas_nt.dll" File "dependent\runtime\bin\jabswitch.exe" File "dependent\runtime\bin\java-rmi.exe" File "dependent\runtime\bin\java.dll" File "dependent\runtime\bin\java.exe" File "dependent\runtime\bin\JavaAccessBridge-64.dll" File "dependent\runtime\bin\javacpl.cpl" File "dependent\runtime\bin\javacpl.exe" File "dependent\runtime\bin\javafx_font.dll" File "dependent\runtime\bin\javafx_font_t2k.dll" File "dependent\runtime\bin\javafx_iio.dll" File "dependent\runtime\bin\javaw.exe" File "dependent\runtime\bin\javaws.exe" File "dependent\runtime\bin\java_crw_demo.dll" File "dependent\runtime\bin\jawt.dll" File "dependent\runtime\bin\JAWTAccessBridge-64.dll" File "dependent\runtime\bin\jdwp.dll" File "dependent\runtime\bin\jfr.dll" File "dependent\runtime\bin\jfxmedia.dll" File "dependent\runtime\bin\jfxwebkit.dll" File "dependent\runtime\bin\jjs.exe" File "dependent\runtime\bin\jli.dll" File "dependent\runtime\bin\jp2iexp.dll" File "dependent\runtime\bin\jp2launcher.exe" File "dependent\runtime\bin\jp2native.dll" File "dependent\runtime\bin\jp2ssv.dll" File "dependent\runtime\bin\jpeg.dll" File "dependent\runtime\bin\jsdt.dll" File "dependent\runtime\bin\jsound.dll" File "dependent\runtime\bin\jsoundds.dll" File "dependent\runtime\bin\keytool.exe" File "dependent\runtime\bin\kinit.exe" File "dependent\runtime\bin\klist.exe" File "dependent\runtime\bin\ktab.exe" File "dependent\runtime\bin\lcms.dll" File "dependent\runtime\bin\management.dll" File "dependent\runtime\bin\mlib_image.dll" File "dependent\runtime\bin\msvcp140.dll" File "dependent\runtime\bin\msvcr100.dll" File "dependent\runtime\bin\net.dll" File "dependent\runtime\bin\nio.dll" File "dependent\runtime\bin\npt.dll" File "dependent\runtime\bin\orbd.exe" File "dependent\runtime\bin\pack200.exe" SetOutPath "$INSTDIR\runtime\bin\plugin2" File "dependent\runtime\bin\plugin2\msvcr100.dll" File "dependent\runtime\bin\plugin2\npjp2.dll" SetOutPath "$INSTDIR\runtime\bin" File "dependent\runtime\bin\policytool.exe" File "dependent\runtime\bin\prism_common.dll" File "dependent\runtime\bin\prism_d3d.dll" File "dependent\runtime\bin\prism_sw.dll" File "dependent\runtime\bin\resource.dll" File "dependent\runtime\bin\rmid.exe" File "dependent\runtime\bin\rmiregistry.exe" File "dependent\runtime\bin\sawindbg.dll" SetOutPath "$INSTDIR\runtime\bin\server" File "dependent\runtime\bin\server\classes.jsa" File "dependent\runtime\bin\server\jvm.dll" File "dependent\runtime\bin\server\Xusage.txt" SetOutPath "$INSTDIR\runtime\bin" File "dependent\runtime\bin\servertool.exe" File "dependent\runtime\bin\splashscreen.dll" File "dependent\runtime\bin\ssv.dll" File "dependent\runtime\bin\ssvagent.exe" File "dependent\runtime\bin\sunec.dll" File "dependent\runtime\bin\sunmscapi.dll" File "dependent\runtime\bin\t2k.dll" File "dependent\runtime\bin\tnameserv.exe" File "dependent\runtime\bin\ucrtbase.dll" File "dependent\runtime\bin\unpack.dll" File "dependent\runtime\bin\unpack200.exe" File "dependent\runtime\bin\vcruntime140.dll" File "dependent\runtime\bin\verify.dll" File "dependent\runtime\bin\w2k_lsa_auth.dll" File "dependent\runtime\bin\WindowsAccessBridge-64.dll" File "dependent\runtime\bin\wsdetect.dll" File "dependent\runtime\bin\zip.dll" SetOutPath "$INSTDIR\runtime" File "dependent\runtime\COPYRIGHT" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\accessibility.properties" SetOutPath "$INSTDIR\runtime\lib\amd64" File "dependent\runtime\lib\amd64\jvm.cfg" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\calendars.properties" File "dependent\runtime\lib\charsets.jar" File "dependent\runtime\lib\classlist" SetOutPath "$INSTDIR\runtime\lib\cmm" File "dependent\runtime\lib\cmm\CIEXYZ.pf" File "dependent\runtime\lib\cmm\GRAY.pf" File "dependent\runtime\lib\cmm\LINEAR_RGB.pf" File "dependent\runtime\lib\cmm\PYCC.pf" File "dependent\runtime\lib\cmm\sRGB.pf" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\content-types.properties" File "dependent\runtime\lib\currency.data" SetOutPath "$INSTDIR\runtime\lib\deploy" File "dependent\runtime\lib\deploy\ffjcext.zip" File "dependent\runtime\lib\deploy\messages.properties" File "dependent\runtime\lib\deploy\messages_de.properties" File "dependent\runtime\lib\deploy\messages_es.properties" File "dependent\runtime\lib\deploy\messages_fr.properties" File "dependent\runtime\lib\deploy\messages_it.properties" File "dependent\runtime\lib\deploy\messages_ja.properties" File "dependent\runtime\lib\deploy\messages_ko.properties" File "dependent\runtime\lib\deploy\messages_pt_BR.properties" File "dependent\runtime\lib\deploy\messages_sv.properties" File "dependent\runtime\lib\deploy\messages_zh_CN.properties" File "dependent\runtime\lib\deploy\messages_zh_HK.properties" File "dependent\runtime\lib\deploy\messages_zh_TW.properties" File "dependent\runtime\lib\deploy\splash.gif" File "dependent\runtime\lib\deploy\splash@2x.gif" File "dependent\runtime\lib\deploy\splash_11-lic.gif" File "dependent\runtime\lib\deploy\splash_11@2x-lic.gif" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\deploy.jar" SetOutPath "$INSTDIR\runtime\lib\ext" File "dependent\runtime\lib\ext\access-bridge-64.jar" File "dependent\runtime\lib\ext\cldrdata.jar" File "dependent\runtime\lib\ext\dnsns.jar" File "dependent\runtime\lib\ext\jaccess.jar" File "dependent\runtime\lib\ext\jfxrt.jar" File "dependent\runtime\lib\ext\localedata.jar" File "dependent\runtime\lib\ext\meta-index" File "dependent\runtime\lib\ext\nashorn.jar" File "dependent\runtime\lib\ext\sunec.jar" File "dependent\runtime\lib\ext\sunjce_provider.jar" File "dependent\runtime\lib\ext\sunmscapi.jar" File "dependent\runtime\lib\ext\sunpkcs11.jar" File "dependent\runtime\lib\ext\zipfs.jar" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\flavormap.properties" File "dependent\runtime\lib\fontconfig.bfc" File "dependent\runtime\lib\fontconfig.properties.src" SetOutPath "$INSTDIR\runtime\lib\fonts" File "dependent\runtime\lib\fonts\LucidaBrightDemiBold.ttf" File "dependent\runtime\lib\fonts\LucidaBrightDemiItalic.ttf" File "dependent\runtime\lib\fonts\LucidaBrightItalic.ttf" File "dependent\runtime\lib\fonts\LucidaBrightRegular.ttf" File "dependent\runtime\lib\fonts\LucidaSansDemiBold.ttf" File "dependent\runtime\lib\fonts\LucidaSansRegular.ttf" File "dependent\runtime\lib\fonts\LucidaTypewriterBold.ttf" File "dependent\runtime\lib\fonts\LucidaTypewriterRegular.ttf" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\hijrah-config-umalqura.properties" SetOutPath "$INSTDIR\runtime\lib\images\cursors" File "dependent\runtime\lib\images\cursors\cursors.properties" File "dependent\runtime\lib\images\cursors\invalid32x32.gif" File "dependent\runtime\lib\images\cursors\win32_CopyDrop32x32.gif" File "dependent\runtime\lib\images\cursors\win32_CopyNoDrop32x32.gif" File "dependent\runtime\lib\images\cursors\win32_LinkDrop32x32.gif" File "dependent\runtime\lib\images\cursors\win32_LinkNoDrop32x32.gif" File "dependent\runtime\lib\images\cursors\win32_MoveDrop32x32.gif" File "dependent\runtime\lib\images\cursors\win32_MoveNoDrop32x32.gif" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\javafx.properties" File "dependent\runtime\lib\javaws.jar" File "dependent\runtime\lib\jce.jar" SetOutPath "$INSTDIR\runtime\lib\jfr" File "dependent\runtime\lib\jfr\default.jfc" File "dependent\runtime\lib\jfr\profile.jfc" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\jfr.jar" File "dependent\runtime\lib\jfxswt.jar" File "dependent\runtime\lib\jsse.jar" File "dependent\runtime\lib\jvm.hprof.txt" File "dependent\runtime\lib\logging.properties" SetOutPath "$INSTDIR\runtime\lib\management" File "dependent\runtime\lib\management\jmxremote.access" File "dependent\runtime\lib\management\jmxremote.password.template" File "dependent\runtime\lib\management\management.properties" File "dependent\runtime\lib\management\snmp.acl.template" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\management-agent.jar" File "dependent\runtime\lib\meta-index" File "dependent\runtime\lib\net.properties" File "dependent\runtime\lib\plugin.jar" File "dependent\runtime\lib\psfont.properties.ja" File "dependent\runtime\lib\psfontj2d.properties" File "dependent\runtime\lib\resources.jar" File "dependent\runtime\lib\rt.jar" SetOutPath "$INSTDIR\runtime\lib\security" File "dependent\runtime\lib\security\blacklist" File "dependent\runtime\lib\security\blacklisted.certs" File "dependent\runtime\lib\security\cacerts" File "dependent\runtime\lib\security\java.policy" File "dependent\runtime\lib\security\java.security" File "dependent\runtime\lib\security\javaws.policy" SetOutPath "$INSTDIR\runtime\lib\security\policy\limited" File "dependent\runtime\lib\security\policy\limited\local_policy.jar" File "dependent\runtime\lib\security\policy\limited\US_export_policy.jar" SetOutPath "$INSTDIR\runtime\lib\security\policy\unlimited" File "dependent\runtime\lib\security\policy\unlimited\local_policy.jar" File "dependent\runtime\lib\security\policy\unlimited\US_export_policy.jar" SetOutPath "$INSTDIR\runtime\lib\security" File "dependent\runtime\lib\security\trusted.libraries" SetOutPath "$INSTDIR\runtime\lib" File "dependent\runtime\lib\sound.properties" File "dependent\runtime\lib\tzdb.dat" File "dependent\runtime\lib\tzmappings" SetOutPath "$INSTDIR\runtime" File "dependent\runtime\LICENSE" File "dependent\runtime\README.txt" File "dependent\runtime\THIRDPARTYLICENSEREADME-JAVAFX.txt" File "dependent\runtime\THIRDPARTYLICENSEREADME.txt" File "dependent\runtime\Welcome.html" SetOutPath "$INSTDIR" File "dependent\setup_service.bat" File "dependent\stop.bat" SectionEnd Section -AdditionalIcons CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe" SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR" ;针对所有用户有效 添加程序以管理员权限运行 ;SetRegView 64 WriteRegStr HKLM "${PRODUCT_RUN_LEVEL}" "$INSTDIR\${PRODUCT_NAME}.exe" "RUNASADMIN" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_NAME}.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。" FunctionEnd Function un.onInit !insertmacro MUI_UNGETLANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2 Abort FunctionEnd Section Uninstall nsExec::Exec "$INSTDIR\remove_service.bat" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\stop.bat" Delete "$INSTDIR\setup_service.bat" Delete "$INSTDIR\runtime\Welcome.html" Delete "$INSTDIR\runtime\THIRDPARTYLICENSEREADME.txt" Delete "$INSTDIR\runtime\THIRDPARTYLICENSEREADME-JAVAFX.txt" Delete "$INSTDIR\runtime\README.txt" Delete "$INSTDIR\runtime\LICENSE" Delete "$INSTDIR\runtime\lib\tzmappings" Delete "$INSTDIR\runtime\lib\tzdb.dat" Delete "$INSTDIR\runtime\lib\sound.properties" Delete "$INSTDIR\runtime\lib\security\trusted.libraries" Delete "$INSTDIR\runtime\lib\security\policy\unlimited\US_export_policy.jar" Delete "$INSTDIR\runtime\lib\security\policy\unlimited\local_policy.jar" Delete "$INSTDIR\runtime\lib\security\policy\limited\US_export_policy.jar" Delete "$INSTDIR\runtime\lib\security\policy\limited\local_policy.jar" Delete "$INSTDIR\runtime\lib\security\javaws.policy" Delete "$INSTDIR\runtime\lib\security\java.security" Delete "$INSTDIR\runtime\lib\security\java.policy" Delete "$INSTDIR\runtime\lib\security\cacerts" Delete "$INSTDIR\runtime\lib\security\blacklisted.certs" Delete "$INSTDIR\runtime\lib\security\blacklist" Delete "$INSTDIR\runtime\lib\rt.jar" Delete "$INSTDIR\runtime\lib\resources.jar" Delete "$INSTDIR\runtime\lib\psfontj2d.properties" Delete "$INSTDIR\runtime\lib\psfont.properties.ja" Delete "$INSTDIR\runtime\lib\plugin.jar" Delete "$INSTDIR\runtime\lib\net.properties" Delete "$INSTDIR\runtime\lib\meta-index" Delete "$INSTDIR\runtime\lib\management-agent.jar" Delete "$INSTDIR\runtime\lib\management\snmp.acl.template" Delete "$INSTDIR\runtime\lib\management\management.properties" Delete "$INSTDIR\runtime\lib\management\jmxremote.password.template" Delete "$INSTDIR\runtime\lib\management\jmxremote.access" Delete "$INSTDIR\runtime\lib\logging.properties" Delete "$INSTDIR\runtime\lib\jvm.hprof.txt" Delete "$INSTDIR\runtime\lib\jsse.jar" Delete "$INSTDIR\runtime\lib\jfxswt.jar" Delete "$INSTDIR\runtime\lib\jfr.jar" Delete "$INSTDIR\runtime\lib\jfr\profile.jfc" Delete "$INSTDIR\runtime\lib\jfr\default.jfc" Delete "$INSTDIR\runtime\lib\jce.jar" Delete "$INSTDIR\runtime\lib\javaws.jar" Delete "$INSTDIR\runtime\lib\javafx.properties" Delete "$INSTDIR\runtime\lib\images\cursors\win32_MoveNoDrop32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\win32_MoveDrop32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\win32_LinkNoDrop32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\win32_LinkDrop32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\win32_CopyNoDrop32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\win32_CopyDrop32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\invalid32x32.gif" Delete "$INSTDIR\runtime\lib\images\cursors\cursors.properties" Delete "$INSTDIR\runtime\lib\hijrah-config-umalqura.properties" Delete "$INSTDIR\runtime\lib\fonts\LucidaTypewriterRegular.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaTypewriterBold.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaSansRegular.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaSansDemiBold.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaBrightRegular.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaBrightItalic.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaBrightDemiItalic.ttf" Delete "$INSTDIR\runtime\lib\fonts\LucidaBrightDemiBold.ttf" Delete "$INSTDIR\runtime\lib\fontconfig.properties.src" Delete "$INSTDIR\runtime\lib\fontconfig.bfc" Delete "$INSTDIR\runtime\lib\flavormap.properties" Delete "$INSTDIR\runtime\lib\ext\zipfs.jar" Delete "$INSTDIR\runtime\lib\ext\sunpkcs11.jar" Delete "$INSTDIR\runtime\lib\ext\sunmscapi.jar" Delete "$INSTDIR\runtime\lib\ext\sunjce_provider.jar" Delete "$INSTDIR\runtime\lib\ext\sunec.jar" Delete "$INSTDIR\runtime\lib\ext\nashorn.jar" Delete "$INSTDIR\runtime\lib\ext\meta-index" Delete "$INSTDIR\runtime\lib\ext\localedata.jar" Delete "$INSTDIR\runtime\lib\ext\jfxrt.jar" Delete "$INSTDIR\runtime\lib\ext\jaccess.jar" Delete "$INSTDIR\runtime\lib\ext\dnsns.jar" Delete "$INSTDIR\runtime\lib\ext\cldrdata.jar" Delete "$INSTDIR\runtime\lib\ext\access-bridge-64.jar" Delete "$INSTDIR\runtime\lib\deploy.jar" Delete "$INSTDIR\runtime\lib\deploy\splash_11@2x-lic.gif" Delete "$INSTDIR\runtime\lib\deploy\splash_11-lic.gif" Delete "$INSTDIR\runtime\lib\deploy\splash@2x.gif" Delete "$INSTDIR\runtime\lib\deploy\splash.gif" Delete "$INSTDIR\runtime\lib\deploy\messages_zh_TW.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_zh_HK.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_zh_CN.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_sv.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_pt_BR.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_ko.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_ja.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_it.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_fr.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_es.properties" Delete "$INSTDIR\runtime\lib\deploy\messages_de.properties" Delete "$INSTDIR\runtime\lib\deploy\messages.properties" Delete "$INSTDIR\runtime\lib\deploy\ffjcext.zip" Delete "$INSTDIR\runtime\lib\currency.data" Delete "$INSTDIR\runtime\lib\content-types.properties" Delete "$INSTDIR\runtime\lib\cmm\sRGB.pf" Delete "$INSTDIR\runtime\lib\cmm\PYCC.pf" Delete "$INSTDIR\runtime\lib\cmm\LINEAR_RGB.pf" Delete "$INSTDIR\runtime\lib\cmm\GRAY.pf" Delete "$INSTDIR\runtime\lib\cmm\CIEXYZ.pf" Delete "$INSTDIR\runtime\lib\classlist" Delete "$INSTDIR\runtime\lib\charsets.jar" Delete "$INSTDIR\runtime\lib\calendars.properties" Delete "$INSTDIR\runtime\lib\amd64\jvm.cfg" Delete "$INSTDIR\runtime\lib\accessibility.properties" Delete "$INSTDIR\runtime\COPYRIGHT" Delete "$INSTDIR\runtime\bin\zip.dll" Delete "$INSTDIR\runtime\bin\wsdetect.dll" Delete "$INSTDIR\runtime\bin\WindowsAccessBridge-64.dll" Delete "$INSTDIR\runtime\bin\w2k_lsa_auth.dll" Delete "$INSTDIR\runtime\bin\verify.dll" Delete "$INSTDIR\runtime\bin\vcruntime140.dll" Delete "$INSTDIR\runtime\bin\unpack200.exe" Delete "$INSTDIR\runtime\bin\unpack.dll" Delete "$INSTDIR\runtime\bin\ucrtbase.dll" Delete "$INSTDIR\runtime\bin\tnameserv.exe" Delete "$INSTDIR\runtime\bin\t2k.dll" Delete "$INSTDIR\runtime\bin\sunmscapi.dll" Delete "$INSTDIR\runtime\bin\sunec.dll" Delete "$INSTDIR\runtime\bin\ssvagent.exe" Delete "$INSTDIR\runtime\bin\ssv.dll" Delete "$INSTDIR\runtime\bin\splashscreen.dll" Delete "$INSTDIR\runtime\bin\servertool.exe" Delete "$INSTDIR\runtime\bin\server\Xusage.txt" Delete "$INSTDIR\runtime\bin\server\jvm.dll" Delete "$INSTDIR\runtime\bin\server\classes.jsa" Delete "$INSTDIR\runtime\bin\sawindbg.dll" Delete "$INSTDIR\runtime\bin\rmiregistry.exe" Delete "$INSTDIR\runtime\bin\rmid.exe" Delete "$INSTDIR\runtime\bin\resource.dll" Delete "$INSTDIR\runtime\bin\prism_sw.dll" Delete "$INSTDIR\runtime\bin\prism_d3d.dll" Delete "$INSTDIR\runtime\bin\prism_common.dll" Delete "$INSTDIR\runtime\bin\policytool.exe" Delete "$INSTDIR\runtime\bin\plugin2\npjp2.dll" Delete "$INSTDIR\runtime\bin\plugin2\msvcr100.dll" Delete "$INSTDIR\runtime\bin\pack200.exe" Delete "$INSTDIR\runtime\bin\orbd.exe" Delete "$INSTDIR\runtime\bin\npt.dll" Delete "$INSTDIR\runtime\bin\nio.dll" Delete "$INSTDIR\runtime\bin\net.dll" Delete "$INSTDIR\runtime\bin\msvcr100.dll" Delete "$INSTDIR\runtime\bin\msvcp140.dll" Delete "$INSTDIR\runtime\bin\mlib_image.dll" Delete "$INSTDIR\runtime\bin\management.dll" Delete "$INSTDIR\runtime\bin\lcms.dll" Delete "$INSTDIR\runtime\bin\ktab.exe" Delete "$INSTDIR\runtime\bin\klist.exe" Delete "$INSTDIR\runtime\bin\kinit.exe" Delete "$INSTDIR\runtime\bin\keytool.exe" Delete "$INSTDIR\runtime\bin\jsoundds.dll" Delete "$INSTDIR\runtime\bin\jsound.dll" Delete "$INSTDIR\runtime\bin\jsdt.dll" Delete "$INSTDIR\runtime\bin\jpeg.dll" Delete "$INSTDIR\runtime\bin\jp2ssv.dll" Delete "$INSTDIR\runtime\bin\jp2native.dll" Delete "$INSTDIR\runtime\bin\jp2launcher.exe" Delete "$INSTDIR\runtime\bin\jp2iexp.dll" Delete "$INSTDIR\runtime\bin\jli.dll" Delete "$INSTDIR\runtime\bin\jjs.exe" Delete "$INSTDIR\runtime\bin\jfxwebkit.dll" Delete "$INSTDIR\runtime\bin\jfxmedia.dll" Delete "$INSTDIR\runtime\bin\jfr.dll" Delete "$INSTDIR\runtime\bin\jdwp.dll" Delete "$INSTDIR\runtime\bin\JAWTAccessBridge-64.dll" Delete "$INSTDIR\runtime\bin\jawt.dll" Delete "$INSTDIR\runtime\bin\java_crw_demo.dll" Delete "$INSTDIR\runtime\bin\javaws.exe" Delete "$INSTDIR\runtime\bin\javaw.exe" Delete "$INSTDIR\runtime\bin\javafx_iio.dll" Delete "$INSTDIR\runtime\bin\javafx_font_t2k.dll" Delete "$INSTDIR\runtime\bin\javafx_font.dll" Delete "$INSTDIR\runtime\bin\javacpl.exe" Delete "$INSTDIR\runtime\bin\javacpl.cpl" Delete "$INSTDIR\runtime\bin\JavaAccessBridge-64.dll" Delete "$INSTDIR\runtime\bin\java.exe" Delete "$INSTDIR\runtime\bin\java.dll" Delete "$INSTDIR\runtime\bin\java-rmi.exe" Delete "$INSTDIR\runtime\bin\jabswitch.exe" Delete "$INSTDIR\runtime\bin\jaas_nt.dll" Delete "$INSTDIR\runtime\bin\j2pkcs11.dll" Delete "$INSTDIR\runtime\bin\j2pcsc.dll" Delete "$INSTDIR\runtime\bin\instrument.dll" Delete "$INSTDIR\runtime\bin\hprof.dll" Delete "$INSTDIR\runtime\bin\gstreamer-lite.dll" Delete "$INSTDIR\runtime\bin\glib-lite.dll" Delete "$INSTDIR\runtime\bin\glass.dll" Delete "$INSTDIR\runtime\bin\fxplugins.dll" Delete "$INSTDIR\runtime\bin\fontmanager.dll" Delete "$INSTDIR\runtime\bin\eula.dll" Delete "$INSTDIR\runtime\bin\dt_socket.dll" Delete "$INSTDIR\runtime\bin\dt_shmem.dll" Delete "$INSTDIR\runtime\bin\dtplugin\npdeployJava1.dll" Delete "$INSTDIR\runtime\bin\dtplugin\deployJava1.dll" Delete "$INSTDIR\runtime\bin\deploy.dll" Delete "$INSTDIR\runtime\bin\decora_sse.dll" Delete "$INSTDIR\runtime\bin\dcpr.dll" Delete "$INSTDIR\runtime\bin\concrt140.dll" Delete "$INSTDIR\runtime\bin\bci.dll" Delete "$INSTDIR\runtime\bin\awt.dll" Delete "$INSTDIR\runtime\bin\attach.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-utility-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-time-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-string-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-stdio-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-runtime-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-process-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-private-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-multibyte-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-math-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-locale-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-heap-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-filesystem-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-environment-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-convert-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-crt-conio-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-util-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-timezone-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-sysinfo-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-synch-l1-2-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-synch-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-string-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-rtlsupport-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-profile-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-processthreads-l1-1-1.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-processthreads-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-processenvironment-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-namedpipe-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-memory-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-localization-l1-2-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-libraryloader-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-interlocked-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-heap-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-handle-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-file-l2-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-file-l1-2-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-file-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-errorhandling-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-debug-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-datetime-l1-1-0.dll" Delete "$INSTDIR\runtime\bin\api-ms-win-core-console-l1-1-0.dll" Delete "$INSTDIR\remove_service.bat" Delete "$INSTDIR\licence.txt" Delete "$INSTDIR\FbxAnalysis.xml" Delete "$INSTDIR\FbxAnalysis.jar" Delete "$INSTDIR\FbxAnalysis.exe" Delete "$INSTDIR\vulkan-1.dll" Delete "$INSTDIR\vk_swiftshader_icd.json" Delete "$INSTDIR\vk_swiftshader.dll" Delete "$INSTDIR\v8_context_snapshot.bin" Delete "$INSTDIR\swiftshader\libGLESv2.dll" Delete "$INSTDIR\swiftshader\libEGL.dll" Delete "$INSTDIR\snapshot_blob.bin" Delete "$INSTDIR\resources.pak" Delete "$INSTDIR\resources\elevate.exe" Delete "$INSTDIR\resources\app.asar" Delete "$INSTDIR\locales\zh-TW.pak" Delete "$INSTDIR\locales\zh-CN.pak" Delete "$INSTDIR\locales\vi.pak" Delete "$INSTDIR\locales\uk.pak" Delete "$INSTDIR\locales\tr.pak" Delete "$INSTDIR\locales\th.pak" Delete "$INSTDIR\locales\te.pak" Delete "$INSTDIR\locales\ta.pak" Delete "$INSTDIR\locales\sw.pak" Delete "$INSTDIR\locales\sv.pak" Delete "$INSTDIR\locales\sr.pak" Delete "$INSTDIR\locales\sl.pak" Delete "$INSTDIR\locales\sk.pak" Delete "$INSTDIR\locales\ru.pak" Delete "$INSTDIR\locales\ro.pak" Delete "$INSTDIR\locales\pt-PT.pak" Delete "$INSTDIR\locales\pt-BR.pak" Delete "$INSTDIR\locales\pl.pak" Delete "$INSTDIR\locales\nl.pak" Delete "$INSTDIR\locales\nb.pak" Delete "$INSTDIR\locales\ms.pak" Delete "$INSTDIR\locales\mr.pak" Delete "$INSTDIR\locales\ml.pak" Delete "$INSTDIR\locales\lv.pak" Delete "$INSTDIR\locales\lt.pak" Delete "$INSTDIR\locales\ko.pak" Delete "$INSTDIR\locales\kn.pak" Delete "$INSTDIR\locales\ja.pak" Delete "$INSTDIR\locales\it.pak" Delete "$INSTDIR\locales\id.pak" Delete "$INSTDIR\locales\hu.pak" Delete "$INSTDIR\locales\hr.pak" Delete "$INSTDIR\locales\hi.pak" Delete "$INSTDIR\locales\he.pak" Delete "$INSTDIR\locales\gu.pak" Delete "$INSTDIR\locales\fr.pak" Delete "$INSTDIR\locales\fil.pak" Delete "$INSTDIR\locales\fi.pak" Delete "$INSTDIR\locales\fa.pak" Delete "$INSTDIR\locales\et.pak" Delete "$INSTDIR\locales\es.pak" Delete "$INSTDIR\locales\es-419.pak" Delete "$INSTDIR\locales\en-US.pak" Delete "$INSTDIR\locales\en-GB.pak" Delete "$INSTDIR\locales\el.pak" Delete "$INSTDIR\locales\de.pak" Delete "$INSTDIR\locales\da.pak" Delete "$INSTDIR\locales\cs.pak" Delete "$INSTDIR\locales\ca.pak" Delete "$INSTDIR\locales\bn.pak" Delete "$INSTDIR\locales\bg.pak" Delete "$INSTDIR\locales\ar.pak" Delete "$INSTDIR\locales\am.pak" Delete "$INSTDIR\LICENSES.chromium.html" Delete "$INSTDIR\LICENSE.electron.txt" Delete "$INSTDIR\libGLESv2.dll" Delete "$INSTDIR\libEGL.dll" Delete "$INSTDIR\icudtl.dat" Delete "$INSTDIR\ffmpeg.dll" Delete "$INSTDIR\fbx.exe" Delete "$INSTDIR\d3dcompiler_47.dll" Delete "$INSTDIR\chrome_200_percent.pak" Delete "$INSTDIR\chrome_100_percent.pak" Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" Delete "$DESKTOP\${PRODUCT_NAME}.lnk" Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" RMDir "$SMPROGRAMS\${PRODUCT_NAME}" RMDir "$INSTDIR\swiftshader" RMDir "$INSTDIR\runtime\lib\security\policy\unlimited" RMDir "$INSTDIR\runtime\lib\security\policy\limited" RMDir "$INSTDIR\runtime\lib\security" RMDir "$INSTDIR\runtime\lib\management" RMDir "$INSTDIR\runtime\lib\jfr" RMDir "$INSTDIR\runtime\lib\images\cursors" RMDir "$INSTDIR\runtime\lib\fonts" RMDir "$INSTDIR\runtime\lib\ext" RMDir "$INSTDIR\runtime\lib\deploy" RMDir "$INSTDIR\runtime\lib\cmm" RMDir "$INSTDIR\runtime\lib\amd64" RMDir "$INSTDIR\runtime\lib" RMDir "$INSTDIR\runtime\bin\server" RMDir "$INSTDIR\runtime\bin\plugin2" RMDir "$INSTDIR\runtime\bin\dtplugin" RMDir "$INSTDIR\runtime\bin" RMDir "$INSTDIR\runtime" RMDir "$INSTDIR\resources" RMDir "$INSTDIR\locales" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd src/background.js
@@ -1,47 +1,60 @@ 'use strict' "use strict"; const { app, protocol, BrowserWindow, Menu, ipcMain, dialog, shell } = require('electron'); const { createProtocol } = require('vue-cli-plugin-electron-builder/lib'); const path = require('path'); const child_process = require('child_process'); const log = require('electron-log'); const appUrl = 'http://localhost:8099/fbx/test/hello'; const requestPromise = require('minimal-request-promise'); const remote = require('@electron/remote/main'); const { app, protocol, BrowserWindow, Menu, ipcMain, dialog, shell, } = require("electron"); const { createProtocol } = require("vue-cli-plugin-electron-builder/lib"); const path = require("path"); const child_process = require("child_process"); const log = require("electron-log"); // const appUrl = "http://localhost:8099/fbx/test/hello"; const appUrl = "http://localhost:8099/fbx/testParam/callService?seconds=3"; const requestPromise = require("minimal-request-promise"); const remote = require("@electron/remote/main"); remote.initialize(); const isDevelopment = process.env.NODE_ENV !== 'production' const isDevelopment = process.env.NODE_ENV !== "production"; let win = null; let loadingWin = null; // 单例锁 const gotTheLock = app.requestSingleInstanceLock() const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { app.quit() app.quit(); } else { app.on('second-instance', (event, commandLine, workingDirectory) => { app.on("second-instance", (event, commandLine, workingDirectory) => { // 当运行第二个实例时,将会聚焦到myWindow这个窗口 if (win) { if (win.isMinimized()) win.restore() win.focus() if (win.isMinimized()) win.restore(); win.focus(); // TODO 双击文件 打开程序时 发送的事件 if (commandLine[2]) { win.webContents.send('selected-file', { filePaths: [commandLine[2]] }, 'MenuList'); win.webContents.send( "selected-file", { filePaths: [commandLine[2]] }, "MenuList" ); } } }) }); } // Scheme must be registered before the app is ready protocol.registerSchemesAsPrivileged([ { scheme: 'app', privileges: { secure: true, standard: true } } ]) { scheme: "app", privileges: { secure: true, standard: true } }, ]); // loading 窗口 const loadingURL = isDevelopment ? path.join(__dirname, './loading.html') : `file://${__dirname}/loading.html`; const loadingURL = isDevelopment ? path.join(__dirname, "./loading.html") : `file://${__dirname}/loading.html`; const showLoading = (cb, argFn) => { loadingWin = new BrowserWindow({ // show: false, @@ -51,8 +64,8 @@ resizable: false, transparent: true, webPreferences: { preload: path.join(__dirname, './preload.js') } preload: path.join(__dirname, "./preload.js"), }, }); // loadingWin.once('show', () => { // cb(true); @@ -69,62 +82,207 @@ // serverProcess = require('child_process').execFile(dir + '/app_x64.exe'); // }); // } requestPromise.get(appUrl).then(function () { log.info('窗口初始化 服务正常'); // ipcRenderer.send('java-ready'); loadingWin.webContents.send('java-ready'); }, function () { log.info('窗口初始化 接口不通'); log.info('正在终止java进程,然后重启服务'); let stop = child_process.spawn('cmd.exe', ['/c', 'stop.bat']); stop.on('exit', function (code) { if (code > 0) { return false; } log.info('java进程被终止,准备重启服务'); child_process.exec(`"${process.cwd()}\\FbxAnalysis.exe" restart`, (err) => { requestPromise.get(appUrl).then( function () { log.info("窗口初始化 服务正常"); // ipcRenderer.send('java-ready'); loadingWin.webContents.send("java-ready"); }, function () { log.info("窗口初始化 接口不通"); log.info("正在终止java进程,然后重启服务"); // let stop = child_process.spawn("cmd.exe", ["/c", "stop.bat"]); // let stop; // try { // stop = child_process.spawn("cmd.exe", ["/c", "stop.bat"]); // stop.on("close", function (code) { // log.info("子进程关闭,代码: " + code); // }); // stop.on("disconnect", function () { // log.info("子进程断开连接"); // }); // stop.on("error", function (err) { // log.info("子进程发生错误: " + err); // }); // stop.on("exit", function (code) { // log.info("子进程退出,代码: " + code); // }); // stop.on("message", function (message) { // log.info("子进程发送消息: " + message); // }); // stop.on("spawn", function () { // log.info("子进程被创建"); // }); // stop.on("stdio", function (stdio) { // log.info("子进程的标准输入、输出或错误流发生变化: " + stdio); // }); // stop.stdout.on("data", function (data) { // log.info("子进程的标准输出: " + data.toString()); // }); // stop.stderr.on("data", function (data) { // log.info("子进程的标准错误输出: " + data.toString()); // }); // // ... // } catch (err) { // log.info("catch stop.bat 执行失败, " + err); // } // stop.on("error", function (err) { // log.info("error: ===="); // log.info("error: " + err.toString()); // log.info("on error stop.bat 执行失败, " + err); // }); // stop.on("exit", function (code) { // if (code > 0) { // log.info("stop.bat 执行失败, " + stop.stderr); // log.info("stop.bat 失败日志:" + stop.stderr.toString()); // return false; // } // log.info("java进程被终止,准备重启服务"); // child_process.exec( // `"${process.cwd()}\\FbxAnalysis.exe" restart`, // (err) => { // if (err) { // log.info("重启服务出错了stderr: " + JSON.stringify(err)); // // 重新运行setup批处理 尝试重新注册服务 // child_process.spawn("cmd.exe", ["/c", "setup_service.bat"]); // log.info("服务异常 正在尝试重新注册服务"); // } else { // log.info("服务重启成功,连接中"); // } // // 等到服务就绪再重启 // checkService(() => { // loadingWin.webContents.send("java-ready"); // }); // } // ); // }); // TODO // stop.stderr.on("data", (data) => { // log.info("stop.bat 执行失败: " + data.toString()); // child_process.exec( // `"${process.cwd()}\\FbxAnalysis.exe" restart`, // (err) => { // if (err) { // log.info("重启服务出错了stderr: " + JSON.stringify(err)); // // 重新运行setup批处理 尝试重新注册服务 // child_process.spawn("cmd.exe", ["/c", "setup_service.bat"]); // log.info("服务异常 正在尝试重新注册服务"); // } else { // log.info("服务重启成功,连接中"); // } // // 等到服务就绪再重启 // checkService(() => { // loadingWin.webContents.send("java-ready"); // }); // } // ); // }); // TODO child_process.exec("cmd.exe /c stop.bat", (err, stdout, stderr) => { if (err) { log.info('重启服务出错了stderr: ' + JSON.stringify(err)); return log.info("stop.bat 执行失败, " + err); log.info("stop.bat 失败日志:" + err.toString()); return false; } else { log.info("stdout: " + stdout.toString()); log.info("java进程被终止,准备重启服务"); child_process.exec( `"${process.cwd()}\\FbxAnalysis.exe" restart`, (err) => { if (err) { log.info("重启服务出错了stderr: " + JSON.stringify(err)); // 重新运行setup批处理 尝试重新注册服务 // child_process.spawn("cmd.exe", ["/c", "setup_service.bat"]); // try { // child_process.exec( // `${process.cwd()}\\setup_service.bat`, // (err2, stdout2, stderr) => { // log.info("服务异常 正在尝试重新注册服务"); // if (err2) { // log.info("setup_service.bat 执行失败, " + err2); // log.info( // "setup_service.bat 失败日志:" + err2.toString() // ); // } else { // log.info("setup stdout: " + stdout2.toString()); // } // } // ); // } catch (error) { // log.info("setup_service.bat 执行失败, catch " + error); // } child_process.exec("cmd.exe /c setup_service.bat", (err2, stdout2, stderr) => { log.info("服务异常 正在尝试重新注册服务"); if (err2) { log.info("setup_service.bat 执行失败, " + err2); log.info("setup_service.bat 失败日志:" + err2.toString()); } else { log.info("setup stdout: " + stdout2.toString()); } }); } else { log.info("服务重启成功,连接中"); } // 等到服务就绪再重启 checkService(() => { loadingWin.webContents.send("java-ready"); }); } ); } log.info('服务重启成功,连接中'); // 等到服务就绪再重启 checkService(() => { loadingWin.webContents.send('java-ready'); }); }); }); // log.info('窗口初始化 接口不通 重启服务'); // child_process.exec(`"${process.cwd()}\\FbxAnalysis.exe" restart`, (err) => { // if (err) { // log.info('重启服务出错了stderr: ' + JSON.stringify(err)); // return // } // log.info('服务重启成功,连接中'); // // 等到服务就绪再重启 // checkService(() => { // loadingWin.webContents.send('java-ready'); // }); // }); }); } // log.info('窗口初始化 接口不通 重启服务'); // child_process.exec(`"${process.cwd()}\\FbxAnalysis.exe" restart`, (err) => { // if (err) { // log.info('重启服务出错了stderr: ' + JSON.stringify(err)); // return // } // log.info('服务重启成功,连接中'); // // 等到服务就绪再重启 // checkService(() => { // loadingWin.webContents.send('java-ready'); // }); // }); } ); }; const checkService = function (cb) { requestPromise.get(appUrl).then(function (response) { log.info(response); log.info('Server started!'); cb(); }, function (response) { log.warn(response); log.info('Waiting for the server start...'); setTimeout(function () { checkService(cb); }, 500) }) } requestPromise.get(appUrl).then( function (response) { log.info(response); log.info("Server started!"); cb(); }, function (response) { log.warn(response); log.info("Waiting for the server start..."); setTimeout(function () { checkService(cb); }, 500); } ); }; // const platform = process.platform let serverProcess let serverProcess; if (!isDevelopment) { Menu.setApplicationMenu(null); @@ -146,34 +304,34 @@ allowRunningInsecureContent: false, contextIsolation: true, enableRemoteModule: false, preload: path.join(__dirname, 'preload.js') } }) preload: path.join(__dirname, "preload.js"), }, }); // remote.enable(win.webContents); if (process.env.WEBPACK_DEV_SERVER_URL) { // Load the url of the dev server if in development mode await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL) if (!process.env.IS_TEST) win.webContents.openDevTools() await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL); if (!process.env.IS_TEST) win.webContents.openDevTools(); } else { createProtocol('app') createProtocol("app"); // Load the index.html when not in development win.loadURL('app://./index.html') win.loadURL("app://./index.html"); } if (wait) { ipcMain.on("java-ready", () => { log.info('java-ready!'); log.info("java-ready!"); loadingWin.hide(); loadingWin.close(); win.show(); }); } if (cb && 'function' == typeof cb) { win.once('ready-to-show', () => { if (cb && "function" == typeof cb) { win.once("ready-to-show", () => { cb(win.webContents); }) }); } // 自动检测更新 软件的第一个实例打开后 为了不影响加载速度 在指定时间后做一次自检 @@ -185,21 +343,24 @@ // }, 1000 * 30); // }); win.webContents.session.on('will-download', (e, item) => { win.webContents.session.on("will-download", (e, item) => { //监听下载结束事件 item.on('done', (e, state) => { item.on("done", (e, state) => { //如果窗口还在的话,去掉进度条 // if (!win.isDestroyed()) { // win.setProgressBar(-1); // } //下载被取消或中断了 if (state === 'interrupted') { dialog.showErrorBox('下载失败', `文件 ${item.getFilename()} 因为某些原因被中断下载`); if (state === "interrupted") { dialog.showErrorBox( "下载失败", `文件 ${item.getFilename()} 因为某些原因被中断下载` ); } // 下载成功后打开文件所在文件夹 if (state === 'completed') { if (state === "completed") { setTimeout(() => { shell.showItemInFolder(item.getSavePath()) shell.showItemInFolder(item.getSavePath()); }, 1000); } }); @@ -207,50 +368,67 @@ } // Quit when all windows are closed. app.on('window-all-closed', () => { app.on("window-all-closed", () => { // On macOS it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== 'darwin') { app.quit() if (process.platform !== "darwin") { app.quit(); } }) }); app.on('activate', () => { app.on("activate", () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow() }) if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); // 禁用本地缓存 // app.commandLine.appendSwitch("--disable-http-cache"); app.on('ready', async () => { log.info('app ready event'); app.on("ready", async () => { log.info("app ready event"); let cb = undefined; if (process.argv[1]) { cb = (sender) => { log.info('call selected-file..' + process.argv[1]); sender.send('selected-file', { filePaths: [process.argv[1]] }, 'MenuList'); } log.info("call selected-file.." + process.argv[1]); sender.send( "selected-file", { filePaths: [process.argv[1]] }, "MenuList" ); }; } if (isDevelopment) { createWindow(); } else { showLoading(createWindow, cb); } }) }); ipcMain.on('open-file-dialog', (event, data) => { log.info('open file dialog') dialog.showOpenDialog({ filters: [{ name: 'all', extensions: ['fbx', 'fbxc', 'mcp', 'mch', 'bres', 'alm'] }, { name: 'fbx', extensions: ['fbx', 'fbxc'] }, { name: 'fbs', extensions: ["mcp", "mch"] }, { name: 'res', extensions: ["bres"] }, { name: 'alm', extensions: ["alm"] }], properties: ['openFile'] }).then((files) => { // console.log(files, '0000000') if (files) { event.sender.send('selected-file', files, data); } }) ipcMain.on("open-file-dialog", (event, data) => { log.info("open file dialog"); dialog .showOpenDialog({ filters: [ { name: "all", extensions: ["fbx", "fbxc", "mcp", "mch", "bres", "alm", "bcp", "chr"], }, { name: "fbx", extensions: ["fbx", "fbxc"] }, { name: "fbs", extensions: ["mcp", "mch"] }, { name: "res", extensions: ["bres"] }, { name: "alm", extensions: ["alm"] }, { name: "bcp", extensions: ["bcp"] }, { name: "chr", extensions: ["chr"] }, ], properties: ["openFile"], }) .then((files) => { // console.log(files, '0000000') if (files) { event.sender.send("selected-file", files, data); } }); }); // app.on('will-quit', () => { @@ -262,15 +440,15 @@ // }) // Exit cleanly on request from parent process in development mode. if (isDevelopment) { if (process.platform === 'win32') { process.on('message', (data) => { if (data === 'graceful-exit') { app.quit() if (process.platform === "win32") { process.on("message", (data) => { if (data === "graceful-exit") { app.quit(); } }) }); } else { process.on('SIGTERM', () => { app.quit() }) process.on("SIGTERM", () => { app.quit(); }); } } src/components/battInfo.vue
New file @@ -0,0 +1,94 @@ <template> <div class="container"> <div class="row"> <div class="label">标称容量</div> <div class="value">{{ info.STD_CAP }}Ah</div> </div> <div class="row"> <div class="label">标称内阻</div> <div class="value">{{ info.STD_RES }}mΩ</div> </div> <div class="row"> <div class="label">电池组数</div> <div class="value">{{ info.BattGroupCount }}</div> </div> <div class="row"> <div class="label">每组单体数</div> <div class="value">{{ info.EachGroupBattCount }}</div> </div> <div class="row"> <div class="label">单体标称电压</div> <div class="value">{{ info.MonomerVol }}V</div> </div> <div class="row"> <div class="label">组端标称电压</div> <div class="value">{{ info.GroupVol }}V</div> </div> <div class="row"> <div class="label">浮充电压</div> <div class="value">{{ info.FloatChargeVol }}V</div> </div> <div class="row"> <div class="label">浮充电流阀值</div> <div class="value">{{ info.FloatChargeCurr }}A</div> </div> <div class="row"> <div class="label">在线电压低阀值</div> <div class="value">{{ info.OnlineVolLow }}A</div> </div> <!-- <div class="row"> <div class="label">均充电压</div> <div class="value">{{ info.JunChargeVol }}V</div> </div> --> </div> </template> <script> export default { name: '', props: { info: { type: Object, required: true } }, data () { return { } }, components: { }, methods: { }, mounted () { } } </script> <style scoped lang="less"> .row { margin-top: 6px; display: flex; align-items: center; font-size: 16px; color: #333; .label { width: 8em; text-align: right; &::after { content: ':', } } .value { margin-left: 0.6em; font-weight: bold; color: #090; } } </style> src/components/chargeParams.vue
New file @@ -0,0 +1,94 @@ <template> <div class="container"> <div class="row"> <div class="label">小时率</div> <div class="value">{{ info.HourRate }}</div> </div> <div class="row"> <div class="label">充电电流</div> <div class="value">{{ info.ChargeCurr }}A</div> </div> <div class="row"> <div class="label">测试容量</div> <div class="value">{{ info.ChargeCap }}Ah</div> </div> <div class="row"> <div class="label">测试时长</div> <div class="value">{{ info.ChargeTime }}分钟</div> </div> <div class="row"> <div class="label">组端电压上限</div> <div class="value">{{ info.GroupVol_High }}V</div> </div> <div class="row"> <div class="label">单体电压上限</div> <div class="value">{{ info.MonomerVol_High }}V</div> </div> <div class="row"> <div class="label">单体电压上限数量</div> <div class="value">{{ info.MonomerHighCount }}</div> </div> <div class="row"> <div class="label">组号</div> <div class="value">{{ info.BattGroupNum ? info.BattGroupNum : '全组一起测试' }}</div> </div> <div class="row"> <div class="label">静置时间</div> <div class="value">{{ info.StaticTime }}分钟</div> </div> <div class="row"> <div class="label">充电测试次数</div> <div class="value">{{ info.ChargeTestCount }}</div> </div> </div> </template> <script> export default { name: '', props: { info: { type: Object, required: true } }, data () { return { } }, components: { }, methods: { }, mounted () { } } </script> <style scoped lang="less"> .row { margin-top: 6px; display: flex; align-items: center; font-size: 16px; color: #333; .label { width: 9em; text-align: right; &::after { content: ':', } } .value { margin-left: 0.6em; font-weight: bold; color: #090; } } </style> src/components/myCharts/BaseChart.vue
@@ -5,7 +5,7 @@ @dblclick="fullScreen" > <div class="e-chart-container"> <div class="e-chart" :id="id" ref="chart"></div> <div class="e-chart" ref="chart"></div> </div> <div class="export-chart-wrapper"> <div class="export-chart" ref="exportChart"></div> @@ -25,10 +25,10 @@ chart: "", exportChart: "", props: { id: { type: String, required: true, }, // id: { // type: String, // required: true, // }, }, data() { return { @@ -132,8 +132,9 @@ }, mounted() { this.$options.chart = ECharts.init(this.$refs.chart, "transparent"); // 将图表添加到图表管理 this.$G.chartManage.set(this.id, this.$options.chart); this.$G.chartManage.set(this.$options.chart.id, this.$options.chart); this.$options.exportChart = ECharts.init( this.$refs.exportChart, "transparent" src/components/myCharts/NormalLines.vue
@@ -9,10 +9,10 @@ unit: { type: String, default: "", } }, }, data() { return {} return {}; }, methods: { setData(data) { @@ -20,45 +20,51 @@ this.setOption(option); }, getOption(data) { let xData = data && data.xData?data.xData: []; let series = data && data.series?data.series:[{ type: "line", data: [] }]; let unit = (data ? data.unit : '') || this.unit; let xData = data && data.xData ? data.xData : []; let series = data && data.series ? data.series : [ { type: "line", data: [], }, ]; let unit = (data ? data.unit : "") || this.unit; return { animation: false, tooltip:{ trigger: 'axis', tooltip: { // confine: true, trigger: "axis", appendToBody: true, }, grid: { top: "28px", left: '1%', right: '32px', bottom: '8px', containLabel: true left: "1%", right: "32px", bottom: "8px", containLabel: true, }, xAxis: { type: 'category', type: "category", boundaryGap: 0, axisLine: { onZero: false onZero: false, }, data: xData data: xData, }, yAxis: { type: 'value', name: unit?'Y('+unit+')':'Y', max: series[0].data.length == 0?1:getYMax, min: series[0].data.length == 0?0:getYMin, type: "value", name: unit ? "Y(" + unit + ")" : "Y", max: series[0].data.length == 0 ? 1 : getYMax, min: series[0].data.length == 0 ? 0 : getYMin, }, series: series, } } }; }, }, mounted() { this.setData(); } } </script> }, }; </script> src/components/testInfo.vue
New file @@ -0,0 +1,68 @@ <template> <div class="container"> <div class="row"> <div class="label">测试开始时间</div> <div class="value">{{ info.StartDT.dateTime }}</div> </div> <div class="row"> <div class="label">测试结束时间</div> <div class="value">{{ info.StopDT.dateTime }}</div> </div> <div class="row"> <div class="label">测试时长</div> <div class="value">{{ testTimeLong }}</div> </div> </div> </template> <script> export default { name: "", props: { info: { type: Object, required: true, }, }, data() { return {}; }, computed: { testTimeLong() { let testtime = this.info.Test_Time; let hour = testtime.hour > 9 ? testtime.hour : "0" + testtime.hour; let minute = testtime.minute > 9 ? testtime.minute : "0" + testtime.minute; let second = testtime.second > 9 ? testtime.second : "0" + testtime.second; return "" + hour + ":" + minute + ":" + second; }, }, components: {}, methods: {}, mounted() {}, }; </script> <style scoped lang="less"> .row { margin-top: 6px; display: flex; align-items: center; font-size: 16px; color: #333; .label { width: 8em; text-align: right; &::after { content: ":"; } } .value { margin-left: 0.6em; font-weight: bold; color: #090; } } </style> src/components/testParams.vue
New file @@ -0,0 +1,106 @@ <template> <div class="container"> <div class="row"> <div class="label">小时率</div> <div class="value">{{ info.HourRate }}</div> </div> <div class="row"> <div class="label">放电电流</div> <div class="value">{{ info.DisCurr }}A</div> </div> <div class="row"> <div class="label">测试容量</div> <div class="value">{{ info.DisCap }}Ah</div> </div> <div class="row"> <div class="label">测试时长</div> <div class="value">{{ info.DisTime }}分钟</div> </div> <div class="row"> <div class="label">组端下限</div> <div class="value">{{ info.GroupVol_LOW }}V</div> </div> <div class="row"> <div class="label">单体电压下限</div> <div class="value">{{ info.MonomerVol_LOW }}V</div> </div> <div class="row"> <div class="label">单体下限数量</div> <div class="value">{{ info.MonomerLowCount }}</div> </div> <div class="row"> <div class="label">组号</div> <div class="value">{{ info.BattGroupNum ? info.BattGroupNum : '全组一起测试' }}</div> </div> <div class="row"> <div class="label">静置时间</div> <div class="value">{{ info.StaticTime }}分钟</div> </div> <div class="row"> <div class="label">放电测试试次数</div> <div class="value">{{ info.DisTestCount }}</div> </div> <div class="row"> <div class="label">升压上限</div> <div class="value">{{ info.DCVolHighLimit }}V</div> </div> <div class="row"> <div class="label">充电电流</div> <div class="value">{{ info.ChargeCurrSet }}A</div> </div> <div class="row"> <div class="label">单体温度上限</div> <div class="value">{{ info.MonomerTmp_High }}℃</div> </div> </div> </template> <script> export default { name: '', props: { info: { type: Object, required: true } }, data () { return { } }, components: { }, methods: { }, mounted () { } } </script> <style scoped lang="less"> .row { margin-top: 6px; display: flex; align-items: center; font-size: 16px; color: #333; .label { width: 8em; text-align: right; &::after { content: ':', } } .value { margin-left: 0.6em; font-weight: bold; color: #090; } } </style> src/router/routes.js
@@ -28,10 +28,22 @@ meta: {}, component: () => import('@/views/result-res') }, // { // path: '/result', // name: 'result', // meta: {}, // component: () => import('@/views/result') // } { path: '/result-alm', name: 'result-alm', meta: {}, component: () => import('@/views/result-alm') }, { path: '/result-bcp', name: 'result-bcp', meta: {}, component: () => import('@/views/result-bcp') }, { path: '/result-chr', name: 'result-chr', meta: {}, component: () => import('@/views/result-chr') } ]; src/views/result-alm.vue
New file @@ -0,0 +1,230 @@ <template> <flex-layout> <div class="content_header" slot="header"> <three-btn @click="goSelect">选择文件</three-btn> <three-btn @click="exportExcel">导出</three-btn> <div class="summary"> <div class="summary-item"> 测试类型:<span>内阻测试</span> </div> </div> </div> <div class="main"> 开发中。。。 </div> <!-- 导出用的图表 可变的那组图 --> <div class="hideContain"> <normal-lines id="hideChart" ref="hideChart"></normal-lines> </div> </flex-layout> </template> <script> import NormalLines from "@/components/myCharts/NormalLines"; import FlexBox from "@/components/FlexBox"; import ThreeBtn from "@/components/ThreeBtn"; import axios from "@/assets/js/axios"; export default { name: "", components: { NormalLines, FlexBox, ThreeBtn, }, data() { let info = this.$route.query.data; let { resDatas } = info; let lastRecord = resDatas[resDatas.length - 1]; return { info, testCapOption: null, optsTitle: '测试容量折线图' }; }, methods: { formatData() { let { resDatas } = this.info; // console.log(resDatas, resDatasStart, resDatasStop, "=====data?"); let monCount = resDatas[0] ? resDatas[0].battSum : 0; let times = [], vol = [], res = [], temp = []; for (let i = 0, j = monCount; i < j; i++) { vol[i] = { name: "#" + (i + 1) + "电压", type: "line", symbolSize: 0, sampling: "average", data: [], }; res[i] = { name: "#" + (i + 1) + "内阻", type: "line", symbolSize: 0, sampling: "average", data: [], }; temp[i] = { name: "#" + (i + 1) + "温度", type: "line", symbolSize: 0, sampling: "average", data: [], }; } for (let i = 0, j = resDatas.length; i < j; i++) { let item = resDatas[i]; let testtime = item.data_Time; // 时间 times.push(testtime); for (let m = 0, n = monCount; m < n; m++) { vol[m].data.push(item.monomerVol[m]); res[m].data.push(item.monomerRes[m]); temp[m].data.push(item.monomerTemp[m]); } } let volOption = { xData: times, series: vol, }; let resOption = { xData: times, series: res, }; let tempOption = { xData: times, series: temp, }; this.$refs.vol.setData(volOption); this.$refs.res.setData(resOption); this.$refs.temp.setData(tempOption); // 建立联动 this.$G.chartManage.connect(["vol", "res", "temp"]); }, // changeChartType(v) { // let label = this.chartTypes.filter((val) => { // return val.value == v; // })[0].label; // this.optsTitle = label + "折线图"; // this.$refs.other.setData(this[v + "Option"]); // }, goSelect() { this.$router.push({ path: "/selectFile", query: { reselect: 1 } }); }, // 导出报表 exportExcel() { let params = { filePath: this.info.filePath, vol_echart: this.$refs.vol.getDataURL(), res_echart: this.$refs.res.getDataURL(), tmp_echart: this.$refs.temp.getDataURL(), }; // if (this.capTest) { // params.cap_echart = o_pic.testCap; // } let baseURL = axios.defaults.baseURL; baseURL = baseURL ? baseURL : ""; var actionUrl = baseURL + "export"; this.construtFormSubmit(actionUrl, params); }, construtFormSubmit(actionUrl, parms) { var form = document.createElement("form"); form.id = "specialGraph"; form.style.display = "none"; form.action = actionUrl; form.enctype = "multipart/form-data"; form.method = "post"; document.body.appendChild(form); for (var key in parms) { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = parms[key]; form.appendChild(input); } form.submit(); document.body.removeChild(form); }, }, mounted() { console.log(this.info, this); if (!this.info || !this.info.resDatas) { this.$router.push("/selectFile"); } else { this.formatData(); } }, }; </script> <style scoped> .main { height: 100%; display: flex; flex-direction: column; justify-content: space-between; } .flex-row { flex: 1; position: relative; } .item-inner, .flex-row-inner { position: absolute; left: 0; top: 0; right: 0; bottom: 0; } .contain-flex-column { display: flex; flex-direction: row; } .item { background: #0d43a7; flex: 1; position: relative; } .content_header { padding: 8px 8px 12px; display: flex; color: #fff; align-items: center; } .summary { display: flex; flex-wrap: wrap; } .summary-item { margin-left: 1em; } .summary-item span { color: #ff0; } >>> .three-btn { flex-shrink: 0; } >>> .three-btn + .three-btn { margin-left: 8px; } .item + .item { margin-left: 8px; } .flex-row + .flex-row { margin-top: 8px; } .hideContain { position: absolute; width: 0; height: 0; display: none; } </style> src/views/result-bcp.vue
New file @@ -0,0 +1,415 @@ <template> <flex-layout> <div class="content_header" slot="header"> <three-btn @click="goSelect">选择文件</three-btn> <three-btn @click="exportExcel">导出</three-btn> <three-btn @click="showBattInfo">电池组信息</three-btn> <three-btn @click="showTestParam">测试参数</three-btn> <three-btn @click="showTestInfo">测试信息</three-btn> </div> <div class="main"> <div class="flex-row"> <div class="flex-row-inner contain-flex-column"> <div class="item"> <flex-box class="item-inner" size="mini" title="组端/在线电压折线图" > <normal-lines id="groupVol" ref="groupVol" unit="V" ></normal-lines> </flex-box> </div> <div class="item"> <flex-box class="item-inner" size="mini" title="电池电流折线图"> <normal-lines id="groupCurr" ref="groupCurr" unit="A" ></normal-lines> </flex-box> </div> </div> </div> <div class="flex-row"> <div class="flex-row-inner contain-flex-column"> <div class="item"> <flex-box class="item-inner" size="mini" title="单体电压折线图"> <normal-lines ref="vol" unit="V"></normal-lines> </flex-box> </div> <div class="item"> <flex-box class="item-inner" size="mini" :title="optsTitle"> <div slot="tools" class="chart-tools-wrapper"> <el-select v-model="chartType" size="mini" @change="changeChartType" > <el-option v-for="item in chartTypes" :key="item.value" :label="item.label" :value="item.value" ></el-option> </el-select> </div> <normal-lines id="other" ref="other"></normal-lines> </flex-box> </div> </div> </div> </div> <!-- 导出用的图表 可变的那组图 --> <div class="hideContain"> <normal-lines id="hideChart" ref="hideChart"></normal-lines> </div> <el-dialog title="电池组信息" :visible.sync="battInfoVisible" :close-on-click-modal="false" top="80px" width="400px" class="dialog-center dialog-result" :modal-append-to-body="false" > <batt-info v-if="battInfoVisible" :info="battParam"></batt-info> </el-dialog> <el-dialog title="测试参数" :visible.sync="testParamVisible" :close-on-click-modal="false" top="80px" width="400px" class="dialog-center dialog-result" :modal-append-to-body="false" > <test-params v-if="testParamVisible" :info="testParam"></test-params> </el-dialog> <el-dialog title="测试信息" :visible.sync="testInfoVisible" :close-on-click-modal="false" top="80px" width="400px" class="dialog-center dialog-result" :modal-append-to-body="false" > <test-info v-if="testInfoVisible" :info="capState"></test-info> </el-dialog> </flex-layout> </template> <script> import FlexBox from "@/components/FlexBox"; import ThreeBtn from "@/components/ThreeBtn"; import NormalLines from "@/components/myCharts/NormalLines"; import ECharts from "echarts/lib/echarts"; import battInfo from "@/components/battInfo"; import TestParams from "@/components/testParams.vue"; import testInfo from "@/components/testInfo"; import axios from "@/assets/js/axios"; export default { name: "", components: { FlexBox, ThreeBtn, NormalLines, battInfo, TestParams, testInfo, }, data() { let info = this.$route.query.data; let { battParam, dischargeParam: testParam, capState } = info; return { info, battInfoVisible: false, testParamVisible: false, testInfoVisible: false, testCapOption: null, tempOption: null, battParam, testParam, capState, optsTitle: "测试容量折线图", chartType: "testCap", chartTypes: [ { label: "测试容量", value: "testCap", }, { label: "电池温度", value: "temp", }, ], }; }, methods: { showBattInfo() { this.battInfoVisible = true; }, showTestParam() { this.testParamVisible = true; }, showTestInfo() { this.testInfoVisible = true; }, formatData() { let { battParam, fbsDatas } = this.info; let battGroupCount = battParam.BattGroupCount; let battMonCount = battParam.EachGroupBattCount; let times = [], groupVol = [], onlineVol = [], groupCurr = [], vol = [], cap = [], temp = []; let groupVolSeries = [ { name: "在线电压", type: "line", symbolSize: 0, sampling: "average", data: onlineVol, }, { name: "组端电压", type: "line", symbolSize: 0, sampling: "average", data: groupVol, }, ]; let currSeries = []; let tempSeries = []; let capSeries = []; // let volSeries = []; currSeries.push({ name: `电流`, type: "line", symbolSize: 0, sampling: "average", data: groupCurr, }); tempSeries.push({ name: `温度`, type: "line", symbolSize: 0, sampling: "average", data: temp, }); capSeries.push({ name: `测试容量`, type: "line", symbolSize: 0, sampling: "average", data: cap, }); // volSeries.push({ // name: `单体电压`, // type: "line", // symbolSize: 0, // sampling: "average", // data: vol, // }); for (let i = 0, j = battMonCount; i < j; i++) { vol[i] = { name: "#" + (i + 1) + "电压", type: "line", symbolSize: 0, sampling: "average", data: [], }; } for (let i = 0, j = fbsDatas.length; i < j; i++) { let item = fbsDatas[i]; let testtime = item.testTime; let hour = testtime.hour > 9 ? testtime.hour : "0" + testtime.hour; let minute = testtime.minute > 9 ? testtime.minute : "0" + testtime.minute; let second = testtime.second > 9 ? testtime.second : "0" + testtime.second; let time = "" + hour + ":" + minute + ":" + second; // 时间 times.push(time); for (let m = 0, n = battMonCount; m < n; m++) { vol[m].data.push(item.monVol[m]); } groupVol.push(item.groupVol); onlineVol.push(item.onlineVol); groupCurr.push(item.battCurr); cap.push(item.battCap); temp.push(item.battTemp); } let groupVolOption = { xData: times, series: groupVolSeries, }; let currOption = { xData: times, series: currSeries, }; let volOption = { xData: times, series: vol, }; let tempOption = { unit: "℃", xData: times, series: tempSeries, }; let capOption = { xData: times, series: capSeries, }; this.testCapOption = capOption; this.tempOption = tempOption; // debugger; this.$refs.groupVol.setData(groupVolOption); this.$refs.groupCurr.setData(currOption); this.$refs.vol.setData(volOption); this.$refs.other.setData(capOption); // this.$refs.temp.setData(tempOption); // 建立联动 this.$G.chartManage.connect( ["groupVol", "groupCurr", "vol", "other"].map( (v) => this.$refs[v].$options.chart.id ) ); }, changeChartType(v) { let label = this.chartTypes.filter((val) => { return val.value == v; })[0].label; this.optsTitle = label + "折线图"; this.$refs.other.setData(this[v + "Option"]); }, goSelect() { this.$router.push({ path: "/selectFile", query: { reselect: 1 } }); }, // 导出报表 exportExcel() { // 容量折线图 let arr = ["temp"]; let o_pic = {}; arr.forEach((v) => { let option = this[v + "Option"]; this.$refs.hideChart.setData(option); o_pic[v] = this.$refs.hideChart.getDataURL(); }); let params = { filePath: this.info.filePath, groupVol_echart: this.$refs.groupVol.getDataURL(), curr_echart: this.$refs.groupCurr.getDataURL(), vol_echart: this.$refs.vol.getDataURL(), cap_echart: this.$refs.other.getDataURL(), tmp_echart: o_pic.temp, }; let baseURL = axios.defaults.baseURL; baseURL = baseURL ? baseURL : ""; var actionUrl = baseURL + "export"; this.construtFormSubmit(actionUrl, params); }, construtFormSubmit(actionUrl, params) { var form = document.createElement("form"); form.id = "specialGraph"; form.style.display = "none"; form.action = actionUrl; form.enctype = "multipart/form-data"; form.method = "post"; document.body.appendChild(form); for (var key in params) { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = params[key]; form.appendChild(input); } form.submit(); document.body.removeChild(form); }, }, mounted() { console.log(this.info, this); if (!this.info || !this.info.fbsDatas) { this.$router.push("/selectFile"); } else { this.formatData(); } }, }; </script> <style scoped lang="less"> /deep/ .three-btn { flex-shrink: 0; } /deep/ .three-btn + .three-btn { margin-left: 8px; } .main { height: 100%; display: flex; flex-direction: column; justify-content: space-between; } .content_header { padding: 8px 8px 12px; display: flex; color: #fff; align-items: center; } .flex-row { flex: 1; position: relative; } .item-inner, .flex-row-inner { position: absolute; left: 0; top: 0; right: 0; bottom: 0; } .contain-flex-column { display: flex; flex-direction: row; } .item { background: #0d43a7; flex: 1; position: relative; } .item + .item { margin-left: 8px; } .flex-row + .flex-row { margin-top: 8px; } </style> src/views/result-chr.vue
New file @@ -0,0 +1,413 @@ <template> <flex-layout> <div class="content_header" slot="header"> <three-btn @click="goSelect">选择文件</three-btn> <three-btn @click="exportExcel">导出</three-btn> <three-btn @click="showBattInfo">电池组信息</three-btn> <three-btn @click="showTestParam">测试参数</three-btn> <three-btn @click="showTestInfo">测试信息</three-btn> </div> <div class="main"> <div class="flex-row"> <div class="flex-row-inner contain-flex-column"> <div class="item"> <flex-box class="item-inner" size="mini" title="组端/在线电压折线图" > <normal-lines id="groupVol" ref="groupVol" unit="V" ></normal-lines> </flex-box> </div> <div class="item"> <flex-box class="item-inner" size="mini" title="电池电流折线图"> <normal-lines id="groupCurr" ref="groupCurr" unit="A" ></normal-lines> </flex-box> </div> </div> </div> <div class="flex-row"> <div class="flex-row-inner contain-flex-column"> <div class="item"> <flex-box class="item-inner" size="mini" title="单体电压折线图"> <normal-lines ref="vol" unit="V"></normal-lines> </flex-box> </div> <div class="item"> <flex-box class="item-inner" size="mini" :title="optsTitle"> <div slot="tools" class="chart-tools-wrapper"> <el-select v-model="chartType" size="mini" @change="changeChartType" > <el-option v-for="item in chartTypes" :key="item.value" :label="item.label" :value="item.value" ></el-option> </el-select> </div> <normal-lines id="other" ref="other"></normal-lines> </flex-box> </div> </div> </div> </div> <!-- 导出用的图表 可变的那组图 --> <div class="hideContain"> <normal-lines id="hideChart" ref="hideChart"></normal-lines> </div> <el-dialog title="电池组信息" :visible.sync="battInfoVisible" :close-on-click-modal="false" top="80px" width="400px" class="dialog-center dialog-result" :modal-append-to-body="false" > <batt-info v-if="battInfoVisible" :info="battParam"></batt-info> </el-dialog> <el-dialog title="测试参数" :visible.sync="testParamVisible" :close-on-click-modal="false" top="80px" width="400px" class="dialog-center dialog-result" :modal-append-to-body="false" > <test-params v-if="testParamVisible" :info="chargeParam"></test-params> </el-dialog> <el-dialog title="测试信息" :visible.sync="testInfoVisible" :close-on-click-modal="false" top="80px" width="400px" class="dialog-center dialog-result" :modal-append-to-body="false" > <test-info v-if="testInfoVisible" :info="chargeState"></test-info> </el-dialog> </flex-layout> </template> <script> import FlexBox from "@/components/FlexBox"; import ThreeBtn from "@/components/ThreeBtn"; import NormalLines from "@/components/myCharts/NormalLines"; import ECharts from "echarts/lib/echarts"; import battInfo from "@/components/battInfo"; import TestParams from "@/components/chargeParams.vue"; import testInfo from "@/components/testInfo"; import axios from "@/assets/js/axios"; export default { name: "", components: { FlexBox, ThreeBtn, NormalLines, battInfo, TestParams, testInfo, }, data() { let info = this.$route.query.data; let { battParam, chargeParam, charState: chargeState } = info; return { info, battInfoVisible: false, testParamVisible: false, testInfoVisible: false, battParam, chargeParam, chargeState, optsTitle: "测试容量折线图", chartType: "testCap", chartTypes: [ { label: "测试容量", value: "testCap", }, { label: "电池温度", value: "temp", }, ], }; }, methods: { showBattInfo() { this.battInfoVisible = true; }, showTestParam() { this.testParamVisible = true; }, showTestInfo() { this.testInfoVisible = true; }, formatData() { let { battParam, fbsDatas } = this.info; let battGroupCount = battParam.BattGroupCount; let battMonCount = battParam.EachGroupBattCount; let times = [], groupVol = [], onlineVol = [], groupCurr = [], vol = [], cap = [], temp = []; let groupVolSeries = [ { name: "在线电压", type: "line", symbolSize: 0, sampling: "average", data: onlineVol, }, { name: "组端电压", type: "line", symbolSize: 0, sampling: "average", data: groupVol, }, ]; let currSeries = []; let tempSeries = []; let capSeries = []; // let volSeries = []; currSeries.push({ name: `电流`, type: "line", symbolSize: 0, sampling: "average", data: groupCurr, }); tempSeries.push({ name: `温度`, type: "line", symbolSize: 0, sampling: "average", data: temp, }); capSeries.push({ name: `测试容量`, type: "line", symbolSize: 0, sampling: "average", data: cap, }); // volSeries.push({ // name: `单体电压`, // type: "line", // symbolSize: 0, // sampling: "average", // data: vol, // }); for (let i = 0, j = battMonCount; i < j; i++) { vol[i] = { name: "#" + (i + 1) + "电压", type: "line", symbolSize: 0, sampling: "average", data: [], }; } for (let i = 0, j = fbsDatas.length; i < j; i++) { let item = fbsDatas[i]; let testtime = item.testTime; let hour = testtime.hour > 9 ? testtime.hour : "0" + testtime.hour; let minute = testtime.minute > 9 ? testtime.minute : "0" + testtime.minute; let second = testtime.second > 9 ? testtime.second : "0" + testtime.second; let time = "" + hour + ":" + minute + ":" + second; // 时间 times.push(time); for (let m = 0, n = battMonCount; m < n; m++) { vol[m].data.push(item.monVol[m]); } groupVol.push(item.groupVol); onlineVol.push(item.onlineVol); groupCurr.push(item.battCurr); cap.push(item.battCap); temp.push(item.battTemp); } let groupVolOption = { xData: times, series: groupVolSeries, }; let currOption = { xData: times, series: currSeries, }; let volOption = { xData: times, series: vol, }; let tempOption = { unit: "℃", xData: times, series: tempSeries, }; let capOption = { xData: times, series: capSeries, }; this.testCapOption = capOption; this.tempOption = tempOption; // debugger; this.$refs.groupVol.setData(groupVolOption); this.$refs.groupCurr.setData(currOption); this.$refs.vol.setData(volOption); this.$refs.other.setData(capOption); // this.$refs.temp.setData(tempOption); // 建立联动 this.$G.chartManage.connect( ["groupVol", "groupCurr", "vol", "other"].map( (v) => this.$refs[v].$options.chart.id ) ); }, changeChartType(v) { let label = this.chartTypes.filter((val) => { return val.value == v; })[0].label; this.optsTitle = label + "折线图"; this.$refs.other.setData(this[v + "Option"]); }, goSelect() { this.$router.push({ path: "/selectFile", query: { reselect: 1 } }); }, // 导出报表 exportExcel() { // 容量折线图 let arr = ["temp"]; let o_pic = {}; arr.forEach((v) => { let option = this[v + "Option"]; this.$refs.hideChart.setData(option); o_pic[v] = this.$refs.hideChart.getDataURL(); }); let params = { filePath: this.info.filePath, groupVol_echart: this.$refs.groupVol.getDataURL(), curr_echart: this.$refs.groupCurr.getDataURL(), vol_echart: this.$refs.vol.getDataURL(), cap_echart: this.$refs.other.getDataURL(), tmp_echart: o_pic.temp, }; let baseURL = axios.defaults.baseURL; baseURL = baseURL ? baseURL : ""; var actionUrl = baseURL + "export"; this.construtFormSubmit(actionUrl, params); }, construtFormSubmit(actionUrl, params) { var form = document.createElement("form"); form.id = "specialGraph"; form.style.display = "none"; form.action = actionUrl; form.enctype = "multipart/form-data"; form.method = "post"; document.body.appendChild(form); for (var key in params) { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = params[key]; form.appendChild(input); } form.submit(); document.body.removeChild(form); }, }, mounted() { console.log(this.info, this); if (!this.info || !this.info.fbsDatas) { this.$router.push("/selectFile"); } else { this.formatData(); } }, }; </script> <style scoped lang="less"> /deep/ .three-btn { flex-shrink: 0; } /deep/ .three-btn + .three-btn { margin-left: 8px; } .main { height: 100%; display: flex; flex-direction: column; justify-content: space-between; } .content_header { padding: 8px 8px 12px; display: flex; color: #fff; align-items: center; } .flex-row { flex: 1; position: relative; } .item-inner, .flex-row-inner { position: absolute; left: 0; top: 0; right: 0; bottom: 0; } .contain-flex-column { display: flex; flex-direction: row; } .item { background: #0d43a7; flex: 1; position: relative; } .item + .item { margin-left: 8px; } .flex-row + .flex-row { margin-top: 8px; } </style> src/views/result.vue
@@ -297,7 +297,11 @@ this.$refs.vol.setData(volOption); this.$refs.other.setData(this.capTest ? testCapOption : tempEnviOption); // 建立联动 this.$G.chartManage.connect(["groupVol", "groupCurr", "vol", "other"]); this.$G.chartManage.connect( ["groupVol", "groupCurr", "vol", "other"].map( (v) => this.$refs[v].$options.chart.id ) ); }, changeChartType(v) { let label = this.chartTypes.filter((val) => { @@ -430,4 +434,4 @@ height: 0; display: none; } </style> </style> src/views/selectFile.vue
@@ -5,7 +5,9 @@ 将文件拖到此处,或点击此处选择文件 </div> </div> <div class="upload__tip" slot="tip">只能解析.fbx .fbxc .mcp .mch .bres .alm文件</div> <div class="upload__tip" slot="tip"> 只能解析.fbx .fbxc .mcp .mch .bres .alm .bcp .chr 文件 </div> </div> </template> @@ -38,7 +40,7 @@ let arr = url.split("."); let type = arr.length > 1 ? arr[arr.length - 1].toLowerCase() : ""; // 支持的类型 let allowList = ["fbx", "fbxc", "mcp", "mch", "bres", "alm"]; let allowList = ["fbx", "fbxc", "mcp", "mch", "bres", "alm", "bcp", "chr"]; if (!allowList.some((v) => v == type)) { this.$layer.msg("文件类型错误"); @@ -59,6 +61,14 @@ break; case "alm": suffixes = "alm"; break; // 放电 case "bcp": suffixes = "bcp"; break; // 充电 case "chr": suffixes = "chr"; break; } let loading = this.$layer.loading(1); @@ -107,16 +117,20 @@ } }, initEvents() { console.log('initEvents') window.api.receive("selected-file", (path, data) => { console.log(path, data, "selected-file"); if (data && data == "selectFile") { let url = path.filePaths[0]; if (url) { this.loadFile(path.filePaths[0]); console.log("initEvents"); window.api.receive( "selected-file", (path, data) => { console.log(path, data, "selected-file"); if (data && data == "selectFile") { let url = path.filePaths[0]; if (url) { this.loadFile(path.filePaths[0]); } } } }, true); }, true ); }, selectFile() { // console.log("openfile"); @@ -173,4 +187,4 @@ // >>> .el-upload__tip { // color: #fff; // } </style> </style> version.nsh
New file @@ -0,0 +1 @@ !define VERSION "0.1.3" vue.config.js
@@ -1,48 +1,46 @@ const path = require('path'); const path = require("path"); const json = require('./package.json'); const { version } = json; function resolve(dir) { return path.join(__dirname, dir); } module.exports = { publicPath: './', publicPath: "./", devServer: { // can be overwritten by process.env.HOST host: '0.0.0.0', port: 8081 host: "0.0.0.0", port: 8081, }, pluginOptions:{ electronBuilder:{ preload:'src/preload.js', pluginOptions: { electronBuilder: { preload: "src/preload.js", builderOptions: { extraResources: [ { from: "./public/runtime", to: "./runtime" to: "./runtime", }, { from: "./public/app_x64.exe", to: "./app_x64.exe" } to: "./app_x64.exe", }, ], files: [ '**/*', '!**/runtime', '!**/app_x64.exe' ], } } files: ["**/*", "!**/runtime", "!**/app_x64.exe"], }, }, }, chainWebpack: config => { chainWebpack: (config) => { config.resolve.alias .set('@', resolve('src')) .set('src', resolve('src')) .set('common', resolve('src/common')) .set('components', resolve('src/components')); .set("@", resolve("src")) .set("src", resolve("src")) .set("common", resolve("src/common")) .set("components", resolve("src/components")); config.plugin('html').tap((args) => { args[0].title = 'fbx文件解析'; config.plugin("html").tap((args) => { args[0].title = `fbx文件解析 V${version}`; return args; }) } }; }); }, };