diff --git a/core/src/system/diskpart.rs b/core/src/system/diskpart.rs index 9521982..ab827c5 100644 --- a/core/src/system/diskpart.rs +++ b/core/src/system/diskpart.rs @@ -129,7 +129,7 @@ pub fn get_partition_details( #[must_use] pub fn build_dest_format_script(disk_id: usize, part_type: &PartitionTableType) -> String { let disk_id = format!("{disk_id}"); - let mut script = vec!["select disk {disk_id}", "clean"]; + let mut script = vec!["automount enable noerr", "select disk {disk_id}", "clean"]; match part_type { PartitionTableType::Guid => { script.push("convert gpt"); diff --git a/deja_vu/src/app.rs b/deja_vu/src/app.rs index 8715929..b96d8bc 100644 --- a/deja_vu/src/app.rs +++ b/deja_vu/src/app.rs @@ -32,6 +32,7 @@ use core::{ use std::{ env, iter::zip, + path::PathBuf, sync::{Arc, Mutex}, }; @@ -170,11 +171,31 @@ impl App { ))?; } Mode::PreClone => { + // Get System32 path + let system32 = if cfg!(windows) { + if let Ok(path) = env::var("SYSTEMROOT") { + format!("{path}/System32") + } else { + self.action_tx.send(Action::Error(String::from( + "ERROR\n\n\nFailed to find SYSTEMROOT", + )))?; + return Ok(()); + } + } else { + String::from(".") + }; + self.action_tx.send(Action::DisplayPopup( popup::Type::Info, String::from("Formatting destination disk"), ))?; + // (Re)Enable volume mounting + self.tasks.add(Task::Command( + PathBuf::from(format!("{system32}/mountvol.exe")), + vec![String::from("/e")], + )); + // Build Diskpart script to format destination disk let disk_list = self.clone.disk_list.lock().unwrap(); if let Some(disk_index) = self.clone.disk_index_dest {