我有一个使用app.asar文件的电子应用程序。我希望能够打开默认Windows应用程序(即Excel)中的asar文件中的文件(.xlsx)。我试过了
let xlsx = path.join(__dirname + '/path/to/app.asar/path/to/file');
shell.openItem(xlsx);但是它不起作用(没有错误,文件没有打开)。
我可以用fs读取文件。
let xlsx = path.join(__dirname + '/path/to/app.asar/path/to/file');
fs.readFileSync(xlsx);但我无法让文件在Excel中打开。
发布于 2017-07-06 19:25:46
来自应用包装的文档
asar存档是一种简单的tar格式,它将文件连接到一个文件中。电子可以读取任意文件,而不需要解压整个文件。
只有电子才能访问这些文件,Excel等应用程序根本无法处理asar档案。
您可以将文件从asar存档复制到系统的临时文件夹,然后从那里打开它。如下所示:
const fs = require('fs')
const path = require('path')
const {shell, app} = require('electron')
let xlsx = path.join(__dirname,'/path/to/app.asar/path/to/file')
let xlsxtmp = üath.join(app.getPath('temp', 'file')
let ws = fs.createWriteStream(xlsxtmp)
fs.createReadStream(xlsx).pipe(ws)
ws.on('finish', () => {
shell.openItem(xlsxtmp);
}另一种选择是不将xlsx打包到存档中,而是将其下载到userData路径中。
https://stackoverflow.com/questions/44952845
复制相似问题