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."); |
