From 6cb8f278a2fff97b6906cc84529d304835a24b96 Mon Sep 17 00:00:00 2001 From: TyanNN Date: Sun, 1 May 2016 21:18:49 +0300 Subject: [PATCH] Translated application distribution and application packaging to ru_RU --- .../ru-RU/tutorial/application-distribution.md | 126 +++++++++++++++ .../ru-RU/tutorial/application-packaging.md | 179 +++++++++++++++++++++ 2 files changed, 305 insertions(+) create mode 100644 docs-translations/ru-RU/tutorial/application-distribution.md create mode 100644 docs-translations/ru-RU/tutorial/application-packaging.md diff --git a/docs-translations/ru-RU/tutorial/application-distribution.md b/docs-translations/ru-RU/tutorial/application-distribution.md new file mode 100644 index 0000000..e8ddd9f --- /dev/null +++ b/docs-translations/ru-RU/tutorial/application-distribution.md @@ -0,0 +1,126 @@ +# Распространение приложения + +Чтобы разпространять ваше приложение на Electron, папка с вашим приложением +должна называться `app` и находиться в папке ресурсов Electron (на OS X это +`Electron.app/Contents/Resources/`, на Linux и Windows - `resources/`), +вот так: + +На OS X: + +```text +electron/Electron.app/Contents/Resources/app/ +├── package.json +├── main.js +└── index.html +``` + +На Windows и Linux: + +```text +electron/resources/app +├── package.json +├── main.js +└── index.html +``` + +Затем запустите `Electron.app` (или `electron` на Linux, `electron.exe` на Windows), +и Electron запустится как ваше приложение. Теперь папка `electron` и есть дистрибутив, +который вы должны распространять пользователям. + +## Упаковка вашего приложения в файл + +Если вы не хотите распространять исходные коды вашего проект, вы можете +упаковать его в архив [asar](https://github.com/atom/asar), чтобы не +показывать пользователям исходные коды. + +Чтобы использовать `asar` для замены папки `app` на архив вам нужно +переименовать архив в `app.asar` и положить его в папку ресурсов Electron, +после чего Electron попробует считать ресурсы и запустить архив. + + +На OS X: + +```text +electron/Electron.app/Contents/Resources/ +└── app.asar +``` + +На Windows и Linux: + +```text +electron/resources/ +└── app.asar +``` + +Больше деталей можна найти в [инстуркции по упаковке приложения](application-packaging.md). + +## Ребрендирование скачанных исполняемых файлов +После того, как вы подключили ваше приложение к Electron, +вам наверняка захочеться ребрендировать его перед распространением. + +### Windows + +Вы можете переименовать `electron.exe` как пожелаете и поменять иконку и прочую +информацию приложениями вроде [rcedit](https://github.com/atom/rcedit). + +### OS X + +Вы можете переименовать `Electron.app` как пожелаете, а также изменить +поля `CFBundleDisplayName`, `CFBundleIdentifier` и `CFBundleName` в следующих +файлах: + +* `Electron.app/Contents/Info.plist` +* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` + +Вы таже можете переименовать приложение-помощник, чтобы оно не показывало `Electron Helper`, +убедитесь, что вы переименовали его исполняемый файл. + +Структура переименованного приложения выглядит примерно так: + +``` +MyApp.app/Contents +├── Info.plist +├── MacOS/ +│   └── MyApp +└── Frameworks/ + ├── MyApp Helper EH.app + | ├── Info.plist + | └── MacOS/ + |    └── MyApp Helper EH + ├── MyApp Helper NP.app + | ├── Info.plist + | └── MacOS/ + |    └── MyApp Helper NP + └── MyApp Helper.app + ├── Info.plist + └── MacOS/ +    └── MyApp Helper +``` + +### Linux + +Вы можете переименовать исполняемый файл `electron` как пожелаете. + +## Rebranding by Rebuilding Electron from Source + +Вы также можете ребрендировать Electron изменив имя продукиа и собрав его +из исходных кодов. Чтобы сделать это вам нужно изменить `atom.gyp` и полностью +пересобрать Electron. + +### grunt-build-atom-shell + +Проверка и пересборка кода Electron довольно сложная задача, так что мы +мы сделали файл-инструкцию для Grunt, который будет делать это автоматически: +[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). + +Этот файл автоматически просмотрит изменения в `.gyp` фалле, соберёт +Electron из исходных кодов и пересоберёт модули Node, чтобы всё подходило +под новое имя. + +## Инструменты + +Вы также можете использовать инструменты оттретьих лиц, +которые сделают работу за вас: + +* [electron-packager](https://github.com/maxogden/electron-packager) +* [electron-builder](https://github.com/loopline-systems/electron-builder) diff --git a/docs-translations/ru-RU/tutorial/application-packaging.md b/docs-translations/ru-RU/tutorial/application-packaging.md new file mode 100644 index 0000000..b63565e --- /dev/null +++ b/docs-translations/ru-RU/tutorial/application-packaging.md @@ -0,0 +1,179 @@ +# Упаковка приложения + +Чтобы смягчить [проблемы](https://github.com/joyent/node/issues/6960) с длинными +именами под Windows, немного ускорить `require` и скрыть ваши исходные коды, вы +можете упаковать его в архив [asar][asar], немного поменяв исходный код. + +## Генерация архива `asar` + +Архив [asar][asar] - простой фомат похожий на tar, который собирает много файлов +в один. Electron может читать такой файл без распаковки. + +Шаги для упавки вашего приложения архив `asar`: + +### 1. Установите саму утилиту asar + +```bash +$ npm install -g asar +``` + +### 2. Упакуйте с помощью `asar pack` + +```bash +$ asar pack your-app app.asar +``` + +## Использование архивов `asar` + +В Electron есть два вида API: API Node, которые устанавливаются с помощью Node.Js и +веб API, которые предоставляюся Chromium. Оба предоставляют возможность считывать из +архивов `asar`. + +### Node API + +С специальными патчами в Electron, части Node API вроде `fs.readFile` и `require` +считают архивы `asar` виртуальными папками и файлы в них доступны как в обычных. + +Например, у нас есть арихив `example.asar` в `/path/to`: + +```bash +$ asar list /path/to/example.asar +/app.js +/file.txt +/dir/module.js +/static/index.html +/static/main.css +/static/jquery.min.js +``` + +Прочитаеем файл в архиве `asar`: + +```javascript +const fs = require('fs'); +fs.readFileSync('/path/to/example.asar/file.txt'); +``` + +Список всех файлов начиная от корня архива: + +```javascript +const fs = require('fs'); +fs.readdirSync('/path/to/example.asar'); +``` + +Ичпользуем модуль из архива: + +```javascript +require('/path/to/example.asar/dir/module.js'); +``` + +Вы также можете показывать веб страницы из архива `asar` через `BrowserWindow`: + +```javascript +const BrowserWindow = require('electron').BrowserWindow; +var win = new BrowserWindow({width: 800, height: 600}); +win.loadURL('file:///path/to/example.asar/static/index.html'); +``` + +### Веб API + +На веб страницах файлы запрашиваются с помощью протокола `file:`. Как и в Node API +архивы `asar` считаются за директории. + +Пример получения файла с помощью `$.get`: + +```html + +``` + + +### Использование архива `asar` в качестве обычного файла + +Для случаев, когда вам, например, нужно проверить хэш-сумму архива `asar`, +нужно использовать архив как файл. Для этой цели существует встроенный модуль +`original-fs`, который предоставляет доступ к `fs` без поддежки `asar`: + +```javascript +var originalFs = require('original-fs'); +originalFs.readFileSync('/path/to/example.asar'); +``` +Вы также можете выставить `process.noAsar` в `true`, чтобы выключить поддержку `asar` +в модуле `fs`: + +```javascript +process.noAsar = true; +fs.readFileSync('/path/to/example.asar'); +``` + +## Ограничения Node API + +Хотя мы и старались как могли, чтобы сделать `asar` максимально похожим на папки, +всё ещё существуют некоторые ограничения из-за низкоуровневой натуры Node API. + +### Архивы только для чтения + +Архивы не могут быть изменены, так что все функции API Node, которые меняют файлы, +не буду работать с архивами `asar`. + +### Нельзя установить рабочую директорию в архиве + +Хотя архивы `asar` и считаются папками, они ими на самом деле не являются, +так что вы не можете установить в них рабочую директорию. Передача +архивов `asar` в качестве аргумента `cwd` некоторым API также может вызывать ошибки. + + +### Распаковка для некоторых API + +Большинство API `fs` могут читать файлы или получить сведения о них прямо из +архива, без распаковки, однако для некоторых, которые передают путь к системным +вызовам, Electron распакует нужный файл в временную папку и передаст путь к этому +файлу. + +API которым нужна распаковка: + +* `child_process.execFile` +* `child_process.execFileSync` +* `fs.open` +* `fs.openSync` +* `process.dlopen` - используется `require` на нативных модулях + +### Подельная информация для `fs.stat` + +Объект `Stats`, возвращаемый `fs.stat`, и его друзья для остальных файлов +в архиве `asar` специально генерируются, потому что на самом деле этих файлов +не существует в файловой системе. Вам не стоит доверять информации +из объектов `Stats`, кроме, разве что, размера и типа файлов. + +### Запуск исполняемых файлов из архивов `asar` + +Существуют некоторые API Node, которые исполняют файлы, например `child_process.exec`, +`child_process.spawn` и `child_process.execFile`, но только `execFile` может +исполнять файлы из архивов `asar`. + +Так вышло потому, что `exec` и `spawn` принимают `команду` а не `файл` как параметр, +а `команды` исполняются в оболочке. Нет никакой реальной возможности проверить, +реален ли файл или находится в архиве `asar`, и даже если мы смогли бы проверить, +то неясно, как земенить путь к файлу без побочных эффектов. + +## Добавление распакованых файлов в архив `asar` + +Как говорилось выше, некоторые API Node будут распаковывать файлв, +чтобы их использовать. Кроме увеличенного потребления ресурсов это также +может вызвать предупрждения от антивирусов. + +Чтобы обойти это, вы можете распаковать некоторые файлы, создавая архивы, +с помощью опции `--unpack`. Пример показывает распаковку нативных модулей: + +```bash +$ asar pack app app.asar --unpack *.node +``` + +После запуска команды выше в вашей папке, кроме `app.asar`, появится +`app.asar.unpacked`, которая будет содержать распакованные файлы, эту +папку стоит копировать вместе с `app.asar` при распространении. + +[asar]: https://github.com/atom/asar -- 2.7.4