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