Javascript 如何通过electron store将应用程序名称和路径添加到JSON文件中的列表
我想做一个简单的游戏发射器。从用户可自定义的列表中启动一个特定的游戏和工具应用程序。使用electron store和showOpenDialog,我选择了一个工具可执行文件,showOpenDialog从Dialog获取一个完整路径,然后将其转换为var_toolName(简化文件名,path.basename+regex+replace)和var_toolPath(用join()字符串化的完整路径)。这两个变量都通过electron store存储在配置文件中。一个问题是我不知道如何将下一个工具可执行文件追加到列表中,而不是替换,我已经尝试了几天 我期望config.JSON中的JSON应用程序列表会看到什么(只是一个想法,而不是具体的编码):Javascript 如何通过electron store将应用程序名称和路径添加到JSON文件中的列表,javascript,json,electron,Javascript,Json,Electron,我想做一个简单的游戏发射器。从用户可自定义的列表中启动一个特定的游戏和工具应用程序。使用electron store和showOpenDialog,我选择了一个工具可执行文件,showOpenDialog从Dialog获取一个完整路径,然后将其转换为var_toolName(简化文件名,path.basename+regex+replace)和var_toolPath(用join()字符串化的完整路径)。这两个变量都通过electron store存储在配置文件中。一个问题是我不知道如何将下一个
- 工具:(所以我知道它是config.json中与应用程序列表相关的一部分,总体上config.json只存储了一些简单的东西,比如窗口位置、游戏可执行路径)
- 工具名1
- 工具路径1
- 工具名2
- 工具路径2
- 工具名3
- 工具路径3
- 工具名1
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的外观(“工具”部分刚刚被替换,而不是被追加)
应用程序的当前外观(列表只是一个假填充):
您需要先获取可用的工具,然后将新工具附加到其中并保存 见下文
let _tools = appConfig.get("tools");
if(!_tools){
_tools = {};
}
_tools[var_toolName] = var_exeToolPath;
appConfig.set(
"tools", _tools
)
所以预期的产出是,
{
.
.
.,
"tools": {
"tool1": "D:\\tool1.jar",
"tool2": "D:\\tool2.jar",
"tool3": "D:\\tool3.jar"
}
}
谢谢,你能告诉我“_tools[var_toolName]=var_exeToolPath;”有什么作用吗?@namelessone它使用var_toolName创建一个键,并将值var_exeToolPath分配给它。我曾尝试将JSON转换为HTML列表,但似乎没有属性标识符(比如
var_toolPath
和工具路径的“toolName”
)
对于var_exeToolPath
),我不能仅从JSON列表中提取工具名来注入HTML列表,并且可能需要工具路径来让应用程序知道它应该和游戏一起启动哪些可执行文件。这是我用来生成列表项的行output+=“”+toolslist.tools[I].toolName+” ”代码>。除非有办法在不依赖标识符的情况下分别提取键(var_toolName
)和值(var_exeToolpath
)?
{
.
.
.,
"tools": {
"tool1": "D:\\tool1.jar",
"tool2": "D:\\tool2.jar",
"tool3": "D:\\tool3.jar"
}
}