- if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false)
- {
- if(Install(Pkg,FileNames[Pkg->ID]) == false)
- return false;
- } else if (SmartUnPack(Pkg.Group().FindPkg("all")) == false)
+ List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
+
+ if ((instVer->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ for (PkgIterator P = Pkg.Group().PackageList();
+ P.end() == false; P = Pkg.Group().NextPkg(P))
+ {
+ if (Pkg == P || List->IsFlag(P,pkgOrderList::UnPacked) == true ||
+ Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer &&
+ (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall))
+ continue;
+ SmartUnPack(P, false);
+ }
+
+ if(Install(Pkg,FileNames[Pkg->ID]) == false)