desktop: armazenar dados em pasta 'data' ao lado do executável (fallback AppData) e remover NSIS v2 inválido

- 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.
This commit is contained in:
Esdras Renan 2025-10-14 15:49:41 -03:00
parent 0b39bcb56c
commit 7bc8a1d945
2 changed files with 16 additions and 11 deletions

View file

@ -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<string> {
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<Store> {
const dir = await appLocalDataDir()
const dir = await resolveDataDir()
return await Store.load(STORE_FILENAME, { dir })
}