93 lines
2.8 KiB
Rust
93 lines
2.8 KiB
Rust
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() {
|
|
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(
|
|
tauri_plugin_log::Builder::default()
|
|
.level(log::LevelFilter::Info)
|
|
.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!())
|
|
.expect("error while running tauri application");
|
|
}
|