下载完成后运行文件

3

我对node-webkit非常陌生。我正在使用以下代码下载文件。当文件下载完成后,我该如何自动运行该文件?

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

var file = fs.createWriteStream("update_setup.exe");
var request = https.get(url + "/appdata/update_setup.exe", function (response) {
  response.pipe(file);
});
1个回答

6
只需使用可写流的close事件并生成一个子进程。一旦响应完成传输到流中,事件将触发。
var https = require('https');
var fs = require('fs');
var exec = require('child_process').exec;

var file = fs.createWriteStream('update_setup.exe');
var request = https.get(path, function(res) {
  res.pipe(file);
});

file.on('close', function() {
  exec('update_setup.exe', function(err, stdout, stderr) {
    // output from starting
  });
});

谢谢,这个有效。一旦我的应用程序被打包,这个文件会下载到哪里? - user2387226
文件将下载到您在fs.createWriteStream()中指定的路径。如果您没有指定任何路径,则会下载执行脚本的目录。 - hexacyanide
太棒了,谢谢!能否显示下载进度条? - user2387226
如果你想要显示一个进度条,你需要使用 res.on('data', function(chunk) {}); 并将接收到的数据量与从服务器接收到的 Content-Length 头进行比较。 - hexacyanide
1
恭喜获得无名英雄徽章! :) - jamesmortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接