我有一个Angular应用程序,我需要创建一个MSI安装程序。我已经成功创建了一个电子应用程序(npm run electron
),但当我尝试创建安装程序时,我得到了这个错误:
错误LGHT 0263:'C:...\release\win-unpacked\resources\app.asar'太大,文件大小必须小于2147483648。
我按照这个顺序运行命令:
npm run electron
-->运行电子应用程序本身,看看它是否工作(我在执行下一步之前关闭了应用程序)npm run tsc
个npm run step2
个npm run electron:build
个
我想我在electron-builder.json中包含了太多的文件,但我不确定我可以删除什么,以及应用程序运行所需的内容,因为这是我第一次使用electron和electron-builder。
当我在electron-builder.json中设置"asar": false
时,MSI安装程序被创建,但我得到警告asar usage is disabled — this is strongly not recommended
,它需要很长时间(即30分钟左右)才能构建,MSI数据包大小几乎为1.5 GB。
有人知道如何减少asar的大小吗?
这是我的项目结构:
|- dist
|- electron
|- main.ts
|- package.json
|- node_modules
|- release
|- src
|- all angular source code
|- angular.json
|- electron-builder.json
|- package.json
|- tsconfig.json
|- tsconfig.serve.json
字符串
在package.json:
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"electron": "ng build --configuration electron && electron .",
"tsc": "tsc -p tsconfig.serve.json",
"step2": "ng build --base-href ./ --configuration electron",
"electron:build": "electron-builder build --publish=never"
}
型
electron-builder.json:
{"asar": true,
"directories": {
"output": "release/"
},
"files": [
{
"from": "dist",
"filter": ["**/*"]
},
{
"from": "electron",
"filter": ["**/*"]
},
{
"from": "src",
"filter": ["**/*"]
},
"!**/*.ts",
"!*.map",
"!package.json",
"!package-lock.json",
"!node_modules/**",
"!.angular/**",
"!.vscode/**",
"!cypress/**",
"!release/**"
],
"win": {
"icon": "offline-test.ico",
"target": [
"msi"
]
}
}
型
tsconfig.serve.json:
{
"compilerOptions": {
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"target": "es2015",
"types": [
"node"
],
"lib": [
"es2017",
"es2016",
"es2015",
"dom"
]
},
"files": [
"electron/main.ts"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
型
我看了this question,但我认为我排除了MSI文件所在的目录,所以我不确定还能排除什么。
2条答案
按热度按时间qzlgjiam1#
我从来没有使用过Angular,所以我不能给予你完整的工作配置,但是无论使用什么库,通常在打包Electron时,你首先要打包你的文件,然后只打包这些文件。
大致来说,你应该:
一旦你把所有的东西都整齐地放在你的输出文件夹里(我收集到的是Angular的默认值是
dist/[project-name]
),你就可以相应地配置electron-builder
了:字符串
对于不能捆绑的本机模块,您可以使用
asarUnpack
选项将它们包含在包中。另外,如果我没有错的话,Angular CLI使用webpack来捆绑,所以你可能需要使用
target
electron-main
和electron-preload
来捆绑你的Electron文件,这样一切都能正常工作。3npbholx2#
我最终的app.asar文件是~187 Mb
我的最终.exe文件是~168 Mb
我的安装程序是~87 Mb
我仍然在清理东西,到目前为止,我明确排除了SRC代码(仍然在开发环境中,所有内容都在同一个文件夹中),
字符串
检查ASAR文件的内容(安装7-Zip和配套插件Asar 7z),确保没有包含不需要的文件