Cache directory only must be one level deep.
Preserved subpaths overwrite content of package.
Catch exceptions so we can restore subdirs.
Handle update and uninstall of packages