How do I open a folder in explorer onclick of a button in my electronjs application? I got it to work by making it where it is executed at program start in the main. But id i make it a function and call in it with onclick from HTML button it doesn’t work. Ive tried form renderer, main, and preload. I’m pretty knew to electron and node, so i have a feeling that maybe I’m not understanding the processes correctly?
default.html
<button name="SystemMenu-Button" id="SystemMenu-Button" class="SystemMenu-Button" onclick="openDocuments()">
Documents
<i name="SystemMenu-ButtonIcon" id="SystemMenu-ButtonIcon" class="fa-solid fa-folder-open fa-fw"></i>
</button>
default.main.js – works but not what I need
const { app, BrowserWindow, shell } = require('electron');
const path = require('node:path');
const documentsPath = 'E:/';
shell.openPath(documentsPath);
default.main.js – wont work but it need it to
const { app, BrowserWindow, shell } = require('electron');
const path = require('node:path');
const documentsPath = 'E:/';
function openDocuments() {
shell.openPath(documentsPath);
}
1
As you’re using Windows based system I’ll recommend the following:
import child_process from 'node:child_process';
const WindowsDocumentsPath = '%HomeDrive%' + '%HomePath%' + '/Documents';
child_process.exec(`start ${WindowsDocumentsPath}`);
This will instance a new child process for your console (cmd/powershell) and then just single call the start
command from your console.
Note that in Windows you can use the wildcard variables to access common dynamic locations:
%AppData%/AppName
points to where your electron browser data is stored.
%HomeDrive%%HomePath%/Documents
points to the current user My Documents
directory (by default, if not changed).
%Public%
points to the windows public user directory (usually C:UsersPublic
.
PS.: Beware at what user your electron is running under… If you shift-click and Run as...
your electron, then even if you’re under your user credentials, the electron will be at the credentials you selected it to run as (you must enter the password of the selected user, even the Administrator). In this case, the code above would open the documents directory of the selected user, not the active user’s.
5