aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/package.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-01-16 12:17:27 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-01-16 22:59:50 -0600
commitf5d880cc70ad7350b0da1ea825141f95cbdb4c7b (patch)
tree32a16f0d57fc17e8de83eb5d35783a1ef6fa7ab5 /src/burn/engine/package.cpp
parent934cacdc8fc7c35c94d3b1eee6cc8ab5c8a8ce4d (diff)
downloadwix-f5d880cc70ad7350b0da1ea825141f95cbdb4c7b.tar.gz
wix-f5d880cc70ad7350b0da1ea825141f95cbdb4c7b.tar.bz2
wix-f5d880cc70ad7350b0da1ea825141f95cbdb4c7b.zip
Update Burn to handle ExePackages that don't support uninstalling.
Partial fix for #6459
Diffstat (limited to 'src/burn/engine/package.cpp')
-rw-r--r--src/burn/engine/package.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/burn/engine/package.cpp b/src/burn/engine/package.cpp
index 20b728f4..72da817f 100644
--- a/src/burn/engine/package.cpp
+++ b/src/burn/engine/package.cpp
@@ -235,6 +235,23 @@ extern "C" HRESULT PackagesParseFromXml(
235 // ignore other package types for now 235 // ignore other package types for now
236 } 236 }
237 237
238 if (!pPackage->fPermanent)
239 {
240 BOOL fUninstallable = TRUE;
241
242 switch (pPackage->type)
243 {
244 case BURN_PACKAGE_TYPE_EXE:
245 fUninstallable = pPackage->Exe.fUninstallable;
246 break;
247 }
248
249 if (!fUninstallable)
250 {
251 ExitWithRootFailure(hr, E_INVALIDDATA, "Non-permanent packages must be uninstallable.");
252 }
253 }
254
238 // parse payload references 255 // parse payload references
239 hr = ParsePayloadRefsFromXml(pPackage, pPayloads, pixnNode); 256 hr = ParsePayloadRefsFromXml(pPackage, pPayloads, pixnNode);
240 ExitOnFailure(hr, "Failed to parse payload references."); 257 ExitOnFailure(hr, "Failed to parse payload references.");