假设项目名称为 MyApp
npm install -g appdmg
打包为dmg
首先用electron-packager打包为MyApp.app,electron-packager用法可看其文档
// 目录结构
dists->
-- MyApp.app
-- pack.json
// 打包命令:
appdmg ./dists/pack.json ./dists/MyApp.dmg
pack.json文件内容:
{
"title": "MyApp",
"icon": "icon.icns", // 图标
"background": "background.png", // 背景图片
"contents": [
{ "x": 448, "y": 344, "type": "link", "path": "/Applications" },
{ "x": 192, "y": 344, "type": "file", "path": "./MyApp.app" }
],
"window": {
"size": {
"width": 640,
"height": 480
}
},
"format": "UDBZ", // 还有很多种,具体看appdmg的官方文档
}
// 这些坐标以及大小需要自己不断的尝试,说多了都是泪
用上述方式打包出来的dmg文件可以正常运行,但是缺点就是体积太大,一个Electron Framework.framework
文件就已经118M了,再加上其他的文件,我这边一个app打出来的体积已经到了150M了,确实有点庞大。
format的各种值都试过了,最小只能压到141M,但还是很大。
UDRW - UDIF read/write image
UDRO - UDIF read-only image
UDCO - UDIF ADC-compressed image
UDZO - UDIF zlib-compressed image
UDBZ - UDIF bzip2-compressed image (OS X 10.4+ only)
UFBI - UDIF entire image with MD5 checksum
UDTO - DVD/CD-R master for export
UDSP - SPARSE (grows with content)
UDSB - SPARSEBUNDLE (grows with content; bundle-backed)
只能试一下pkg格式的包了
打包为pkg
可以安装packages来打包pkg
http://s.sudre.free.fr/Software/files/Packages.dmg
整个打包过程挺简单的,打包后的pkg体积也还可以,64M,比起150M来少了不少呢,但是每次发布的时候都要打开这个软件进行打包还是挺麻烦的,所以还是得想想其他办法,后来终于发现了macos自带的打包工具pkgbuild
pkgbuild --install-location /Applications --component ./dists/MyApp.app ./dists/MyApp.pkg
一个命令,一行代码,搞定,写在shell脚本里面,比起packages来方便多了。
PS:
pkgbuild工具貌似会出问题,打包出来的pkg能安装,但是安装完了不会再LaunchPad中显示,估计是安装出问题了,所以换了一种方式:
使用quickpkg工具来打包
https://github.com/scriptingosx/quickpkg
./build/darwin/quickpkg ./dists/MyApp.app --output ./dists/MyApp.pkg