Fix installation on MacOs

pull/598/head
Olexiy Buyanskyy 2 years ago
parent 903361100c
commit e62fd798b3

59
Cargo.lock generated

@ -230,7 +230,7 @@ checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
[[package]] [[package]]
name = "api" name = "api"
version = "2.0.0-alpha.3" version = "2.0.0-alpha.4"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -1665,9 +1665,9 @@ dependencies = [
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.0.26" version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"miniz_oxide", "miniz_oxide",
@ -5620,14 +5620,14 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-app" name = "tauri-plugin-app"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"tauri", "tauri",
] ]
[[package]] [[package]]
name = "tauri-plugin-authenticator" name = "tauri-plugin-authenticator"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"authenticator", "authenticator",
"base64 0.21.2", "base64 0.21.2",
@ -5646,7 +5646,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-autostart" name = "tauri-plugin-autostart"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"auto-launch", "auto-launch",
"log", "log",
@ -5658,7 +5658,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-cli" name = "tauri-plugin-cli"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"clap", "clap",
"log", "log",
@ -5670,7 +5670,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-clipboard-manager" name = "tauri-plugin-clipboard-manager"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"arboard", "arboard",
"log", "log",
@ -5683,7 +5683,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-dialog" name = "tauri-plugin-dialog"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"glib", "glib",
"log", "log",
@ -5699,7 +5699,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-fs" name = "tauri-plugin-fs"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"glob", "glob",
@ -5713,7 +5713,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-global-shortcut" name = "tauri-plugin-global-shortcut"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"global-hotkey", "global-hotkey",
"log", "log",
@ -5725,7 +5725,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-http" name = "tauri-plugin-http"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.3"
dependencies = [ dependencies = [
"data-url", "data-url",
"glob", "glob",
@ -5741,7 +5741,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-localhost" name = "tauri-plugin-localhost"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"http", "http",
"log", "log",
@ -5754,7 +5754,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-log" name = "tauri-plugin-log"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"android_logger", "android_logger",
"byte-unit", "byte-unit",
@ -5773,7 +5773,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-notification" name = "tauri-plugin-notification"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.3"
dependencies = [ dependencies = [
"log", "log",
"notify-rust", "notify-rust",
@ -5791,7 +5791,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-os" name = "tauri-plugin-os"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"gethostname 0.4.3", "gethostname 0.4.3",
"log", "log",
@ -5806,7 +5806,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-persisted-scope" name = "tauri-plugin-persisted-scope"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"bincode", "bincode",
@ -5820,7 +5820,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-positioner" name = "tauri-plugin-positioner"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -5832,14 +5832,14 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-process" name = "tauri-plugin-process"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"tauri", "tauri",
] ]
[[package]] [[package]]
name = "tauri-plugin-shell" name = "tauri-plugin-shell"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"encoding_rs", "encoding_rs",
"log", "log",
@ -5855,7 +5855,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-single-instance" name = "tauri-plugin-single-instance"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -5868,7 +5868,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-sql" name = "tauri-plugin-sql"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"log", "log",
@ -5883,7 +5883,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-store" name = "tauri-plugin-store"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -5894,7 +5894,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-stronghold" name = "tauri-plugin-stronghold"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"hex", "hex",
"iota-crypto 0.23.0", "iota-crypto 0.23.0",
@ -5911,10 +5911,11 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-updater" name = "tauri-plugin-updater"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"base64 0.21.2", "base64 0.21.2",
"dirs-next", "dirs-next",
"flate2",
"futures-util", "futures-util",
"http", "http",
"minisign-verify", "minisign-verify",
@ -5936,7 +5937,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-upload" name = "tauri-plugin-upload"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"log", "log",
@ -5952,7 +5953,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-websocket" name = "tauri-plugin-websocket"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"log", "log",
@ -5967,7 +5968,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-window" name = "tauri-plugin-window"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"serde", "serde",
"tauri", "tauri",
@ -5976,7 +5977,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-window-state" name = "tauri-plugin-window-state"
version = "2.0.0-alpha.1" version = "2.0.0-alpha.2"
dependencies = [ dependencies = [
"bincode", "bincode",
"bitflags 2.3.3", "bitflags 2.3.3",

@ -32,6 +32,9 @@ tar = "0.4"
[target."cfg(target_os = \"windows\")".dependencies] [target."cfg(target_os = \"windows\")".dependencies]
zip = { version = "0.6", default-features = false } zip = { version = "0.6", default-features = false }
[target."cfg(target_os = \"macos\")".dependencies]
flate2 = "1.0.27"
[dev-dependencies] [dev-dependencies]
mockito = "0.31" mockito = "0.31"

@ -658,10 +658,8 @@ impl Update {
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
fn install_inner(&self, bytes: Vec<u8>) -> Result<()> { fn install_inner(&self, bytes: Vec<u8>) -> Result<()> {
let archive = Cursor::new(bytes); let archive = Cursor::new(bytes);
let mut extracted_files: Vec<PathBuf> = Vec::new(); let archive = flate2::read::GzDecoder::new(archive);
// the first file in the tar.gz will always be
// <app_name>/Contents
let tmp_dir = tempfile::Builder::new() let tmp_dir = tempfile::Builder::new()
.prefix("tauri_current_app") .prefix("tauri_current_app")
.tempdir()?; .tempdir()?;
@ -670,33 +668,11 @@ impl Update {
std::fs::rename(&self.extract_path, tmp_dir.path())?; std::fs::rename(&self.extract_path, tmp_dir.path())?;
let mut archive = tar::Archive::new(archive); let mut archive = tar::Archive::new(archive);
for mut entry in archive.entries()?.flatten() { if let Err(err) = archive.unpack(&self.extract_path.join("..")) {
if let Ok(path) = entry.path() { std::fs::remove_dir_all(&self.extract_path)?;
// skip the first folder (should be the app name)
let collected_path: PathBuf = path.iter().skip(1).collect();
let extraction_path = &self.extract_path.join(collected_path);
// if something went wrong during the extraction, we should restore previous app
if let Err(err) = entry.unpack(extraction_path) {
for file in &extracted_files {
// delete all the files we extracted
if file.is_dir() {
std::fs::remove_dir(file)?;
} else {
std::fs::remove_file(file)?;
}
}
std::fs::rename(tmp_dir.path(), &self.extract_path)?; std::fs::rename(tmp_dir.path(), &self.extract_path)?;
return Err(err.into()); return Err(err.into());
} };
extracted_files.push(extraction_path.to_path_buf());
}
}
let _ = std::process::Command::new("touch")
.arg(&self.extract_path)
.status();
Ok(()) Ok(())
} }

Loading…
Cancel
Save