Enable automatic volume mounting before cloning

This commit is contained in:
2Shirt 2025-02-09 14:41:10 -08:00
parent 167ec52d6f
commit cd38712ea9
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
2 changed files with 22 additions and 1 deletions

View file

@ -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");

View file

@ -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 {