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