From 7bc8a1d945078bbee81f69a656f9d7698718bfbe Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Tue, 14 Oct 2025 15:49:41 -0300 Subject: [PATCH] =?UTF-8?q?desktop:=20armazenar=20dados=20em=20pasta=20'da?= =?UTF-8?q?ta'=20ao=20lado=20do=20execut=C3=A1vel=20(fallback=20AppData)?= =?UTF-8?q?=20e=20remover=20NSIS=20v2=20inv=C3=A1lido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - main.tsx: resolveDataDir usa executableDir/data quando possível; se falhar, cai para appLocalDataDir - tauri.conf.json: remove bloco windows.nsis inválido no schema v2 para build passar Objetivo: instalar dados fora do AppData (ex.: C:\Raven\data) quando o diretório de instalação permitir escrita. --- apps/desktop/src-tauri/tauri.conf.json | 10 +--------- apps/desktop/src/main.tsx | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 26b1024..e22d75b 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -44,14 +44,6 @@ "icons/icon.icns", "icons/icon.png", "icons/Raven.png" - ], - "windows": { - "nsis": { - "installMode": "perMachine", - "allowToChangeInstallDirectory": true, - "installDirName": "Raven", - "createDesktopShortcut": true - } - } + ] } } diff --git a/apps/desktop/src/main.tsx b/apps/desktop/src/main.tsx index 833d783..94a6f5a 100644 --- a/apps/desktop/src/main.tsx +++ b/apps/desktop/src/main.tsx @@ -3,7 +3,8 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react" import { createRoot } from "react-dom/client" import { invoke } from "@tauri-apps/api/core" import { Store } from "@tauri-apps/plugin-store" -import { appLocalDataDir } from "@tauri-apps/api/path" +import { appLocalDataDir, executableDir, join } from "@tauri-apps/api/path" +import { createDir, exists } from "@tauri-apps/api/fs" import { ExternalLink, Eye, EyeOff, GalleryVerticalEnd, Loader2, RefreshCw } from "lucide-react" import { Tabs, TabsContent, TabsList, TabsTrigger } from "./components/ui/tabs" import { cn } from "./lib/utils" @@ -103,8 +104,20 @@ function normalizeUrl(value?: string | null, fallback = DEFAULT_APP_URL) { const appUrl = normalizeUrl(import.meta.env.VITE_APP_URL, DEFAULT_APP_URL) const apiBaseUrl = normalizeUrl(import.meta.env.VITE_API_BASE_URL, appUrl) +async function resolveDataDir(): Promise { + try { + const exe = await executableDir() + const dir = await join(exe, "data") + const ok = await exists(dir).catch(() => false) + if (!ok) await createDir(dir, { recursive: true }) + return dir + } catch { + return await appLocalDataDir() + } +} + async function loadStore(): Promise { - const dir = await appLocalDataDir() + const dir = await resolveDataDir() return await Store.load(STORE_FILENAME, { dir }) }