__dirnameは付けるけど、file://は付けない。win.loadURL("file://${__dirname}/index.html");が近くにあるから騙されがち。
参考「Cannot get BrowserWindow icon to work #563 - electron」
mainWindow = new BrowserWindow({
...略...
'icon': __dirname + '/../images/icon.png',
...略...
});