首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell.openItem()在asar存档中打开文件

使用shell.openItem()在asar存档中打开文件
EN

Stack Overflow用户
提问于 2017-07-06 15:13:03
回答 1查看 1.9K关注 0票数 0

我有一个使用app.asar文件的电子应用程序。我希望能够打开默认Windows应用程序(即Excel)中的asar文件中的文件(.xlsx)。我试过了

代码语言:javascript
复制
let xlsx = path.join(__dirname + '/path/to/app.asar/path/to/file');
shell.openItem(xlsx);

但是它不起作用(没有错误,文件没有打开)。

我可以用fs读取文件。

代码语言:javascript
复制
let xlsx = path.join(__dirname + '/path/to/app.asar/path/to/file');
fs.readFileSync(xlsx);

但我无法让文件在Excel中打开。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 19:25:46

来自应用包装的文档

asar存档是一种简单的tar格式,它将文件连接到一个文件中。电子可以读取任意文件,而不需要解压整个文件。

只有电子才能访问这些文件,Excel等应用程序根本无法处理asar档案。

您可以将文件从asar存档复制到系统的临时文件夹,然后从那里打开它。如下所示:

代码语言:javascript
复制
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路径中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44952845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档