From e0bd8f802ceef68143fa692c91bcabdc77978119 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 6 Sep 2025 15:20:38 +0000 Subject: [PATCH] Fix updater being broken after restart --- .../java/io/xpipe/app/core/mode/OperationMode.java | 11 +++++++---- .../main/java/io/xpipe/app/update/AppDownloads.java | 8 +++++--- app/src/main/java/io/xpipe/app/util/LocalShell.java | 4 +++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java index fe1e45df2..0f1fcaa14 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java @@ -272,12 +272,15 @@ public abstract class OperationMode { return; } - inShutdown = true; try { - if (CURRENT != null) { - CURRENT.finalTeardown(); + if (!isInStartup()) { + inShutdown = true; + if (CURRENT != null) { + CURRENT.finalTeardown(); + } + CURRENT = null; } - CURRENT = null; + // Restart local shell LocalShell.init(); r.run(); diff --git a/app/src/main/java/io/xpipe/app/update/AppDownloads.java b/app/src/main/java/io/xpipe/app/update/AppDownloads.java index 294ea9e23..8f85a3679 100644 --- a/app/src/main/java/io/xpipe/app/update/AppDownloads.java +++ b/app/src/main/java/io/xpipe/app/update/AppDownloads.java @@ -35,15 +35,17 @@ public class AppDownloads { } var downloadFile = FileUtils.getTempDirectory().toPath().resolve(release.getFile()); - Files.write(downloadFile, response.body()); + // Fix file name to not be included in temp dir clean + var fixedFile = Path.of(downloadFile.toString().replaceAll("-", "_")); + Files.write(fixedFile, response.body()); TrackEvent.withInfo("Downloaded asset") .tag("version", version) .tag("url", release.getUrl()) .tag("size", FileUtils.byteCountToDisplaySize(response.body().length)) - .tag("target", downloadFile) + .tag("target", fixedFile) .handle(); - return downloadFile; + return fixedFile; } catch (IOException ex) { // All sorts of things can go wrong when downloading, this is expected ErrorEventFactory.expected(ex); diff --git a/app/src/main/java/io/xpipe/app/util/LocalShell.java b/app/src/main/java/io/xpipe/app/util/LocalShell.java index 47c1ceaeb..32c4cb7f5 100644 --- a/app/src/main/java/io/xpipe/app/util/LocalShell.java +++ b/app/src/main/java/io/xpipe/app/util/LocalShell.java @@ -15,7 +15,9 @@ public class LocalShell { private static boolean powershellInitialized; public static synchronized void init() throws Exception { - local = ProcessControlProvider.get().createLocalProcessControl(false).start(); + if (local == null) { + local = ProcessControlProvider.get().createLocalProcessControl(false).start(); + } } public static synchronized void reset(boolean force) {