Electron -如何指向asar生成的应用程序外部的路径

rqqzpn5f  于 9个月前  发布在  Electron
关注(0)|答案(1)|浏览(210)

我有一个电子应用程序,将使用一个节点脚本,将运行一个cron每周一次执行.我需要执行一个python文件,是在一个名为dependencies的文件夹中,它的创建时,我做的构建使用npm run electron:build .我不使用该应用程序的安装程序,但我运行的exe文件是在win-unpacked文件夹中,将包含应用程序.如果我运行开发模式所有的工作很好,python脚本文件的执行没有问题,但在生产应用程序中,应用程序将无法识别依赖文件夹,如果它存在的话。我如何才能正确指向从构建过程创建的asar之外的文件夹?

ipcMain.on('saveExtractionData', (event, ...args) => {
//Other code stuff ...  
    if( !fs.existsSync( outputDir ) ){
        console.log(`Output folder not exist. Creating folder at: ${outputDir}`);
        fs.mkdir( outputDir, (err) => {
            if( err ){
                throw err
            }
// The file and the folder exists but electron seems not recognize it with this path
            fs.readFile('dependencies/cleaner.py', (error, buffer) => {
                if(error){
                    throw error
                }
                fs.writeFileSync( path.join(outputDir, 'cleaner.py'), buffer)
            })
            fs.writeFile( path.join(outputDir, `${filename}.xlsx`), fileBuffer, (error) => {
                if( error ){
                    throw error
                }
                console.log(`Writing file ${filename}.xlsx into ${outputDir} folder...`);
                event.sender.send('resetExtractionData')
            })
        })
    } else { 
        fs.writeFile( path.join(outputDir, `${filename}.xlsx`), fileBuffer, (error) => {
            if( error ){
                console.log(error)
                throw error
            }
            console.log(`Writing file ${filename}.xslx into ${outputDir} folder...`)
            event.sender.send('resetExtractionData')
        })
    }
})

字符串

acruukt9

acruukt91#

Electron的apphttps://www.electronjs.org/docs/latest/api/app)模块可以成为你的朋友。它包含一个名为getPath()的帮助函数,可以返回各种路径。
在您的情况下,app.getPath('exe')将是最合适的,因为它返回应用程序可执行文件的名称和路径。如果您将其与path.parse().dir合并结合使用,则可以检索实际路径。
举例来说:

const app = require('electron');
const path = require('path');
const fs = require('fs');

fs.readFile(path.join(path.parse(app.getPath('exe')).dir, 'dependencies', 'cleaner.py'), (error, buffer) => {});

字符串

相关问题