Kaydet (Commit) debfa655 authored tarafından Emincan Özcan's avatar Emincan Özcan

--no-sandbox fix/workaround

üst d8f91c0e
// Application is needs --no-sandbox parameter to work on Pardus.
// Electron's window sandbox options are not works for that case.
// `sysctl kernel.unprivileged_userns_clone=1` command is a one solution proposal - but it forces user to use shell. (It is default settings in Ubuntu btw.)
// Another solution proposal is making chrome-sandbox 4755 but it is not for me - or I did something wrong.
// My solution is adding mini extra layer before application which runs application with --no-sandbox parameter.
// (afterPack hook is running between creating files and packaging them. After creating files, I am manipulating the files.)
// It works but I dont that it is not a good solution btw.
const { chdir } = require("process");
const { spawn } = require("child_process");
async function exec(cmd, args) {
const child = spawn(cmd, args, { shell: true });
redirectOutputsToStd(child);
await new Promise((resolve) => {
child.once("close", () => resolve());
});
}
function redirectOutputsToStd(child) {
const stdout = (data) => process.stdout.write(data.toString());
const stderr = (data) => process.stderr.write(data.toString());
child.stdout && child.stdout.on("data", stdout);
child.stderr && child.stderr.on("data", stderr);
child.once("close", () => {
child.stdout && child.stdout.off("data", stdout);
child.stderr && child.stderr.off("data", stderr);
});
}
exports.default = async function (context) {
const dirToBack = process.cwd();
chdir(context.appOutDir);
await exec("mv pardus-kataliz pardus-kataliz.bin");
const runner = `#!/bin/bash
"\${BASH_SOURCE%/*}"/pardus-kataliz.bin "$@" --no-sandbox`;
await exec(`echo '${runner}' > pardus-kataliz`);
await exec("chmod +x pardus-kataliz");
chdir(dirToBack);
};
{
"name": "pardus-kataliz",
"version": "0.3.2",
"version": "0.3.3",
"author": "Emincan Ozcan <emincan@emincanozcan.com>",
"homepage": "https://github.com/emincanozcan/kataliz",
"private": true,
......@@ -42,6 +42,7 @@
"eslint-plugin-vue": "^7.0.0",
"postcss": "^7",
"prettier": "^2.2.1",
"process": "^0.11.10",
"tailwindcss": "npm:@tailwindcss/postcss7-compat",
"vue-cli-plugin-electron-builder": "~2.0.0-rc.6",
"vue-svg-loader": "^0.17.0-beta.2"
......
......@@ -6,13 +6,13 @@
/>
<div
v-if="IS_ELECTRON && installationOpen"
class="bg-gray-900 min-h-screen flex items-center justify-center"
class="bg-gray-900 flex items-center justify-center"
>
<Installation @close="onInstallationEnd" />
</div>
<div
v-else-if="loading"
class="bg-gray-900 min-h-screen flex items-center justify-center"
class="bg-gray-900 h-screen flex items-center justify-center"
>
<Loading loading-message="Uygulama Listesi Yükleniyor" />
</div>
......
......@@ -24,7 +24,8 @@ async function createWindow() {
webPreferences: {
// Use pluginOptions.nodeIntegration, leave this alone
// See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
nodeIntegration: true,
sandbox: false,
preload: path.join(__dirname, "preload.js"),
},
});
......@@ -59,7 +60,6 @@ app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
app.commandLine.appendSwitch("force-color-profile", "srgb");
app.commandLine.appendSwitch("--no-sandbox");
app.on("ready", async () => {
if (isDevelopment && !process.env.IS_TEST) {
// Install Vue Devtools
......
<template>
<div
class="w-full h-full px-8 py-8 text-gray-100 flex justify-center items-center flex-col bg-gray-800"
class="w-full min-h-screen h-full px-8 py-8 text-gray-100 flex justify-center items-center flex-col bg-gray-800"
>
<h2 class="text-2xl font-bold text-pardus-yellow mb-4">
Kurulumlar Gerçekleştiriliyor.
......
......@@ -4,6 +4,7 @@ module.exports = {
preload: "preload.js",
builderOptions: {
productName: "Pardus Kataliz",
afterPack: "./build/afterpack.js",
linux: {
publish: ["github"],
target: ["AppImage", "deb"],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment