diff --git a/src/bins/src/commands/uninstall.rs b/src/bins/src/commands/uninstall.rs
index de444247..a9b77763 100644
--- a/src/bins/src/commands/uninstall.rs
+++ b/src/bins/src/commands/uninstall.rs
@@ -22,12 +22,16 @@ pub fn uninstall(locator: &VelopackLocator, delete_self: bool) -> Result<()> {
info!("Removing directory '{:?}'", root_path);
let _ = remove_dir_all::remove_dir_contents(&root_path);
+ let temp_dir = std::env::temp_dir();
+ let temp_dir = temp_dir.join(format!("velopack_{}", locator.get_manifest_id()));
+
+ info!("Removing directory '{:?}'", temp_dir);
+ let _ = remove_dir_all::remove_dir_all(&temp_dir);
+
if let Err(e) = windows::registry::remove_uninstall_entry(&locator) {
error!("Unable to remove uninstall registry entry ({}).", e);
}
- // if it returns true, it was a success.
- // if it returns false, it was completed with errors which the user should be notified of.
let app_title = locator.get_manifest_title();
info!("Finished successfully.");
diff --git a/src/vpk/Velopack.Packaging.Windows/Msi/MsiBuilder.cs b/src/vpk/Velopack.Packaging.Windows/Msi/MsiBuilder.cs
index b0775d3d..483fbddb 100644
--- a/src/vpk/Velopack.Packaging.Windows/Msi/MsiBuilder.cs
+++ b/src/vpk/Velopack.Packaging.Windows/Msi/MsiBuilder.cs
@@ -85,7 +85,7 @@ public static class MsiBuilder
var wixArch = data.IsArm64 ? "arm64" : data.Is64Bit ? "x64" : "x86";
Log.Info($"Configuring WiX in {wixArch} mode");
- var _1 = TempUtil.GetTempDirectory(out var outputDir);
+ using var _1 = TempUtil.GetTempDirectory(out var outputDir);
var wixId = data.WixId;
var wxsPath = Path.Combine(outputDir, wixId + ".wxs");
var localizationPath = Path.Combine(outputDir, wixId + "_en-US.wxs");
diff --git a/src/vpk/Velopack.Packaging.Windows/Msi/Templates/MsiTemplate.hbs b/src/vpk/Velopack.Packaging.Windows/Msi/Templates/MsiTemplate.hbs
index 7f43f660..0604b59f 100644
--- a/src/vpk/Velopack.Packaging.Windows/Msi/Templates/MsiTemplate.hbs
+++ b/src/vpk/Velopack.Packaging.Windows/Msi/Templates/MsiTemplate.hbs
@@ -97,14 +97,14 @@
-
-
+
diff --git a/src/wix-dll/src/lib.rs b/src/wix-dll/src/lib.rs
index ccc07feb..efab716a 100644
--- a/src/wix-dll/src/lib.rs
+++ b/src/wix-dll/src/lib.rs
@@ -48,19 +48,23 @@ pub extern "system" fn CleanupDeferred(h_install: MSIHANDLE) -> c_uint {
let mut custom_data = custom_data.split('"');
let install_dir = custom_data.next();
let app_id = custom_data.next();
+ let temp_dir = custom_data.next();
- show_debug_message("CleanupDeferred", format!("install_dir={:?}, app_id={:?}", install_dir, app_id));
+ show_debug_message("CleanupDeferred", format!("install_dir={:?}, app_id={:?}, temp_dir={:?}", install_dir, app_id, temp_dir));
if let Some(install_dir) = install_dir {
if let Err(e) = remove_dir_all::remove_dir_all(install_dir) {
- show_debug_message("CleanupDeferred", format!("Failed to remove install directory: {}", e));
+ show_debug_message("CleanupDeferred", format!("Failed to remove install directory: {:?} {}", install_dir, e));
}
}
if let Some(app_id) = app_id {
- let temp_dir = std::env::temp_dir();
- if let Err(e) = remove_dir_all::remove_dir_all(temp_dir.join(format!("velopack_{}", app_id))) {
- show_debug_message("CleanupDeferred", format!("Failed to remove temp directory: {}", e));
+ if let Some(temp_dir) = temp_dir {
+ let temp_dir = PathBuf::from(temp_dir);
+ let temp_dir = temp_dir.join(format!("velopack_{}", app_id));
+ if let Err(e) = remove_dir_all::remove_dir_all(&temp_dir) {
+ show_debug_message("CleanupDeferred", format!("Failed to remove temp directory: {:?} {}", temp_dir, e));
+ }
}
}