fn do_update()

in src/main.rs [299:324]


fn do_update(
	log: &slog::Logger,
	code_path: &PathBuf,
	update_folder_name: &str,
) -> Result<(), Box<dyn error::Error>> {
	info!(log, "do_update: {:?}, {}", code_path, update_folder_name);

	let root_path = code_path.parent().ok_or(io::Error::new(
		io::ErrorKind::Other,
		"Could not get parent path of uninstdat",
	))?;

	let mut uninstdat_path = PathBuf::from(root_path);
	uninstdat_path.push("unins000.dat");

	move_update(log, &uninstdat_path, update_folder_name)?;

	// if, for any reason, the uninstdat file is corrupt, let's continue silently
	// https://github.com/Microsoft/vscode/issues/45607
	patch_uninstdat(log, &uninstdat_path, update_folder_name).unwrap_or_else(|err| {
		warn!(log, "Failed to patch uninst.dat file");
		warn!(log, "{}", err);
	});

	Ok(())
}