electron-vue打包后static中的静态文件访问不到?

新手上路,请多包涵

1、问题1:在electron-vue中的static文件夹下放了一个7za.exe文件,希望在electron中使用childprocess.exec来调用,在npm run dev环境下使用path.join(__static,"7za.exe")可以访问到,但是打包后,这里的static中的7za.exe文件会被打包放到哪里了呢?(把包使用的是electron-vue自带的electron-builder。)

代码:
//这里是想使用nodejs的进程调用.exe文件。
childprocess.exec(path.join(__static,"7za.exe")(err,stdout,stderr)=>{

if(err){
    console.log(err);
    return false;
}
console.log(stdout);

});

2、问题2:在electron中从一个指定地址下载一个.zip文件,我如果想把文件放到打包后的应用程序根目录下,下载时使用item.setSavePath("路径"+\\${item.getFilename()});设置下载位置时,路径该怎么写呢?(还是说保存到其它位置)
mainWindow.webContents.session.on('will-download', (event, item, webContents) => {

//如果要保存到打包后的应用程序根目录下,这里的保存路径怎么写呢?
item.setSavePath(保存路径+`\\${item.getFilename()}`);
item.on("updated",(event,state)=>{
  const totalBytes=item.getTotalBytes();
  mainWindow.setProgressBar(item.getReceivedBytes()/totalBytes);
  mainWindow.webContents.send("downloadTips",`下载中: ${Math.round(item.getReceivedBytes()/totalBytes*100)}%`);
  if(state=="interrupted"){
    console.log("下载中断,但可以恢复");
  }else if(state=="progressing"){
    console.log("暂停下载");
  }else{
    console.log(`下载中: ${item.getReceivedBytes()}`)
    
  }
})
阅读 12.6k
1 个回答

electron-builder打包后,会生成一个.asar文件,是属于只读的,而且打包后发现__static并找不到静态文件,可以手动path.join(__dirname, '/static')来寻找静态文件
如果需要操作文件的话,需要存放在userData 下,或者设置asar:false

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏