diff --git a/Journal.App/scripts/tauri-prebuild.mjs b/Journal.App/scripts/tauri-prebuild.mjs index 170ec2b..e7bbf68 100644 --- a/Journal.App/scripts/tauri-prebuild.mjs +++ b/Journal.App/scripts/tauri-prebuild.mjs @@ -1,5 +1,5 @@ import { spawnSync } from "node:child_process"; -import { copyFileSync, existsSync, mkdirSync } from "node:fs"; +import { copyFileSync, cpSync, existsSync, mkdirSync, readdirSync, rmSync, statSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; @@ -51,10 +51,10 @@ function publishProject(projectPath, runtime) { runtime, "--self-contained", "-p:PublishSingleFile=true", - "-p:IncludeNativeLibrariesForSelfExtract=true", - "-p:IncludeAllContentForSelfExtract=true", + "-p:IncludeNativeLibrariesForSelfExtract=false", "-p:RestoreIgnoreFailedSources=true", "-p:NuGetAudit=false", + "-p:ErrorOnDuplicatePublishOutputFiles=false", "-o", publishOutputDir, ]; @@ -72,17 +72,47 @@ function publishProject(projectPath, runtime) { } } -function stageBinary(fileName) { +function stageOutput(fileName) { const publishedBinary = path.join(publishOutputDir, fileName); - const bundledBinary = path.join(tauriBinDir, fileName); if (!existsSync(publishedBinary)) { throw new Error(`Published binary not found: ${publishedBinary}`); } mkdirSync(tauriBinDir, { recursive: true }); - copyFileSync(publishedBinary, bundledBinary); - console.log(`Staged binary for Tauri: ${bundledBinary}`); + + const skipExts = new Set([".pdb", ".metal"]); + for (const entry of readdirSync(publishOutputDir)) { + const ext = path.extname(entry).toLowerCase(); + if (skipExts.has(ext)) continue; + const src = path.join(publishOutputDir, entry); + const dest = path.join(tauriBinDir, entry); + if (entry === "runtimes") { + // Only copy the runtimes subdirectory matching the target platform + stageRuntimes(src, dest, runtime); + } else if (statSync(src).isDirectory()) { + cpSync(src, dest, { recursive: true, force: true }); + } else { + copyFileSync(src, dest); + } + } + console.log(`Staged sidecar + native libs to: ${tauriBinDir}`); +} + +function stageRuntimes(runtimesDir, destDir, rid) { + // Only copy the subdirectory that matches our runtime identifier (e.g. win-x64) + const ridDir = path.join(runtimesDir, rid); + if (!existsSync(ridDir)) { + console.warn(`No runtimes found for ${rid}, skipping runtimes/`); + return; + } + // Remove stale runtimes from previous builds + if (existsSync(destDir)) { + rmSync(destDir, { recursive: true, force: true }); + } + const destRidDir = path.join(destDir, rid); + cpSync(ridDir, destRidDir, { recursive: true, force: true }); + console.log(`Copied runtimes/${rid} (skipped ${readdirSync(runtimesDir).length - 1} other platform(s))`); } const runtime = runtimeForCurrentPlatform(); @@ -94,4 +124,4 @@ console.log( console.log("Publishing Journal.Sidecar..."); publishProject(sidecarProject, runtime); -stageBinary(sidecarName); +stageOutput(sidecarName); diff --git a/Journal.Sidecar/Journal.Sidecar.csproj b/Journal.Sidecar/Journal.Sidecar.csproj index 6035b91..118984e 100644 --- a/Journal.Sidecar/Journal.Sidecar.csproj +++ b/Journal.Sidecar/Journal.Sidecar.csproj @@ -2,8 +2,8 @@ Exe - true - true + false + false