如何在Neutralinojs中获取启动参数及关联文件路径?
嘿,这两个需求在Neutralinojs里都能轻松实现,我来给你拆解一下具体的做法:
获取启动参数
Neutralinojs专门提供了os.getCommandLineArgs() API来获取应用启动时的命令行参数,用法非常直接。你可以在主进程的代码里这样调用:
// 主进程代码(比如 main.js) Neutralino.os.getCommandLineArgs() .then(args => { console.log("所有启动参数:", args); // 举个例子:如果用户用 `./my-app --env=prod --debug` 启动 // args 数组会是 ["/path/to/my-app", "--env=prod", "--debug"] }) .catch(err => { console.error("获取启动参数出错:", err); });
小提示:数组的第一个元素是应用程序自身的路径,后面的所有元素就是用户传入的自定义参数,你可以根据需求遍历或直接索引获取。
获取关联文件的路径
要实现这个需求,分两步走:先配置文件关联,再通过启动参数获取文件路径。
第一步:配置文件关联
在你的neutralino.config.json中,找到extensions.fileSystem.fileAssociations节点,添加你要关联的文件类型配置。比如关联.myext格式的文件:
{ "extensions": { "fileSystem": { "fileAssociations": [ { "name": "MyApp 自定义文档", "description": "MyApp专属的文件格式", "extensions": ["myext"], "icon": "/resources/icons/file-icon.ico" } ] } } }
配置完成后,重新打包应用,系统就会识别这个文件类型并关联到你的应用。
第二步:获取文件路径
当用户双击关联的文件打开你的应用时,该文件的完整路径会作为启动参数传入。同样用os.getCommandLineArgs()来获取,只需要跳过第一个应用路径元素即可:
Neutralino.os.getCommandLineArgs() .then(args => { // 提取除应用路径外的参数,这里就是用户打开的文件路径 const openedFiles = args.slice(1); if(openedFiles.length > 0) { const targetFilePath = openedFiles[0]; console.log("用户打开的文件路径:", targetFilePath); // 接下来就可以对这个文件进行读取、解析等操作了 } }) .catch(err => { console.error("获取文件路径出错:", err); });
注意:不同平台的文件关联生效可能需要额外操作,比如macOS需要将应用打包成DMG并正确签名,Linux需要配置.desktop文件,但核心的文件路径获取逻辑都是一样的。
内容的提问来源于stack exchange,提问作者moamen
相关产品推荐
相关产品推荐

