V0.3
This commit is contained in:
+77
-1
@@ -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!())
|
||||
|
||||
Reference in New Issue
Block a user