diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-01-16 12:17:27 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-01-16 22:59:50 -0600 |
commit | f5d880cc70ad7350b0da1ea825141f95cbdb4c7b (patch) | |
tree | 32a16f0d57fc17e8de83eb5d35783a1ef6fa7ab5 /src/burn/engine/package.cpp | |
parent | 934cacdc8fc7c35c94d3b1eee6cc8ab5c8a8ce4d (diff) | |
download | wix-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.cpp | 17 |
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."); |