我的Electron App位于哪里

时间:2017-06-08 02:03:45

标签: node.js electron filepath

我有一个电子应用程序,它也可以对同一目录中的文件进行操作。这些不是用户选择的文件,也不是电子应用程序中捆绑的文件,但我需要引用它们

例如:

  • /Users/test/Documents/myapp.app
  • /Users/test/Documents/example.zip

我需要知道该应用程序的位置,例如:

  • /用户/测试/文件

但是当test.app被运行时,我得到:

  • /Users/test/Documents/myapp.app/Contents/Resources/app /

尝试访问/Users/test/Documents/myapp.app/Contents/Resources/app/test.zip或使用相对路径/test.zip时导致错误。

在这种情况下,我如何可靠地访问example.zip?请注意,我无法将其与我的应用程序捆绑在一起,它被其他人放置在那里,所以移动它不是一个选项,而且它是我希望在那里的文件。

4 个答案:

答案 0 :(得分:1)

一位朋友和我查看了Atom是如何做到的并且达到了这个解决方案:

function getAppRoot() {
  if ( process.platform === 'win32' ) {
    return path.join( app.getAppPath(), '/../../../' );
  }  else {
    return path.join( app.getAppPath(), '/../../../../' );
  }
}

答案 1 :(得分:0)

我认为app.getPath('exe')process.execPath正是您要找的。它们都为您提供了当前使用的可执行文件的路径。

编辑:查看app.getPath()的文档以获取所有不同文件夹的路径(例如家庭,appdata,文档等)

答案 2 :(得分:0)

你在哪里运行Electron App?如果它在'Documents'(我假设Windows)下运行,您可以将文档传递给app.getPath,如下所示:app.getPath('documents')

如果从渲染过程中调用此方法,则可能必须导入remote并在渲染过程remote.app.getPath('documents');中执行以下操作。

这个electron doc会更好地解释您可以传递的路径选项。

答案 3 :(得分:-1)

您可以使用background: url('../media/city_pictures.jpg'); 功能列出特定目录中的所有文件(可能是您的应用程序或任何地方)。您可以从代码中创建一个目录以放置所有新文件,这样您就可以更容易地将它们正确列出来处理。

fs.readdir

How do you get a list of the names of all files present in a directory in Node.js?