Я пытаюсь сделать простой игровой лаунчер. Запускает одну конкретную игру и приложения-инструменты из списка, который настраивается пользователем. Используя электронный магазин и showOpenDialog, я выбираю исполняемый файл инструмента, showOpenDialog берет полный путь из Dialog, а затем превращается в var_toolName (упрощенное имя файла, path.basename + regex + replace, чтобы вырезать часть перед первым не буквенным символом) иvar_toolPath (просто полный путь, зашифрованный с помощью join ()). Обе эти переменные хранятся в конфигурационном файле через магазин электроники. Одна проблема в том, что я не знаю, как добавить следующий исполняемый файл инструмента в список, вместо того, чтобы заменить, и я пытался в течение нескольких дней.
То, что я ожидаю, что список приложений JSON внутри config.json будетищу (просто идея, а не конкретное кодирование):
- tools: (так что я знаю, что это часть config.json, связанная со списком приложений, в целом config.json имеет несколько простых вещейхранится, например, положение окна, путь к исполняемому файлу)
- toolName1
- toolName2
- toolName3
и т. Д.,
Две ролииз этого списка JSON - сделать список HTMl внутри электронного приложения (чтобы пользователь знал, какие инструменты будут запущены вместе с игрой, и, опционально, мог бы включать / выключать определенные инструменты и удалять, я еще не достиг этой части,Я предполагаю, что это потребует некоторой работы над электронным магазином и ipcMain / Renderer). Вторая роль будет включать полные пути запуска инструментов вместе с исполняемым файлом игры
Скрипт для выбора исполняемых файлов инструмента и сохранения материала в config.json:
const AppConfig = require('electron-store')
const appConfig = new AppConfig()
const path = require('path') //for executable/game folder path manipulations
//*****************************
// add tools
//*****************************
// 1. detect button click
document.getElementById('add').addEventListener('click', addTool);
//2. select tool exe + save path
function addTool() {
dialog.showOpenDialog({
title: 'Select tool executable.',
filters: [{
name: 'Tool start file',
extensions: ['exe', 'jar']
}],
properties: ['openFile']
},
(exeFromDialog) => {
var var_exeToolPath = exeFromDialog.join(); //removes square brackets
var var_toolName = path.basename(var_exeToolPath).split(/[/._-]/g)[0];
//path.basename removes path until file, split+regex takes only first part until first character (one of ._/)
appConfig.set(
"tools", {
"toolName": var_toolName,
"toolPath": var_exeToolPath
}
)
})
}
Как выглядит текущий config.json(часть «инструменты» просто заменяется, а не добавляется)
{
"winPosition": {
"x": 1130,
"y": 480,
"width": 202,
"height": 602
},
"exePOEPath": [
"C:\\Program Files (x86)\\Grinding Gear Games\\Path of Exile\\PathOfExile_x64.exe"
],
"tools": {
"toolName": "tool3",
"toolPath": "D:\\tool3.jar"
}
}
Текущий вид приложения (список просто фальшивый наполнитель):
![enter image description here](https://i.stack.imgur.com/QBnk5.png)