我有一个使用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中打开该文件。
答案 0 :(得分:0)
asar存档是一种简单的类似tar的格式,可将文件连接到一个文件中。 Electron可以从中读取任意文件而无需解压缩整个文件。
只有Electron可以访问这些文件,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
路径中。