gpt4 book ai didi

node.js - 使用shell.openItem()在asar文件中打开文件

转载 作者:行者123 更新时间:2023-12-03 12:36:01 31 4
gpt4 key购买 nike

我有一个使用app.asar文件的 Electron 应用程序。我希望能够打开默认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中打开文件。

最佳答案

Application Packaging的文档中

An asar archive is a simple tar-like format that concatenates files into a single file. Electron can read arbitrary files from it without unpacking the whole file.



只有Electron可以访问这些文件,Excel和其他应用程序根本无法处理asar文件。

您可以将文件从asar存档复制到系统的temp文件夹,然后从那里打开它。像这样:

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路径中。

关于node.js - 使用shell.openItem()在asar文件中打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952845/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com