update eaf package
This commit is contained in:
104
lisp/emacs-application-framework/install-eaf-win32.js
Normal file
104
lisp/emacs-application-framework/install-eaf-win32.js
Normal file
@@ -0,0 +1,104 @@
|
||||
const { execSync } = require("child_process");
|
||||
const path = require("path");
|
||||
const http = require("http");
|
||||
const https = require("https");
|
||||
const fs = require("fs");
|
||||
const crypto = require("crypto");
|
||||
const os = require("os");
|
||||
const url = require("url");
|
||||
|
||||
const nodeApps = ["js-video-player", "markdown-previewer", "mermaid", "terminal"];
|
||||
|
||||
function getAppPath(name) {
|
||||
return path.join("app", name);
|
||||
}
|
||||
|
||||
function installNodeDep() {
|
||||
for (let i = 0; i < nodeApps.length; i++) {
|
||||
execSync("npm install", {
|
||||
cwd: getAppPath(nodeApps[i]),
|
||||
stdio: [0, 1, 2],
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const pythonDeps = [
|
||||
"pyqt5",
|
||||
"pyqt5-sip",
|
||||
"pyqtwebengine",
|
||||
"pymupdf",
|
||||
"qrcode",
|
||||
"markdown",
|
||||
"epc",
|
||||
"retrying"
|
||||
];
|
||||
|
||||
function installPythonDep() {
|
||||
const installCmd = "pip install " + pythonDeps.join(" ");
|
||||
console.log(installCmd);
|
||||
execSync(installCmd, {
|
||||
stdio: [0, 1, 2],
|
||||
});
|
||||
}
|
||||
|
||||
function downloadFile(urlStr, sha256hash) {
|
||||
const u = url.parse(urlStr);
|
||||
let handler = http;
|
||||
if (u.protocol === "https:") {
|
||||
handler = https;
|
||||
}
|
||||
const hasher = crypto.createHash("sha256");
|
||||
const name = path.posix.basename(u.pathname);
|
||||
const file = path.join(os.tmpdir(), name);
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.open(file, "w", (err, fd) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
handler.get(u, (res) => {
|
||||
res.on("data", (chunk) => {
|
||||
fs.write(fd, chunk, (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
});
|
||||
hasher.update(chunk);
|
||||
});
|
||||
res.on("end", () => {
|
||||
const hash = hasher.digest("hex");
|
||||
if (hash !== sha256hash) {
|
||||
reject(new Error("download failed: hash mismatch"));
|
||||
return
|
||||
}
|
||||
resolve(file);
|
||||
});
|
||||
}).on("error", (err) => {
|
||||
reject(err)
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const kliteCodecPackURL = "https://files3.codecguide.com/K-Lite_Codec_Pack_1595_Basic.exe";
|
||||
const kliteCodecPackHash = "73772a2a0e8f9bc4ec4ca35578608cda76847e563613d1600bd5bf659a908559";
|
||||
|
||||
async function installCodecPack() {
|
||||
const installer = await downloadFile(kliteCodecPackURL, kliteCodecPackHash);
|
||||
const installCmd = `${installer} /verysilent /nocancel /norestart`;
|
||||
console.log("installing k-lite-codec-pack basic ...");
|
||||
execSync(installCmd);
|
||||
}
|
||||
|
||||
installNodeDep();
|
||||
|
||||
installPythonDep();
|
||||
|
||||
(async function() {
|
||||
try {
|
||||
await installCodecPack();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user