static int Finish_;
 static bool RestartSubstrate_;
+static bool UpgradeCydia_;
 static NSArray *Finishes_;
 
 #define SpringBoard_ "/System/Library/LaunchDaemons/com.apple.SpringBoard.plist"
 
         issues_ = [NSMutableArray arrayWithCapacity:4];
 
+        UpgradeCydia_ = false;
+
         for (Package *package in packages) {
             pkgCache::PkgIterator iterator([package iterator]);
             NSString *name([package id]);
                 [removes addObject:name];
             }
 
+            if ([name isEqualToString:@"cydia"])
+                UpgradeCydia_ = true;
+
             substrate_ |= DepSubstrate(policy->GetCandidateVer(iterator));
             substrate_ |= DepSubstrate(iterator.CurrentVer());
         }
 
 - (void) _uicache {
     _trace();
-    system("/usr/bin/uicache");
+
+    if (UpgradeCydia_ && Finish_ > 0) {
+        setreugid(0, 0);
+        system("su -c /usr/bin/uicache mobile");
+    } else {
+        system("/usr/bin/uicache");
+    }
+
     _trace();
 }