Electron-winstaller - это модуль NPM, который создает установщик Windows для приложения Windows с помощью Squirrel. Squirrel - это набор инструментов и библиотека для полного управления установкой и обновлением настольного приложения Windows.

Использование electronics-winstaller включает в себя работу с папкой приложения (папка, в которой находятся все подпапки вашего кода) и корневой папкой папки приложения (эта папка состоит из вашего приложения. папка). Теперь, поскольку мы собираемся перемещаться по этим двум папкам для установки различных пакетов, структура папки приложения должна быть ясной. Ниже представлена ​​структура папки приложения.

root folder /
   ├──applcation folder /

      ├── package.json

      ├── main.js

      └── index.html

Начнем с процесса установки.

  1. Перейдите в корневую папку приложения и через командную строку установите electronic-winstaller.
npm install electron-winstaller

2. Зайдите в папку с приложением и установите белку.

npm install electron-squirrel-startup

3. В файле main.js электронного приложения добавьте следующие строки кода в начало файла.

// this should be placed at top of main.js to handle setup events quickly
if (handleSquirrelEvent(app)) {
// squirrel event handled and app will exit in 1000ms, so don't do anything else
return;
}

4. Добавьте следующий набор строк в конец файла main.js.

function handleSquirrelEvent(application) {
if (process.argv.length === 1) {
return false;
}
const ChildProcess = require('child_process');
const path = require('path');
const appFolder = path.resolve(process.execPath, '..');
const rootAtomFolder = path.resolve(appFolder, '..');
const updateDotExe = path.resolve(path.join(rootAtomFolder, 'Update.exe'));
const exeName = path.basename(process.execPath);
const spawn = function(command, args) {
let spawnedProcess, error;
try {
spawnedProcess = ChildProcess.spawn(command, args, {
detached: true
});
} catch (error) {}
return spawnedProcess;
};
const spawnUpdate = function(args) {
return spawn(updateDotExe, args);
};
const squirrelEvent = process.argv[1];
switch (squirrelEvent) {
case '--squirrel-install':
case '--squirrel-updated':
// Optionally do things such as:
// - Add your .exe to the PATH
// - Write to the registry for things like file associations and
//   explorer context menus
// Install desktop and start menu shortcuts
spawnUpdate(['--createShortcut', exeName]);
setTimeout(application.quit, 1000);
return true;
case '--squirrel-uninstall':
// Undo anything you did in the --squirrel-install and
// --squirrel-updated handlers
// Remove desktop and start menu shortcuts
spawnUpdate(['--removeShortcut', exeName]);
setTimeout(application.quit, 1000);
return true;
case '--squirrel-obsolete':
// This is called on the outgoing version of your app before
// we update to the new version - it's the opposite of
// --squirrel-updated
application.quit();
return true;
}
};

5. Вернитесь в корневую папку приложения и выполните следующую команду, которая создаст исполняемый файл вашего приложения. Не забудьте указать электронную версию, чтобы избежать ошибки в электронной упаковке.

electron-packager "PATH/TO/APPLICATION/FOLDER" --platform=win32 --arch=x64 myApplicationBuilt --electron-version 2.0.5

6. Создайте папку установщика в корневой папке приложения. Пример - myApplication-installers (это имя будет использоваться на следующем шаге)

7. Создайте текстовый файл с именем «build.js» в корневой папке приложения и добавьте следующую строку в файл build.js.

// C:\Users\sdkca\Desktop\electron-workspace\build.js
var electronInstaller = require('electron-winstaller');
// In this case, we can use relative paths
var settings = {
// Specify the folder where the built app is located
appDirectory: './myApplicationBuilt-win32-x64',
// Specify the existing folder where
outputDirectory: './myApplication-installers',
// The name of the Author of the app (the name of your company)
authors: 'Dhankuwar Sisodiya',
// The name of the executable of your built
exe: './myApplication.exe',
description: 'My first electron application'
};
resultPromise = electronInstaller.createWindowsInstaller(settings);
resultPromise.then(() => {
console.log("The installers of your application were succesfully created !");
}, (e) => {
console.log(`Well, sometimes you are not so lucky: ${e.message}`)
});

ПРИМЕЧАНИЕ. В приведенном выше файле значения appDirectory, outputDirectory, exe необходимо изменить в соответствии с именами папок вашего приложения. AppDirectory будет именем папки, созданной после выполнения команды electronic-packager (обычно оканчивается на… -win32-x64). OutputDirectory будет именем папки, созданной на шаге 6. И имя exe будет именем exe, созданного в папке appDirectory.

8. И на последнем шаге вам нужно будет вернуться в корневую папку приложения и выполнить следующую команду.

node build.js

И, наконец, у вас есть установщик Windows, файл SETUP для вашего электронного приложения в папке, созданной на шаге 6, готовый к распространению.

Для получения дополнительных сведений о параметрах конфигурации, поддерживаемых программой electronic-winstaller, посетите: https://github.com/electron/windows-installer

Я надеюсь, что это было полезно! Ся скорее! :)

Использованная литература:

[1] https://github.com/electron/windows-installer

[2] https://www.christianengvall.se/electron-windows-installer/