Electron 打包vue 桌面应用 :eosforce github代码 编译遇到很多问题
eosforce/wallet-desktop: eos force 桌面钱包
https://github.com/eosforce/wallet-desktop
要会的知识
永久使用 淘宝镜像代理 npm config set registry https://registry.npm.taobao.org 验证是否设置成功 npm info express 恢复使用 npm config set registry https://registry.npmjs.org 安装yarn插件, npm install -g yarn npm install -g npm 不指定版本升级 npm
npm install --python=python2.7 //想通过这样安装python结果失败 npm config set python python2.7 配置环境变量,不起作用 npm install --global --production windows-build-tools 通过这样安装python2.7成功了,一开始也是不成功的。 需要cmd管理员权限安装。 python -v 查看版本
按照项目说明运行三个命令
# install dependencies yarn # serve with hot reload at localhost:9081 yarn dev # build electron application for production yarn build
一、运行 yarn 安装依赖,发现很多小问题, ,也运行了一下 yarn dev 通过不了
PS F:\Projects\XuNiProj\eosforce\wallet-desktop-master2> yarn yarn install v1.22.19 warning package.json: No license field warning eosforce@1.1.261: No license field [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... [-/5] ⠐ waiting... [2/5] ⠐ electron [3/5] ⠈ node-sass [5/5] ⠈ pre-commit error F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\node-sass: Command failed. Exit code: 1 Command: node scripts/build.js Arguments: Directory: F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\node-sass Output: Building: D:\ProgramFiles\nodejs\node.exe F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= gyp info it worked if it ends with ok gyp verb cli [ gyp verb cli 'D:\\ProgramFiles\\nodejs\\node.exe', gyp verb cli 'F:\\Projects\\XuNiProj\\eosforce\\wallet-desktop-master2\\node_modules\\node-gyp\\bin\\node-gyp.js', gyp verb cli 'rebuild', gyp verb cli '--verbose', gyp verb cli '--libsass_ext=', gyp verb cli '--libsass_cflags=', gyp verb cli '--libsass_ldflags=', gyp verb cli '--libsass_library=' gyp verb cli ] gyp info using node-gyp@3.6.2 gyp info using node@16.15.0 | win32 | x64 gyp verb command rebuild [] gyp verb command clean [] gyp verb clean removing "build" directory gyp verb command configure [] gyp verb check python checking for Python executable "python2" in the PATH gyp verb `which` failed Error: not found: python2 gyp verb `which` failed at getNotFoundError (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:13:12) gyp verb `which` failed at F (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:68:19) gyp verb `which` failed at E (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:80:29) gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:89:16 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\index.js:42:5 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\windows.js:36:5 gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:198:21) gyp verb `which` failed python2 Error: not found: python2 gyp verb `which` failed at getNotFoundError (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:13:12) gyp verb `which` failed at F (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:68:19) gyp verb `which` failed at E (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:80:29) gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:89:16 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\index.js:42:5 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\windows.js:36:5 gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:198:21) { gyp verb `which` failed code: 'ENOENT' gyp verb `which` failed } gyp verb check python checking for Python executable "python" in the PATH gyp verb `which` failed Error: not found: python gyp verb `which` failed at getNotFoundError (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:13:12) gyp verb `which` failed at F (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:68:19) gyp verb `which` failed at E (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:80:29) gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:89:16 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\index.js:42:5 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\windows.js:36:5 gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:198:21) gyp verb `which` failed python Error: not found: python gyp verb `which` failed at getNotFoundError (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:13:12) gyp verb `which` failed at F (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:68:19) gyp verb `which` failed at E (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:80:29) gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\which\which.js:89:16 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\index.js:42:5 gyp verb `which` failed at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\isexe\windows.js:36:5 gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:198:21) { gyp verb `which` failed code: 'ENOENT' gyp verb `which` failed } gyp verb could not find "python". checking python launcher gyp verb could not find "python". guessing location gyp verb ensuring that file exists: C:\Python27\python.exe gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. gyp ERR! stack at PythonFinder.failNoPython (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\node-gyp\lib\configure.js:483:19) gyp ERR! stack at PythonFinder.<anonymous> (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\node-gyp\lib\configure.js:508:16) gyp ERR! stack at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\graceful-fs\polyfills.js:284:29 gyp ERR! stack at FSReqCallback.oncomplete (node:fs:198:21) gyp ERR! System Windows_NT 10.0.14393 gyp ERR! command "D:\\ProgramFiles\\nodejs\\node.exe" "F:\\Projects\\XuNiProj\\eosforce\\wallet-desktop-master2\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" gyp ERR! cwd F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\node-sass gyp ERR! node -v v16.15.0
主要两个问题
1、node_modules\node-sass: Command failed 2、gyp verb ensuring that file exists: C:\Python27\python.exe gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. 1、node-sass 有问题, 2、 需要安装python2.7在c盘根目录下,C:\Python27
build时看错误提示 ,一开始以为是插件electron版本不对,曾经npm install electron@^2.0.6 -g 安装过,后来又改回2.0.5了。
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass 设定 node-sass的路径 不知道什么用,反正按网上说,要尔并没有成功,
npm install -g mirror-config-china 也操作过这个,不知道是否有用,
反正就是折腾了很久,后来在安装好python环境后,
二、再继续折腾,看着错误百度一通,
为了解决 node-sass 说什么样式 环境和github上的不一致造成的,也有其他方法,本人试了下面的,
npm install --save node-sass 超级耗时间,没有等完就取消了,后面反正也是乱,
npm uninstall --save node-sass 执行这个直接报错,再执行上面的安装也直接报错。
后来重新弄过了一份代码。
。。。
再 安装 node-sass 居然成功了,
PS F:\Projects\XuNiProj\eosforce\wallet-desktop-master2> npm install node-sass npm WARN npm npm does not support Node.js v16.15.0 npm WARN npm You should probably upgrade to a newer version of node as we npm WARN npm can't make any promises that npm will work with this version. npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11, 12, 13. npm WARN npm You can find the latest version at https://nodejs.org/ npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap. added 21 packages, removed 28 packages, and changed 109 packages in 6m
yarn dev 居然也成功了,看到调试模式,能看到和build不同的版本。(dev 是v2.0.6版本, build是1.1.261版本),此时 yarn build还是不能成功,不能下载 二进制压缩包。
yarn dev 会有 Unable to install `vue-devtools`: 这个错误提示,调试模式下 左边界面右边开发者工具。
三、 yarn build的错误提示:
OKAY take it away `electron-builder` • electron-builder version=19.56.2 • loaded configuration file=package.json ("build" field) • writing effective config file=build\electron-builder.yaml • no native production dependencies • packaging platform=win32 arch=x64 electron=2.0.6 appOutDir=build\win-unpacked Downloading tmp-347504-0-electron-v2.0.6-win32-x64.zip Error: GET https://npm.taobao.org/mirrors/electron/2.0.6/electron-v2.0.6-win32-x64.zip returned 404 Error: Failed to find Electron v2.0.6 for win32-x64 at https://npm.taobao.org/mirrors/electron/2.0.6/electron-v2.0.6-win32-x64.zip at Request.<anonymous> (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\nugget\index.js:169:61) at Request.emit (node:events:527:28) at Request.onRequestResponse (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\request\request.js:1059:10) at ClientRequest.emit (node:events:527:28) at HTTPParser.parserOnIncomingClient [as onIncoming] (node:_http_client:631:27) at HTTPParser.parserOnHeadersComplete (node:_http_common:128:17) at TLSSocket.socketOnData (node:_http_client:494:22) at TLSSocket.emit (node:events:527:28) at addChunk (node:internal/streams/readable:315:12) at readableAddChunk (node:internal/streams/readable:289:9) at TLSSocket.Readable.push (node:internal/streams/readable:228:10) at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23) From previous event: at Packager.packager.electronDownloader (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\src\builder.ts:291:12) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\packager\dirPackager.ts:53:21 at Generator.next (<anonymous>) From previous event: at unpack (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\out\packager\dirPackager.js:55:21) at unpackElectron (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\packager\dirPackager.ts:27:10) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\platformPackager.ts:164:27 at Generator.next (<anonymous>) at processImmediate (node:internal/timers:466:21) From previous event: at WinPackager.doPack (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\out\platformPackager.js:276:11) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\platformPackager.ts:113:16 at Generator.next (<anonymous>) From previous event: at WinPackager.pack (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\out\platformPackager.js:196:11) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\packager.ts:364:24 at Generator.next (<anonymous>) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\fs-extra-p\node_modules\fs-extra\lib\mkdirs\mkdirs.js:56:16 at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\graceful-fs\polyfills.js:287:18 at FSReqCallback.oncomplete (node:fs:199:5) From previous event: at Packager.doBuild (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\out\packager.js:432:11) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\packager.ts:308:52 at Generator.next (<anonymous>) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\graceful-fs\graceful-fs.js:99:16 at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\graceful-fs\graceful-fs.js:43:10 at FSReqCallback.oncomplete (node:fs:188:23) From previous event: at Packager._build (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\out\packager.js:376:11) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\src\packager.ts:270:23 at Generator.next (<anonymous>) From previous event: at Packager.build (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder-lib\out\packager.js:332:11) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\src\builder.ts:310:40 at Generator.next (<anonymous>) From previous event: at _build (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\out\builder.js:61:21) at build (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\src\builder.ts:280:10) at F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\src\cli\cli.ts:48:33 at processImmediate (node:internal/timers:466:21) From previous event: at Object.handler (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\src\cli\cli.ts:48:33) at Object.runCommand (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\node_modules\yargs\lib\command.js:235:44) at Object.parseArgs [as _parseArgs] (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\node_modules\yargs\yargs.js:1042:24) at Object.get [as argv] (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\node_modules\yargs\yargs.js:957:21) at Object.<anonymous> (F:\Projects\XuNiProj\eosforce\wallet-desktop-master2\node_modules\electron-builder\src\cli\cli.ts:42:15) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 error Command failed with exit code 1.
错误提示是下载不了https://npm.taobao.org/mirrors/electron/2.0.6/electron-v2.0.6-win32-x64.zip 后来百度了很久,把npm的淘宝代理改回原来的,也是安装不成功,重启也不行。提到下面两个地址,想看看他们是哪里产生的下载地址,没有看出端倪。
https://github.com/electron/electron/releases/download/v9.2.0/electron-v9.2.0-win32-x64.zip
https://cdn.npmmirror.com/binaries/electron/2.0.6/electron-v2.0.6-win32-x64.zip
后来不知折腾多久,灵机一动,重新 运行 yarn成功,在yarn build 也成功。提示如下::
PS F:\Projects\XuNiProj\eosforce\wallet-desktop-master2> yarn yarn install v1.22.19 warning package.json: No license field warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json. warning eosforce@1.1.261: No license field [1/4] Resolving packages... Hash: b3985fff2ea2aef55842 Version: webpack 3.12.0 Time: 4993ms Asset Size Chunks Chunk Names main.js 1.06 kB 0 [emitted] main [0] ./src/main/index.js 786 bytes {0} [built] [1] external "electron" 42 bytes {0} [not cacheable] [2] external "path" 42 bytes {0} [not cacheable] Hash: c581e87be97b7f46b60b Version: webpack 3.12.0 Time: 169969ms Asset Size Chunks Chunk Names fonts/element-icons--fonts.ttf 11 kB [emitted] imgs/kefu--assets.png 83.9 kB [emitted] 0.js 11.1 kB 0 [emitted] 1.js 70.3 kB 1 [emitted] 2.js 26.5 kB 2 [emitted] 3.js 23.2 kB 3 [emitted] 4.js 45.8 kB 4 [emitted] 5.js 15 kB 5 [emitted] 6.js 22.7 kB 6 [emitted] 7.js 22.3 kB 7 [emitted] 8.js 12.3 kB 8 [emitted] 9.js 14.1 kB 9 [emitted] 10.js 15.9 kB 10 [emitted] 11.js 15.9 kB 11 [emitted] 12.js 51.6 kB 12 [emitted] 13.js 35.5 kB 13 [emitted] 14.js 34.9 kB 14 [emitted] 15.js 34.6 kB 15 [emitted] 16.js 33.9 kB 16 [emitted] 17.js 11 kB 17 [emitted] 18.js 13.4 kB 18 [emitted] 19.js 1.28 kB 19 [emitted] 20.js 1.92 kB 20 [emitted] renderer.js 1.07 MB 21 [emitted] [big] renderer styles.css 203 kB 21 [emitted] renderer index.html 352 bytes [emitted] static/term.html 18.5 kB [emitted] [6] ./node_modules/vue/dist/vue.esm.js 292 kB {21} [built] [11] ./node_modules/element-ui/lib/utils/dom.js 5.37 kB {21} [built] [16] ./node_modules/element-ui/lib/utils/util.js 2.11 kB {21} [built] [22] ./node_modules/element-ui/lib/mixins/emitter.js 1.01 kB {21} [built] [46] ./src/renderer/store/index.js 202 bytes {21} [built] [83] ./node_modules/element-ui/lib/element-ui.common.js 974 kB {21} [built] [116] ./src/renderer/messages.js 38.6 kB {21} [built] [128] ./src/renderer/utils/filter.js 2.26 kB {21} [built] [130] ./src/renderer/main.js 988 bytes {21} [built] [131] external "vue-i18n" 42 bytes {21} [not cacheable] [201] ./node_modules/element-ui/lib/theme-chalk/index.css 41 bytes {21} [built] [202] ./src/renderer/App.vue 1.32 kB {21} [built] [214] ./src/renderer/router/index.js 4.58 kB {21} [built] [254] ./src/renderer/menu.js 1.76 kB {21} [built] [259] external "vue-electron" 42 bytes {21} [not cacheable] + 452 hidden modules Child html-webpack-plugin for "index.html": Asset Size Chunks Chunk Names index.html 572 kB 0 [0] ./node_modules/html-webpack-plugin/lib/loader.js!./src/index.ejs 1.23 kB {0} [built] [1] ./node_modules/lodash/lodash.js 544 kB {0} [built] [2] (webpack)/buildin/module.js 517 bytes {0} [built] Child extract-text-webpack-plugin node_modules/extract-text-webpack-plugin/dist node_modules/css-loader/index.js!node_modules/element-ui/lib/theme-chalk/index.css: Asset Size Chunks Chunk Names fonts/element-icons--fonts.ttf 11 kB [0] ./node_modules/css-loader!./node_modules/element-ui/lib/theme-chalk/index.css 196 kB {0} [built] [1] ./node_modules/css-loader/lib/url/escape.js 448 bytes {0} [built] [2] ./node_modules/css-loader/lib/css-base.js 2.26 kB {0} [built] [3] ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff 8.27 kB {0} [built] [4] ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf 76 bytes {0} [built] OKAY take it away `electron-builder` • electron-builder version=19.56.2 • loaded configuration file=package.json ("build" field) • writing effective config file=build\electron-builder.yaml • no native production dependencies • packaging platform=win32 arch=x64 electron=2.0.18 appOutDir=build\win-unpacked Downloading tmp-401360-1-SHASUMS256.txt-2.0.18 [============================================>] 100.0% of 5.39 kB (5.39 kB/s) • downloading path=C:\Users\yc\AppData\Local\electron-builder\cache\app-builder\app-builder-v0.6.1-x64 url=https://github.com/develar/app-builder/releases/download/v0.6.1/app-builder-v0.6.1-win-x64.7z • downloading path=C:\Users\yc\AppData\Local\electron-builder\cache\winCodeSign\winCodeSign-1.9.0 url=https://github.com/electron-userland/electron-builder-binaries/releases/download/winCodeSign-1.9.0/winCodeSign-1.9.0.7z • building target=nsis file=build\eosforce Setup 1.1.261.exe archs=x64 oneClick=true • downloading path=C:\Users\yc\AppData\Local\electron-builder\cache\nsis\nsis-3.0.1.13 url=https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-3.0.1.13/nsis-3.0.1.13.7z • downloading path=C:\Users\yc\AppData\Local\electron-builder\cache\nsis-resources\nsis-resources-3.3.0 url=https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-resources-3.3.0/nsis-resources-3.3.0.7z • building block map blockMapFile=build\eosforce Setup 1.1.261.exe.blockmap Done in 369.67s. PS F:\Projects\XuNiProj\eosforce\wallet-desktop-master2>
最后发现
1、下载了个electron=2.0.18 exe和一个文本放在C:\Users\yc\AppData\Local\electron\Cache 下
2、下载了4个文件放在C:\Users\yc\AppData\Local\electron-builder\cache 下
/v0.6.1/app-builder-v0.6.1-win-x64.7z
/winCodeSign-1.9.0/winCodeSign-1.9.0.7z
/nsis-3.0.1.13/nsis-3.0.1.13.7z
/nsis-resources-3.3.0/nsis-resources-3.3.0.7z
3、发现 C:\Users\yc\.windows-build-tools 下还有 python的安装包和 vs_BuildTools.exe ,不知道是否可以删除。先保留。
在wallet-desktop-master2\build\win-unpacked 看到了 build后生成的exe,但为什么是 unpacked的呢?