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