Jelajahi Sumber

feat(examples): add splashscreen example (#1685)

Lucas Fernandes Nogueira 4 tahun lalu
induk
melakukan
b86fe9a6de
100 mengubah file dengan 319 tambahan dan 29 penghapusan
  1. 1 0
      Cargo.toml
  2. 1 1
      core/tauri/Cargo.toml
  3. 1 1
      core/tauri/src/runtime/flavors/wry.rs
  4. 0 0
      examples/.icons/128x128.png
  5. 0 0
      examples/.icons/128x128@2x.png
  6. 0 0
      examples/.icons/32x32.png
  7. 0 0
      examples/.icons/Square107x107Logo.png
  8. 0 0
      examples/.icons/Square142x142Logo.png
  9. 0 0
      examples/.icons/Square150x150Logo.png
  10. 0 0
      examples/.icons/Square284x284Logo.png
  11. 0 0
      examples/.icons/Square30x30Logo.png
  12. 0 0
      examples/.icons/Square310x310Logo.png
  13. 0 0
      examples/.icons/Square44x44Logo.png
  14. 0 0
      examples/.icons/Square71x71Logo.png
  15. 0 0
      examples/.icons/Square89x89Logo.png
  16. 0 0
      examples/.icons/StoreLogo.png
  17. 0 0
      examples/.icons/icon.icns
  18. 0 0
      examples/.icons/icon.ico
  19. 0 0
      examples/.icons/icon.png
  20. 8 1
      examples/api/src-tauri/build.rs
  21. 5 5
      examples/api/src-tauri/tauri.conf.json
  22. 2 2
      examples/commands/src-tauri/Cargo.toml
  23. 8 1
      examples/commands/src-tauri/build.rs
  24. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/128x128.png
  25. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/128x128@2x.png
  26. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/32x32.png
  27. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square107x107Logo.png
  28. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square142x142Logo.png
  29. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square150x150Logo.png
  30. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square284x284Logo.png
  31. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square30x30Logo.png
  32. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square310x310Logo.png
  33. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square44x44Logo.png
  34. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square71x71Logo.png
  35. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/Square89x89Logo.png
  36. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/StoreLogo.png
  37. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/icon.icns
  38. TEMPAT SAMPAH
      examples/commands/src-tauri/icons/icon.ico
  39. 5 5
      examples/commands/src-tauri/tauri.conf.json
  40. 8 1
      examples/helloworld/src-tauri/build.rs
  41. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/128x128.png
  42. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/128x128@2x.png
  43. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/32x32.png
  44. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square107x107Logo.png
  45. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square142x142Logo.png
  46. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square150x150Logo.png
  47. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square284x284Logo.png
  48. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square30x30Logo.png
  49. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square310x310Logo.png
  50. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square44x44Logo.png
  51. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square71x71Logo.png
  52. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/Square89x89Logo.png
  53. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/StoreLogo.png
  54. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/icon.icns
  55. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/icon.ico
  56. TEMPAT SAMPAH
      examples/helloworld/src-tauri/icons/icon.png
  57. 5 5
      examples/helloworld/src-tauri/tauri.conf.json
  58. 8 1
      examples/multiwindow/src-tauri/build.rs
  59. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/128x128.png
  60. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/128x128@2x.png
  61. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/32x32.png
  62. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square107x107Logo.png
  63. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square142x142Logo.png
  64. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square150x150Logo.png
  65. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square284x284Logo.png
  66. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square30x30Logo.png
  67. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square310x310Logo.png
  68. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square44x44Logo.png
  69. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square71x71Logo.png
  70. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/Square89x89Logo.png
  71. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/StoreLogo.png
  72. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/icon.icns
  73. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/icon.ico
  74. TEMPAT SAMPAH
      examples/multiwindow/src-tauri/icons/icon.png
  75. 5 5
      examples/multiwindow/src-tauri/tauri.conf.json
  76. 14 0
      examples/splashscreen/README.md
  77. 0 0
      examples/splashscreen/dist/icon.png
  78. 16 0
      examples/splashscreen/dist/index.html
  79. 28 0
      examples/splashscreen/dist/splashscreen.html
  80. 11 0
      examples/splashscreen/package.json
  81. 10 0
      examples/splashscreen/src-tauri/.gitignore
  82. 1 0
      examples/splashscreen/src-tauri/.license_template
  83. 17 0
      examples/splashscreen/src-tauri/Cargo.toml
  84. 14 0
      examples/splashscreen/src-tauri/build.rs
  85. 88 0
      examples/splashscreen/src-tauri/src/main.rs
  86. 51 0
      examples/splashscreen/src-tauri/tauri.conf.json
  87. 4 0
      examples/splashscreen/yarn.lock
  88. 8 1
      examples/updater/src-tauri/build.rs
  89. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/128x128.png
  90. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/128x128@2x.png
  91. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/32x32.png
  92. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square107x107Logo.png
  93. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square142x142Logo.png
  94. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square150x150Logo.png
  95. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square284x284Logo.png
  96. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square30x30Logo.png
  97. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square310x310Logo.png
  98. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square44x44Logo.png
  99. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square71x71Logo.png
  100. TEMPAT SAMPAH
      examples/updater/src-tauri/icons/Square89x89Logo.png

+ 1 - 0
Cargo.toml

@@ -12,6 +12,7 @@ members = [
   "examples/helloworld/src-tauri",
   "examples/multiwindow/src-tauri",
   "examples/commands/src-tauri",
+  "examples/splashscreen/src-tauri/",
   # used to build updater artifacts
   "examples/updater/src-tauri",
 ]

+ 1 - 1
core/tauri/Cargo.toml

@@ -24,7 +24,7 @@ thiserror = "1.0.24"
 once_cell = "1.7.2"
 tauri-macros = { version = "1.0.0-beta-rc.1", path = "../tauri-macros" }
 tauri-utils = { version = "1.0.0-beta-rc.1", path = "../tauri-utils" }
-wry = "0.9"
+wry = { git = "https://github.com/tauri-apps/wry", rev = "483bad0fc7e7564500f7183547c15604fa387258" }
 rand = "0.8"
 reqwest = { version = "0.11", features = [ "json", "multipart" ] }
 tempfile = "3"

+ 1 - 1
core/tauri/src/runtime/flavors/wry.rs

@@ -607,7 +607,7 @@ impl Runtime for Wry {
                   window.set_window_icon(Some(icon));
                 }
                 WindowMessage::DragWindow => {
-                  window.drag_window();
+                  let _ = window.drag_window();
                 }
               }
             }

+ 0 - 0
examples/api/src-tauri/icons/128x128.png → examples/.icons/128x128.png


+ 0 - 0
examples/api/src-tauri/icons/128x128@2x.png → examples/.icons/128x128@2x.png


+ 0 - 0
examples/api/src-tauri/icons/32x32.png → examples/.icons/32x32.png


+ 0 - 0
examples/api/src-tauri/icons/Square107x107Logo.png → examples/.icons/Square107x107Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square142x142Logo.png → examples/.icons/Square142x142Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square150x150Logo.png → examples/.icons/Square150x150Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square284x284Logo.png → examples/.icons/Square284x284Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square30x30Logo.png → examples/.icons/Square30x30Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square310x310Logo.png → examples/.icons/Square310x310Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square44x44Logo.png → examples/.icons/Square44x44Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square71x71Logo.png → examples/.icons/Square71x71Logo.png


+ 0 - 0
examples/api/src-tauri/icons/Square89x89Logo.png → examples/.icons/Square89x89Logo.png


+ 0 - 0
examples/api/src-tauri/icons/StoreLogo.png → examples/.icons/StoreLogo.png


+ 0 - 0
examples/api/src-tauri/icons/icon.icns → examples/.icons/icon.icns


+ 0 - 0
examples/api/src-tauri/icons/icon.ico → examples/.icons/icon.ico


+ 0 - 0
examples/api/src-tauri/icons/icon.png → examples/.icons/icon.png


+ 8 - 1
examples/api/src-tauri/build.rs

@@ -2,6 +2,13 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-License-Identifier: MIT
 
+use tauri_build::{try_build, Attributes, WindowsAttributes};
+
 fn main() {
-  tauri_build::build()
+  if let Err(error) = try_build(
+    Attributes::new()
+      .windows_attributes(WindowsAttributes::new().window_icon_path("../../.icons/icon.ico")),
+  ) {
+    panic!("error found during tauri-build: {}", error);
+  }
 }

+ 5 - 5
examples/api/src-tauri/tauri.conf.json

@@ -54,11 +54,11 @@
       "active": true,
       "identifier": "com.tauri.api",
       "icon": [
-        "icons/32x32.png",
-        "icons/128x128.png",
-        "icons/128x128@2x.png",
-        "icons/icon.icns",
-        "icons/icon.ico"
+        "../../.icons/32x32.png",
+        "../../.icons/128x128.png",
+        "../../.icons/128x128@2x.png",
+        "../../.icons/icon.icns",
+        "../../.icons/icon.ico"
       ]
     },
     "updater": {

+ 2 - 2
examples/commands/src-tauri/Cargo.toml

@@ -5,12 +5,12 @@ description = "A simple Tauri Application showcasing the commands API"
 edition = "2018"
 
 [build-dependencies]
-tauri-build = { path = "../../../core/tauri-build", features = [ "codegen" ]}
+tauri-build = { path = "../../../core/tauri-build", features = [ "codegen" ] }
 
 [dependencies]
 serde_json = "1.0"
 serde = { version = "1.0", features = [ "derive" ] }
-tauri = { path = "../../../core/tauri", features =["api-all"]}
+tauri = { path = "../../../core/tauri", features = ["api-all"] }
 
 [features]
 default = [ "custom-protocol" ]

+ 8 - 1
examples/commands/src-tauri/build.rs

@@ -2,6 +2,13 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-License-Identifier: MIT
 
+use tauri_build::{try_build, Attributes, WindowsAttributes};
+
 fn main() {
-  tauri_build::build();
+  if let Err(error) = try_build(
+    Attributes::new()
+      .windows_attributes(WindowsAttributes::new().window_icon_path("../../.icons/icon.ico")),
+  ) {
+    panic!("error found during tauri-build: {}", error);
+  }
 }

TEMPAT SAMPAH
examples/commands/src-tauri/icons/128x128.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/128x128@2x.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/32x32.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square107x107Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square142x142Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square150x150Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square284x284Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square30x30Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square310x310Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square44x44Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square71x71Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/Square89x89Logo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/StoreLogo.png


TEMPAT SAMPAH
examples/commands/src-tauri/icons/icon.icns


TEMPAT SAMPAH
examples/commands/src-tauri/icons/icon.ico


+ 5 - 5
examples/commands/src-tauri/tauri.conf.json

@@ -11,11 +11,11 @@
       "targets": "all",
       "identifier": "com.tauri.dev",
       "icon": [
-        "icons/32x32.png",
-        "icons/128x128.png",
-        "icons/128x128@2x.png",
-        "icons/icon.icns",
-        "icons/icon.ico"
+        "../../.icons/32x32.png",
+        "../../.icons/128x128.png",
+        "../../.icons/128x128@2x.png",
+        "../../.icons/icon.icns",
+        "../../.icons/icon.ico"
       ],
       "resources": [],
       "externalBin": [],

+ 8 - 1
examples/helloworld/src-tauri/build.rs

@@ -2,6 +2,13 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-License-Identifier: MIT
 
+use tauri_build::{try_build, Attributes, WindowsAttributes};
+
 fn main() {
-  tauri_build::build();
+  if let Err(error) = try_build(
+    Attributes::new()
+      .windows_attributes(WindowsAttributes::new().window_icon_path("../../.icons/icon.ico")),
+  ) {
+    panic!("error found during tauri-build: {}", error);
+  }
 }

TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/128x128.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/128x128@2x.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/32x32.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square107x107Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square142x142Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square150x150Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square284x284Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square30x30Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square310x310Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square44x44Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square71x71Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/Square89x89Logo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/StoreLogo.png


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/icon.icns


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/icon.ico


TEMPAT SAMPAH
examples/helloworld/src-tauri/icons/icon.png


+ 5 - 5
examples/helloworld/src-tauri/tauri.conf.json

@@ -11,11 +11,11 @@
       "targets": "all",
       "identifier": "com.tauri.dev",
       "icon": [
-        "icons/32x32.png",
-        "icons/128x128.png",
-        "icons/128x128@2x.png",
-        "icons/icon.icns",
-        "icons/icon.ico"
+        "../../.icons/32x32.png",
+        "../../.icons/128x128.png",
+        "../../.icons/128x128@2x.png",
+        "../../.icons/icon.icns",
+        "../../.icons/icon.ico"
       ],
       "resources": [],
       "externalBin": [],

+ 8 - 1
examples/multiwindow/src-tauri/build.rs

@@ -2,6 +2,13 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-License-Identifier: MIT
 
+use tauri_build::{try_build, Attributes, WindowsAttributes};
+
 fn main() {
-  tauri_build::build();
+  if let Err(error) = try_build(
+    Attributes::new()
+      .windows_attributes(WindowsAttributes::new().window_icon_path("../../.icons/icon.ico")),
+  ) {
+    panic!("error found during tauri-build: {}", error);
+  }
 }

TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/128x128.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/128x128@2x.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/32x32.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square107x107Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square142x142Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square150x150Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square284x284Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square30x30Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square310x310Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square44x44Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square71x71Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/Square89x89Logo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/StoreLogo.png


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/icon.icns


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/icon.ico


TEMPAT SAMPAH
examples/multiwindow/src-tauri/icons/icon.png


+ 5 - 5
examples/multiwindow/src-tauri/tauri.conf.json

@@ -10,11 +10,11 @@
       "targets": "all",
       "identifier": "com.tauri.dev",
       "icon": [
-        "icons/32x32.png",
-        "icons/128x128.png",
-        "icons/128x128@2x.png",
-        "icons/icon.icns",
-        "icons/icon.ico"
+        "../../.icons/32x32.png",
+        "../../.icons/128x128.png",
+        "../../.icons/128x128@2x.png",
+        "../../.icons/icon.icns",
+        "../../.icons/icon.ico"
       ],
       "resources": [],
       "externalBin": [],

+ 14 - 0
examples/splashscreen/README.md

@@ -0,0 +1,14 @@
+# Splashscreen example
+
+This example demonstrates how a splashscreen can be implemented when waiting on an initialization code on Rust or on the UI.
+
+## Running the example
+
+Run the following scripts on the root directory of the repository:
+
+```bash
+# runs the example that wait on a Rust initialization script to show the main window
+$ cargo run --bin splashscreen
+# runs the example that wait on the UI to load to show the main window
+$ cargo run --bin splashscreen --features ui
+```

+ 0 - 0
examples/commands/src-tauri/icons/icon.png → examples/splashscreen/dist/icon.png


+ 16 - 0
examples/splashscreen/dist/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+
+<body>
+  <h1>This is the main window!</h1>
+  <script>
+    document.addEventListener('DOMContentLoaded', () => {
+      // we delay here just so we can see the splashscreen for a while
+      setTimeout(() => {
+        window.__TAURI__.invoke('close_splashscreen')
+      }, 2000)
+    })
+  </script>
+</body>
+
+</html>

+ 28 - 0
examples/splashscreen/dist/splashscreen.html

@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <title>Splashscreen</title>
+  <style>
+    body {
+      margin: 0;
+    }
+
+    .splashscreen-image {
+      background-color: #444;
+      background-image: url('icon.png');
+      background-position: center;
+      background-repeat: no-repeat;
+      background-size: 50%;
+      width: 100vw !important;
+      height: 100vh !important;
+      overflow: hidden;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="splashscreen-image" />
+</body>
+
+</html>

+ 11 - 0
examples/splashscreen/package.json

@@ -0,0 +1,11 @@
+{
+  "name": "splashscreen-example",
+  "version": "1.0.0",
+  "description": "A Tauri example showcasing Tauri's multiwindow ability with a splashscreen",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "tauri": "node ../../tooling/cli.js/bin/tauri"
+  },
+  "private": true
+}

+ 10 - 0
examples/splashscreen/src-tauri/.gitignore

@@ -0,0 +1,10 @@
+# Generated by Cargo
+# will have compiled files and executables
+/target/
+WixTools
+
+# These are backup files generated by rustfmt
+**/*.rs.bk
+
+config.json
+bundle.json

+ 1 - 0
examples/splashscreen/src-tauri/.license_template

@@ -0,0 +1 @@
+../../../.license_template

+ 17 - 0
examples/splashscreen/src-tauri/Cargo.toml

@@ -0,0 +1,17 @@
+[package]
+name = "splashscreen"
+version = "0.1.0"
+description = "An example Tauri Application with a splashscreen"
+edition = "2018"
+license = "Apache-2.0 OR MIT"
+
+[build-dependencies]
+tauri-build = { path = "../../../core/tauri-build" }
+
+[dependencies]
+tauri = { path = "../../../core/tauri", features = ["api-all"] }
+
+[features]
+default = [ "custom-protocol" ]
+custom-protocol = [ "tauri/custom-protocol" ]
+ui = []

+ 14 - 0
examples/splashscreen/src-tauri/build.rs

@@ -0,0 +1,14 @@
+// Copyright 2019-2021 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+use tauri_build::{try_build, Attributes, WindowsAttributes};
+
+fn main() {
+  if let Err(error) = try_build(
+    Attributes::new()
+      .windows_attributes(WindowsAttributes::new().window_icon_path("../../.icons/icon.ico")),
+  ) {
+    panic!("error found during tauri-build: {}", error);
+  }
+}

+ 88 - 0
examples/splashscreen/src-tauri/src/main.rs

@@ -0,0 +1,88 @@
+// Copyright 2019-2021 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+#![cfg_attr(
+  all(not(debug_assertions), target_os = "windows"),
+  windows_subsystem = "windows"
+)]
+
+// Application code for a splashscreen system that waits on a Rust initialization script
+#[cfg(not(feature = "ui"))]
+mod rust {
+  use std::{thread::sleep, time::Duration};
+  use tauri::Manager;
+
+  // this command is here just so the example doesn't throw an error
+  #[tauri::command]
+  fn close_splashscreen() {}
+
+  pub fn main() {
+    tauri::Builder::default()
+      .setup(|app| {
+        let splashscreen_window = app.get_window("splashscreen").unwrap();
+        let main_window = app.get_window("main").unwrap();
+        // we perform the initialization code on a new task so the app doesn't freeze
+        tauri::async_runtime::spawn(async move {
+          println!("Initializing...");
+          sleep(Duration::from_secs(2));
+          println!("Done initializing.");
+
+          // After it's done, close the splashscreen and display the main window
+          splashscreen_window.close().unwrap();
+          main_window.show().unwrap();
+        });
+        Ok(())
+      })
+      .invoke_handler(tauri::generate_handler![close_splashscreen])
+      .run(tauri::generate_context!())
+      .expect("failed to run app");
+  }
+}
+
+// Application code for a splashscreen system that waits for the UI
+#[cfg(feature = "ui")]
+mod ui {
+  use std::sync::{Arc, Mutex};
+  use tauri::{Manager, Params, State, Window};
+
+  // wrappers around each Window
+  // we use a dedicated type because Tauri can only manage a single instance of a given type
+  struct SplashscreenWindow<P: Params>(Arc<Mutex<Window<P>>>);
+  struct MainWindow<P: Params>(Arc<Mutex<Window<P>>>);
+
+  #[tauri::command]
+  fn close_splashscreen<P: Params>(
+    splashscreen: State<'_, SplashscreenWindow<P>>,
+    main: State<'_, MainWindow<P>>,
+  ) {
+    // Close splashscreen
+    splashscreen.0.lock().unwrap().close().unwrap();
+    // Show main window
+    main.0.lock().unwrap().show().unwrap();
+  }
+
+  pub fn main() {
+    tauri::Builder::default()
+      .setup(|app| {
+        // set the splashscreen and main windows to be globally available with the tauri state API
+        app.manage(SplashscreenWindow(Arc::new(Mutex::new(
+          app.get_window("splashscreen").unwrap(),
+        ))));
+        app.manage(MainWindow(Arc::new(Mutex::new(
+          app.get_window("main").unwrap(),
+        ))));
+        Ok(())
+      })
+      .invoke_handler(tauri::generate_handler![close_splashscreen])
+      .run(tauri::generate_context!())
+      .expect("error while running tauri application");
+  }
+}
+
+fn main() {
+  #[cfg(feature = "ui")]
+  ui::main();
+  #[cfg(not(feature = "ui"))]
+  rust::main();
+}

+ 51 - 0
examples/splashscreen/src-tauri/tauri.conf.json

@@ -0,0 +1,51 @@
+{
+  "build": {
+    "distDir": "../dist",
+    "devPath": "../dist",
+    "withGlobalTauri": true
+  },
+  "tauri": {
+    "bundle": {
+      "active": true,
+      "targets": "all",
+      "identifier": "com.tauri.dev",
+      "icon": [
+        "../../.icons/32x32.png",
+        "../../.icons/128x128.png",
+        "../../.icons/128x128@2x.png",
+        "../../.icons/icon.icns",
+        "../../.icons/icon.ico"
+      ],
+      "resources": [],
+      "externalBin": [],
+      "copyright": "",
+      "category": "DeveloperTool"
+    },
+    "allowlist": {
+      "all": true
+    },
+    "windows": [
+      {
+        "label": "main",
+        "title": "Tauri",
+        "width": 800,
+        "height": 600,
+        "visible": false
+      },
+      {
+        "label": "splashscreen",
+        "width": 400,
+        "height": 200,
+        "decorations": false,
+        "resizable": false,
+        "url": "splashscreen.html"
+      }
+    ],
+    "security": {
+      "csp": "default-src blob: data: filesystem: ws: http: https: 'unsafe-eval' 'unsafe-inline'"
+    },
+    "updater": {
+      "active": false
+    }
+  }
+}

+ 4 - 0
examples/splashscreen/yarn.lock

@@ -0,0 +1,4 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+

+ 8 - 1
examples/updater/src-tauri/build.rs

@@ -2,6 +2,13 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-License-Identifier: MIT
 
+use tauri_build::{try_build, Attributes, WindowsAttributes};
+
 fn main() {
-  tauri_build::build();
+  if let Err(error) = try_build(
+    Attributes::new()
+      .windows_attributes(WindowsAttributes::new().window_icon_path("../../.icons/icon.ico")),
+  ) {
+    panic!("error found during tauri-build: {}", error);
+  }
 }

TEMPAT SAMPAH
examples/updater/src-tauri/icons/128x128.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/128x128@2x.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/32x32.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square107x107Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square142x142Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square150x150Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square284x284Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square30x30Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square310x310Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square44x44Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square71x71Logo.png


TEMPAT SAMPAH
examples/updater/src-tauri/icons/Square89x89Logo.png


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini