mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-03-02 04:02:13 +01:00
This adds a new app icon for windows that is less Mac-like and it also fixes a bug in the electron-builder.config.cjs file which would cause the packaging step to crash if it was missing the signing env vars, rather than just not signing the package. 
119 lines
4.1 KiB
JavaScript
119 lines
4.1 KiB
JavaScript
const { Arch } = require("electron-builder");
|
|
const pkg = require("./package.json");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const windowsShouldSign = !!process.env.SM_CODE_SIGNING_CERT_SHA1_HASH;
|
|
|
|
/**
|
|
* @type {import('electron-builder').Configuration}
|
|
* @see https://www.electron.build/configuration/configuration
|
|
*/
|
|
const config = {
|
|
appId: pkg.build.appId,
|
|
productName: pkg.productName,
|
|
executableName: pkg.productName,
|
|
artifactName: "${productName}-${platform}-${arch}-${version}.${ext}",
|
|
generateUpdatesFilesForAllChannels: true,
|
|
npmRebuild: false,
|
|
nodeGypRebuild: false,
|
|
electronCompile: false,
|
|
files: [
|
|
{
|
|
from: "./dist",
|
|
to: "./dist",
|
|
filter: ["**/*", "!bin/*", "bin/wavesrv.${arch}*", "bin/wsh*"],
|
|
},
|
|
{
|
|
from: ".",
|
|
to: ".",
|
|
filter: ["package.json"],
|
|
},
|
|
"!node_modules", // We don't need electron-builder to package in Node modules as Vite has already bundled any code that our program is using.
|
|
],
|
|
directories: {
|
|
output: "make",
|
|
},
|
|
asarUnpack: [
|
|
"dist/bin/**/*", // wavesrv and wsh binaries
|
|
"dist/docsite/**/*", // the static docsite
|
|
],
|
|
mac: {
|
|
target: [
|
|
{
|
|
target: "zip",
|
|
arch: ["universal", "arm64", "x64"],
|
|
},
|
|
{
|
|
target: "dmg",
|
|
arch: ["universal", "arm64", "x64"],
|
|
},
|
|
],
|
|
category: "public.app-category.developer-tools",
|
|
minimumSystemVersion: "10.15.0",
|
|
mergeASARs: true,
|
|
singleArchFiles: "dist/bin/wavesrv.*",
|
|
},
|
|
linux: {
|
|
artifactName: "${name}-${platform}-${arch}-${version}.${ext}",
|
|
category: "TerminalEmulator",
|
|
executableName: pkg.name,
|
|
target: ["zip", "deb", "rpm", "AppImage", "pacman"],
|
|
synopsis: pkg.description,
|
|
description: null,
|
|
desktop: {
|
|
Name: pkg.productName,
|
|
Comment: pkg.description,
|
|
Keywords: "developer;terminal;emulator;",
|
|
category: "Development;Utility;",
|
|
},
|
|
executableArgs: ["--enable-features", "UseOzonePlatform", "--ozone-platform-hint", "auto"], // Hint Electron to use Ozone abstraction layer for native Wayland support
|
|
},
|
|
deb: {
|
|
afterInstall: "build/deb-postinstall.tpl",
|
|
},
|
|
win: {
|
|
target: ["nsis", "msi", "zip"],
|
|
signtoolOptions: windowsShouldSign && {
|
|
signingHashAlgorithms: ["sha256"],
|
|
publisherName: "Command Line Inc",
|
|
certificateSubjectName: "Command Line Inc",
|
|
certificateSha1: process.env.SM_CODE_SIGNING_CERT_SHA1_HASH,
|
|
},
|
|
},
|
|
appImage: {
|
|
license: "LICENSE",
|
|
},
|
|
publish: {
|
|
provider: "generic",
|
|
url: "https://dl.waveterm.dev/releases-w2",
|
|
},
|
|
beforePack: () => {
|
|
const staticSourcePath = process.env.STATIC_DOCSITE_PATH;
|
|
const staticDestPath = "dist/docsite";
|
|
if (staticSourcePath) {
|
|
console.log(`Static docsite path is specified, copying from "${staticSourcePath}" to "${staticDestPath}"`);
|
|
fs.cpSync(staticSourcePath, staticDestPath, { recursive: true });
|
|
}
|
|
},
|
|
afterPack: (context) => {
|
|
// This is a workaround to restore file permissions to the wavesrv binaries on macOS after packaging the universal binary.
|
|
if (context.electronPlatformName === "darwin" && context.arch === Arch.universal) {
|
|
const packageBinDir = path.resolve(
|
|
context.appOutDir,
|
|
`${pkg.productName}.app/Contents/Resources/app.asar.unpacked/dist/bin`
|
|
);
|
|
|
|
// Reapply file permissions to the wavesrv binaries in the final app package
|
|
fs.readdirSync(packageBinDir, {
|
|
recursive: true,
|
|
withFileTypes: true,
|
|
})
|
|
.filter((f) => f.isFile() && f.name.startsWith("wavesrv"))
|
|
.forEach((f) => fs.chmodSync(path.resolve(f.parentPath ?? f.path, f.name), 0o755)); // 0o755 corresponds to -rwxr-xr-x
|
|
}
|
|
},
|
|
};
|
|
|
|
module.exports = config;
|