我正在制作一个具有自定义文件扩展名的应用程序。我完成了文件的阅读和写入,并在Mac上双击打开文件,但我找不到一种方法来使双击给予回Windows上的绝对路径。我使用电子构建器,因此传递的所有参数都不同
以下是我在MacOS上解决的方法:
main.js:
...
if (process.platform === "darwin") {
app.on('open-file', (event, path) => {
event.preventDefault();
ipcMain.handle("getSource", function() {
return path;
})
});
}
字符串
preload.js:
window.addEventListener('DOMContentLoaded', async () => {
...
let path;
if (process.platform === "darwin") {
const ipcRenderer = require('electron').ipcRenderer;
path = await ipcRenderer.invoke("getSource")
}
if (process.platform === "win32") {
path = process.argv[1]
}
gui_console.value = path
...
}
型
我尝试了process.argv[1]
,因为许多其他帖子建议,它给了我别的东西。事实上,process
甚至不包含文件的路径appearantly(我发现这是通过打印它到一个textarea和复制文本到一个json文件)。我看到一个帖子的解决方案说,require("electron").remote.process.argv[1]
将工作,但过了一段时间,我意识到这是一样的。
1条答案
按热度按时间acruukt91#
文件路径确实在
process.argv
中,除了你必须从main进程而不是preload获取它。我在文档中找不到任何提到args
的值在进程之间是不同的,但在open-file
文档中提到(强调我的):在Windows上,您必须解析
process.argv
(在主进程中)以获取文件路径。另外,如果你不想依赖参数的索引来获取路径,并且你知道你正在寻找的文件的扩展名,你可以使用
find
,例如:字符串