fn update()

in src/main.rs [326:351]


fn update(
	log: &slog::Logger,
	code_path: &PathBuf,
	update_folder_name: &str,
	silent: bool,
) -> Result<(), Box<dyn error::Error>> {
	process::wait_or_kill(log, code_path)?;

	info!(log, "Inno Updater v{}", VERSION);
	info!(log, "Starting update, silent = {}", silent);

	let (tx, rx) = mpsc::channel();

	thread::spawn(move || {
		gui::run_progress_window(silent, tx);
	});

	let window = rx
		.recv()
		.map_err(|_| io::Error::new(io::ErrorKind::Other, "Could not receive GUI window handle"))?;

	do_update(&log, code_path, update_folder_name)?;
	window.exit();

	Ok(())
}