diff --git a/scripts/expand-windows-installer.mjs b/scripts/expand-windows-installer.mjs index 124de26..120e37c 100644 --- a/scripts/expand-windows-installer.mjs +++ b/scripts/expand-windows-installer.mjs @@ -10,50 +10,56 @@ import { spawnSync } from "node:child_process"; import { fileURLToPath } from "node:url"; const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const electrobunDir = path.join(rootDir, "node_modules/electrobun"); function findZstdDecompressCommand() { - const systemZstd = spawnSync("zstd", ["--version"], { encoding: "utf8" }); + const spawnOpts = process.platform === "win32" ? { shell: true } : {}; + + const systemZstd = spawnSync("zstd", ["--version"], { + encoding: "utf8", + ...spawnOpts, + }); if (systemZstd.status === 0) { - return { command: "zstd", args: (inputPath, outputPath) => [ - "-d", - "-f", - "-o", - outputPath, - inputPath, - ] }; + return { + command: "zstd", + args: (inputPath, outputPath) => [ + "-d", + "-f", + "-o", + outputPath, + inputPath, + ], + }; } const hostArch = process.arch === "arm64" ? "arm64" : "x64"; const candidates = [ - path.join( - rootDir, - "node_modules/electrobun/dist-win-x64/zig-zstd", - hostArch, - "zig-zstd.exe", - ), - path.join( - rootDir, - "node_modules/electrobun/dist-win-x64/zig-zstd", - "x64", - "zig-zstd.exe", - ), - path.join(rootDir, "node_modules/electrobun/dist-win-x64", "zig-zstd"), + path.join(electrobunDir, `dist-win-${hostArch}`, "zig-zstd.exe"), + path.join(electrobunDir, "dist-win-x64", "zig-zstd.exe"), + path.join(electrobunDir, `dist-macos-${hostArch}`, "zig-zstd"), + path.join(electrobunDir, "dist-macos-x64", "zig-zstd"), + path.join(electrobunDir, "dist-win-x64", "zig-zstd", "x64", "zig-zstd.exe"), + path.join(electrobunDir, "dist-win-x64", "zig-zstd", "arm64", "zig-zstd.exe"), + path.join(electrobunDir, "vendors", "zig-zstd", "x64", "zig-zstd.exe"), + path.join(electrobunDir, "vendors", "zig-zstd", "arm64", "zig-zstd.exe"), ]; for (const candidate of candidates) { - if (existsSync(candidate)) { - return { - command: candidate, - args: (inputPath, outputPath) => [ - "decompress", - "-i", - inputPath, - "-o", - outputPath, - "--no-timing", - ], - }; + if (!existsSync(candidate)) { + continue; } + + return { + command: candidate, + args: (inputPath, outputPath) => [ + "decompress", + "-i", + inputPath, + "-o", + outputPath, + "--no-timing", + ], + }; } return null; @@ -69,6 +75,7 @@ function decompressTarZst(inputPath, outputPath) { const result = spawnSync(zstd.command, zstd.args(inputPath, outputPath), { stdio: "inherit", + shell: process.platform === "win32", }); if (result.status !== 0) { @@ -94,6 +101,7 @@ export function expandWindowsAppFromArchive(setupArchivePath, parentDir) { const extractTar = spawnSync("tar", ["-xf", tarPath, "-C", workDir], { stdio: "inherit", + shell: process.platform === "win32", }); if (extractTar.status !== 0) {