This commit is contained in:
2026-08-10 22:06:49 +02:00
parent 2a5d9bb0fd
commit 8bff7982ff
83 changed files with 17975 additions and 4824 deletions
+77 -1
View File
@@ -1,6 +1,46 @@
use tauri::{WebviewUrl, WebviewWindowBuilder};
#[cfg(windows)]
mod installer;
/// L'application tourne-t-elle depuis son dossier d'installation ?
/// (Sur les autres plateformes il n'y a pas d'installeur intégré.)
fn running_installed() -> bool {
#[cfg(windows)]
{
installer::is_running_installed()
}
#[cfg(not(windows))]
{
true
}
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
let mut builder = tauri::Builder::default();
// Mises à jour automatiques : l'application va chercher elle-même la
// dernière version publiée. Plus besoin de renvoyer un .exe à l'équipe.
#[cfg(desktop)]
{
builder = builder
.plugin(tauri_plugin_updater::Builder::new().build())
.plugin(tauri_plugin_process::init());
}
// Installeur intégré : le front affiche l'écran d'installation ou
// l'application selon `installer_status()`.
#[cfg(windows)]
{
builder = builder.invoke_handler(tauri::generate_handler![
installer::installer_status,
installer::installer_install,
installer::installer_launch
]);
}
builder
.setup(|app| {
if cfg!(debug_assertions) {
app.handle().plugin(
@@ -9,6 +49,42 @@ pub fn run() {
.build(),
)?;
}
// La fenêtre est créée ICI, directement à sa forme définitive.
//
// Elle n'est volontairement PAS déclarée dans tauri.conf.json : la
// déclarer là-bas imposait de la corriger ensuite — la masquer, la
// redimensionner, la maximiser, puis l'afficher. Chacune de ces
// étapes était visible, d'où l'impression que « plusieurs petites
// fenêtres » s'ouvraient avant l'application.
//
// Créée d'un coup aux bonnes dimensions, il n'y a plus rien à
// rattraper après coup : une seule apparition, la bonne.
let window = WebviewWindowBuilder::new(app, "main", WebviewUrl::default())
// Le glisser-déposer doit rester géré par le webview (Kanban,
// dépôt de pièces jointes) et non capté par Tauri.
.disable_drag_drop_handler();
if running_installed() {
window
.title("GameDev Tracker")
.inner_size(1360.0, 860.0)
.min_inner_size(900.0, 620.0)
.resizable(true)
.maximized(true)
.build()?;
} else {
// Écran d'installation : petite fenêtre sans bordure, centrée.
window
.title("Installation de GameDev Tracker")
.inner_size(520.0, 560.0)
.resizable(false)
.maximizable(false)
.decorations(false)
.center()
.build()?;
}
Ok(())
})
.run(tauri::generate_context!())