在实际应用场景中,经常有需要获取当前执行的文件的信息,比如路径或者文件名称等等。本文就简要的说明一下获取这些信息的函数方法,至于这些信息如何分析使用,这个就看各位的需求了。

苏南大叔:electron如何获取当前主程序的路径,如何获取主程序名称 - electron-getpath
electron如何获取当前主程序的路径,如何获取主程序名称(图6-1)

在开始本文的正文之前,苏南大叔希望先和大家说明一下:本文的这几个函数,在调试模式下以及在打包之后的生产模式下,所得到的结果区别是很大的。所以,大家都要看到一件事物的两面性。

本文测试环境:win10/mac/centoselectron@4.0.1electron-quick-start

前提代码

本文的代码前提,就是引入app变量:

const {app} = require('electron')

因为所有的函数都是定义在app上面的,所以,大家一定要注意:在主进程中引入app

获取main.js所在路径

因为大家都知道electron的背后,就是node。所以,主进程或者说是package.json里面的main入口地址,这个路径也是一个非常重要路径。获得的方式就是:

app.getAppPath()

苏南大叔:electron如何获取当前主程序的路径,如何获取主程序名称 - result-centos
electron如何获取当前主程序的路径,如何获取主程序名称(图6-2)

那么,下面的几个值,是测试得出的几个结果:

mac

/code/electron/1/electron-quick-start-master
/Volumes/electron-quick-start 1.0.0/electron-quick-start.app/Contents/Resources/app.asar

win10:

Z:\code\electron\1\electron-quick-start-master-win
Z:\code\electron\1\electron-quick-start-master-win\dist\win-unpacked\resources\app.asar

centos:

/media/psf/AllFiles/code/electron/1/electron-quick-start-master-centos
/tmp/.mount_electris7iYy/resources/app.asar

获得当前执行文件名

仔细观察这个返回值的结果,调试模式下和生产模式下,返回值是区别非常明显的哦。调试模式下得到的是electron,而生产模式下,则是package.json里面的name

app.getName()

下面的是测试结果,任意平台,无论调试模式还是生产模式下,都是package.json里面的name值:

electron-quick-start

苏南大叔:electron如何获取当前主程序的路径,如何获取主程序名称 - result-win10
electron如何获取当前主程序的路径,如何获取主程序名称(图6-3)

获得当前可执行文件的全路径

获得当前可执行文件的全路径,其实就是上述app.getName()这个结果的全路径值。获取的方式是:

app.getPath("exe")

当然,对于这里的参数exe,可以这么理解,就是个标识符。因为还可以传个desktop之类的,获得桌面的路径。那么这么类比的情况下,就可以知道这个exe的身份和角色了,和大家想象的稍稍是有些不同的。就是个范名词,在centos或者mac下面,也是有意义的,代表着可执行主程序。

更多可用参数,可以点击:

苏南大叔:electron如何获取当前主程序的路径,如何获取主程序名称 - result-mac
electron如何获取当前主程序的路径,如何获取主程序名称(图6-4)

下面的是相关测试结果:
mac:

/code/electron/1/electron-quick-start-master/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron
/Volumes/electron-quick-start 1.0.0/electron-quick-start.app/Contents/MacOS/electron-quick-start

win10:

Z:\code\electron\1\electron-quick-start-master-win\node_modules\electron\dist\electron.exe
Z:\code\electron\1\electron-quick-start-master-win\dist\win-unpacked\electron-quick-start.exe

centos:

/media/psf/AllFiles/code/electron/1/electron-quick-start-master-centos/node_modules/electron/dist/electron
/tmp/.mount_electris7iYy/electron-quick-start

测试专用代码

因为要测试在调试模式和生产模式下的不同结果,所以,使用sharedObject将主进程中获得的数据,共享到渲染进程中,并最终显示出来。

main.js:

newsn.net:这里是【评论】可见内容

苏南大叔:electron如何获取当前主程序的路径,如何获取主程序名称 - code-main
electron如何获取当前主程序的路径,如何获取主程序名称(图6-5)

index.html:

<textarea id="t1" style="width:600px;height:360px;"></textarea>
<script>
const remote = require('electron').remote
const data = remote.getGlobal('sharedObject');
console.log(data);
var p1 = "getAppPath():" + data.p1;
var p2 = "getName():" + data.p2;
var p3 = "getPath(\"exe\"):" + data.p3;
document.getElementById("t1").value=p1+"\r"+p2+"\r"+p3;
</script>

苏南大叔:electron如何获取当前主程序的路径,如何获取主程序名称 - code-renderer
electron如何获取当前主程序的路径,如何获取主程序名称(图6-6)

测试代码里面,使用了global的概念,用于从主进程传递数据到渲染进程。相关链接为:

总结

本文的内容稍稍水了一些,不过作为相关概念函数的对比总结,还是比较有用的。仔细体会一下返回值结果,您会有所收获。更多electron的相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   electron

本站的忠实读者小伙伴,正在阅读下面这些文章: