使用 NodeJS 文件系统 (fs) 复制 asar 文件

Ada*_*ich 2 fs node.js asar

我的目标是使用 NodeJS 的文件系统复制 .asar 文件。我有一个文件路径,需要将 .asar 文件复制到另一个目的地。

文件路径示例:

C:/Users/redacted/Documents/ExampleElectronApp/example.asar
Run Code Online (Sandbox Code Playgroud)

我需要将此文件(存档)复制到另一个目录。

以前我使用步行和复制功能复制了它,但它最终创建了一个名为 filename.asar 的目录,而不是名为 filename.asar 的实际文件。此功能似乎可以正确地处理所有其他文件和文件夹(.asar 存档除外)。

我尝试过的

1:使用读写流复制存档。

var fs = require('fs');
fs.createReadStream('C:/Users/redacted/Documents/redacted/node_modules/electron-prebuilt/dist/resources/default_app.asar').pipe(fs.createWriteStream('C:/Users/redacted/Desktop/test.asar'));
Run Code Online (Sandbox Code Playgroud)

这最终给出了一个错误:错误#1

它说找不到此文件,但我可以向您保证,复制源路径确实会引导我找到 .asar 文件。

2:使用asar需求创建包。

var fs = require('fs');
var asar = require('asar');

asar.createPackage('C:/Users/redacted/Documents/redacted/node_modules/electron-prebuilt/dist/resources/default_app.asar', 'C:/Users/redacted/Desktop/test.asar', function() {
  console.log('done.');
})
Run Code Online (Sandbox Code Playgroud)

虽然此函数确实记录了正确的“完成”消息,但复制似乎不成功。目标目录中不显示新文件或文件夹。

谢谢大家。

小智 5

也许你可以在 fs 模块中禁用对 asar 的支持,如下所示:

process.noAsar = true
Run Code Online (Sandbox Code Playgroud)

这是文档:https://electronjs.org/docs/tutorial/application-packaging#treating-an-asar-archive-as-a-normal-file