При разработке программ для электронных клиентов неизбежной проблемой является упаковка. Ниже мой опыт работы и мои текущиеelectron-builder
чтобы поделиться некоторыми идеями.
основная концепция
Официальный сайтОпределение
Полное решение для упаковки и создания готового к распространению приложения Electron для macOS, Windows и Linux с поддержкой «автоматического обновления» из коробки.
оelectron
а такжеelectron-builder
Основная часть этой статьи пропущена, если интересно, можете прочитатьэта статья
как использовать
Использование и настройка конструктора очень просты Есть два способа настройки конструктора
-
package.json
Прямая настройка и использование в (чаще используется, мы остановимся на этом ниже) - уточнить
electron-builder.yml
документ
Адрес демо будет указан в конце статьи (в демо проектеelectron
используетсяV2.0.7
версия, в настоящее время выше2.0.8
Версия).
Ниже приведен простойpackage.json
Аннотированная конфигурация в
- Базовая конфигурация
"build": { // 这里是electron-builder的配置
"productName":"xxxx",//项目名 这也是生成的exe文件的前缀名
"appId": "com.xxx.xxxxx",//包名
"copyright":"xxxx",//版权 信息
"directories": { // 输出文件夹
"output": "build"
},
// windows相关的配置
"win": {
"icon": "xxx/icon.ico"//图标路径
}
}
После добавления вышеуказанных файлов в конфигурационный файл можно запаковать простую папку Папка точно не та, что нам нужна. Далее мы продолжим говорить о других конфигурациях. 2. Упаковка целевой конфигурации быть упакованным вУстановщикТогда у нас есть два пути,
- Используйте инструмент NSIS, чтобы снова упаковать нашу папку и упаковать его в EXE
- По упаковке nsis electronic-builder представляет собой непосредственно exe, настроенный следующим образом
"win": { // 更改build下选项
"icon": "build/icons/aims.ico",
"target": [
{
"target": "nsis" // 我们要的目标安装包
}
]
},
- Другие конфигурации платформы
"dmg": { // macOSdmg
"contents": [
...
]
},
"mac": { // mac
"icon": "build/icons/icon.icns"
},
"linux": { // linux
"icon": "build/icons"
}
- конфигурация nsis
Это нужно обсудить подробнее.Конфигурация этого nsis относится к настройке процесса установки.На самом деле это еще очень важно.Если nsis не настроен,приложение будет автоматически установлено на диск C. У пользователя нет выбора, что однозначно не приемлемо
Конфигурация nsis настраивается в параметре nsis в сборке.Следующее является частью конфигурации nsis.
"nsis": {
"oneClick": false, // 是否一键安装
"allowElevation": true, // 允许请求提升。 如果为false,则用户必须使用提升的权限重新启动安装程序。
"allowToChangeInstallationDirectory": true, // 允许修改安装目录
"installerIcon": "./build/icons/aaa.ico",// 安装图标
"uninstallerIcon": "./build/icons/bbb.ico",//卸载图标
"installerHeaderIcon": "./build/icons/aaa.ico", // 安装时头部图标
"createDesktopShortcut": true, // 创建桌面图标
"createStartMenuShortcut": true,// 创建开始菜单图标
"shortcutName": "xxxx", // 图标名称
"include": "build/script/installer.nsh", // 包含的自定义nsis脚本 这个对于构建需求严格得安装过程相当有用。
"script" : "build/script/installer.nsh" // NSIS脚本的路径,用于自定义安装程序。 默认为build / installer.nsi
},
оinclude
а такжеscript
Какой выбрать?
Требования к персонализированному процессу установки несложны, но рекомендуется использовать простые операции, такие как изменение места установки, удаление подсказок и т. д.include
Конфигурация, если вам нужен классный процесс установки, рекомендуется использоватьscript
Полностью настроить.
NSIS
Это очень мощный инструмент для работы с такими вещами, как установочные пакеты. Но выучить его не легче, чем язык высокого уровня. Тайны в нем должны быть исследованы большими парнями самостоятельно
Вот некоторые учебные ресурсы
- О настройке операционной системы
В основном конфигурация 64 и 32 бит в windows
параметры интерфейса командной строки
electron-builder --ia32 // 32位
electron-builder // 64位(默认)
Конфигурация в нсис
"win": {
"icon": "build/icons/aims.ico",
"target": [
{
"target": "nsis",
"arch": [ // 这个意思是打出来32 bit + 64 bit的包,但是要注意:这样打包出来的安装包体积比较大,所以建议直接打32的安装包。
"x64",
"ia32"
]
}
]
}
- Обновить конфигурацию
Ниже приведена конфигурация для обновления, в основном для созданияlastest.yaml
конфигурационный файл
"publish": [
{
"provider": "generic", // 服务器提供商 也可以是GitHub等等
"url": "http://xxxxx/" // 服务器地址
}
],
Полная конфигурация
В основном полная конфигурация доступна
"build": {
"productName":"xxxx",//项目名 这也是生成的exe文件的前缀名
"appId": "com.leon.xxxxx",//包名
"copyright":"xxxx",//版权 信息
"directories": { // 输出文件夹
"output": "build"
},
"nsis": {
"oneClick": false, // 是否一键安装
"allowElevation": true, // 允许请求提升。 如果为false,则用户必须使用提升的权限重新启动安装程序。
"allowToChangeInstallationDirectory": true, // 允许修改安装目录
"installerIcon": "./build/icons/aaa.ico",// 安装图标
"uninstallerIcon": "./build/icons/bbb.ico",//卸载图标
"installerHeaderIcon": "./build/icons/aaa.ico", // 安装时头部图标
"createDesktopShortcut": true, // 创建桌面图标
"createStartMenuShortcut": true,// 创建开始菜单图标
"shortcutName": "xxxx", // 图标名称
"include": "build/script/installer.nsh", // 包含的自定义nsis脚本
},
"publish": [
{
"provider": "generic", // 服务器提供商 也可以是GitHub等等
"url": "http://xxxxx/" // 服务器地址
}
],
"files": [
"dist/electron/**/*"
],
"dmg": {
"contents": [
{
"x": 410,
"y": 150,
"type": "link",
"path": "/Applications"
},
{
"x": 130,
"y": 150,
"type": "file"
}
]
},
"mac": {
"icon": "build/icons/icon.icns"
},
"win": {
"icon": "build/icons/aims.ico",
"target": [
{
"target": "nsis",
"arch": [
"ia32"
]
}
]
},
"linux": {
"icon": "build/icons"
}
}
Аргументы командной строки (CLI)
Команды:
electron-builder build 构建命名 [default]
electron-builder install-app-deps 下载app依赖
electron-builder node-gyp-rebuild 重建自己的本机代码
electron-builder create-self-signed-cert 为Windows应用程序创建自签名代码签名证书
electron-builder start 使用electronic-webpack在开发模式下运行应用程序(须臾要electron-webpack模块支持)
Строительство (параметры сборки):
--mac, -m, -o, --macos Build for macOS, [array]
--linux, -l Build for Linux [array]
--win, -w, --windows Build for Windows [array]
--x64 Build for x64 (64位安装包) [boolean]
--ia32 Build for ia32(32位安装包) [boolean]
--armv7l Build for armv7l [boolean]
--arm64 Build for arm64 [boolean]
--dir Build unpacked dir. Useful to test. [boolean]
--prepackaged, --pd 预打包应用程序的路径(以可分发的格式打包)
--projectDir, --project 项目目录的路径。 默认为当前工作目录。
--config, -c 配置文件路径。 默认为`electron-builder.yml`(或`js`,或`js5`)
Издательский:
--publish, -p 发布到GitHub Releases [choices: "onTag", "onTagOrDraft", "always", "never", undefined]
Устарело:
--draft 请改为在GitHub发布选项中设置releaseType [boolean]
--prerelease 请改为在GitHub发布选项中设置releaseType [boolean]
--platform 目标平台 (请更改为选项 --mac, --win or --linux)
[choices: "mac", "win", "linux", "darwin", "win32", "all", undefined]
--arch 目标arch (请更改为选项 --x64 or --ia32)
[choices: "ia32", "x64", "armv7l", "arm64", "all", undefined]
Другой:
--help Show help [boolean]
--version Show version number [boolean]
Примеры:
electron-builder -mwl 为macOS,Windows和Linux构建(同时构建)
electron-builder --linux deb tar.xz 为Linux构建deb和tar.xz
electron-builder -c.extraMetadata.foo=bar 将package.js属性`foo`设置为`bar`
electron-builder --config.nsis.unicode=false 为NSIS配置unicode选项
TargetConfiguration (собрать целевую конфигурацию):
target: String - 目标名称,例如snap.
arch “x64” | “ia32” | “armv7l” | “arm64”> | “x64” | “ia32” | “armv7l” | “arm64” -arch支持列表
распространенные ошибки
-
NPM
проблема с загрузкойпотому что
NPM
В стране относительно медленно. Привести кelectron-V.xxxx.zip
Ошибка загрузки. Если эти вещи запакованы впервые, вам необходимо скачать соответствующийelectron
файлы поддержки версий. Есть два решения- Установить зеркало: найдено на диске C Пользователь
.npmrc
документ. Затем добавьте следующий код, но иногда это не очень полезно.
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/
- Перейдите непосредственно в библиотеку зеркальных файлов Taobao, чтобы найти соответствующий файл и загрузить его, поместить в указанный каталог, электронный Taobaoзеркальный адрес.下载完之后放到指定的文件。一般文件得地址在
C:\Users\Administrator\AppData\Local\electron\Cache
. Например, я хочу скачать версию 1.8.4electron
, затем найдите файл под зеркалом и положите его в указанную папку.
- Установить зеркало: найдено на диске C Пользователь
(при выполненииnpm install
скачать нельзя) прямо взеркало таобаоСкачиваем соответствующую версию зипа, а потом кидаем в C:\Users\YourUserName.electron
Это решает проблему, простой и грубой силой.
-
NSIS
проблема с загрузкойесли хочешь ударить
NSIS
Пакет тоже нужно качать с западаnsis-resources-xxx
Дождитесь пакета. После вышеуказанного опыта мы можем заполнить то, что, как мы знаем, отсутствует.Через журнал ошибок мы можем получить версию, которую мы хотим загрузить, которая обычно отображается в общих ошибках.github
Адрес загрузки, прямо нажмите на ссылку для загрузки. Но на этот раз место другое. потому что этоelectron-builder
среда поддержки, поэтому мы собираемся поставитьC:\Users\Administrator\AppData\Local\electron-builder\cache\nsis\
вниз.
В нормальных условиях идея решения этих проблем состоит в том, чтобы взять то, чего не хватает😄.
Суммировать
electronic-builder — простая, но мощная библиотека. Во всяком случае, я вполне доволен
исходный адресСтавьте ⭐, если считаете это полезным