@@ -449,6 +449,7 @@ + (void)copyEntriesInFolder:(NSString *)sourceFolder
449
449
}
450
450
451
451
+ (void )installPackage:(NSDictionary *)updatePackage
452
+ removePendingUpdate:(BOOL )removePendingUpdate
452
453
error:(NSError **)error
453
454
{
454
455
NSString *packageHash = updatePackage[@" packageHash" ];
@@ -458,19 +459,32 @@ + (void)installPackage:(NSDictionary *)updatePackage
458
459
return ;
459
460
}
460
461
461
- NSString *previousPackageHash = [self getPreviousPackageHash: error];
462
- if (!*error && previousPackageHash && ![previousPackageHash isEqualToString: packageHash]) {
463
- NSString *previousPackageFolderPath = [self getPackageFolderPath: previousPackageHash];
464
- // Error in deleting old package will not cause the entire operation to fail.
465
- NSError *deleteError;
466
- [[NSFileManager defaultManager ] removeItemAtPath: previousPackageFolderPath
467
- error: &deleteError];
468
- if (deleteError) {
469
- NSLog (@" Error deleting old package: %@ " , deleteError);
462
+ if (!removePendingUpdate) {
463
+ NSString *currentPackageFolderPath = [self getCurrentPackageFolderPath: error];
464
+ if (!*error && currentPackageFolderPath) {
465
+ // Error in deleting pending package will not cause the entire operation to fail.
466
+ NSError *deleteError;
467
+ [[NSFileManager defaultManager ] removeItemAtPath: currentPackageFolderPath
468
+ error: &deleteError];
469
+ if (deleteError) {
470
+ NSLog (@" Error deleting pending package: %@ " , deleteError);
471
+ }
472
+ }
473
+ } else {
474
+ NSString *previousPackageHash = [self getPreviousPackageHash: error];
475
+ if (!*error && previousPackageHash && ![previousPackageHash isEqualToString: packageHash]) {
476
+ NSString *previousPackageFolderPath = [self getPackageFolderPath: previousPackageHash];
477
+ // Error in deleting old package will not cause the entire operation to fail.
478
+ NSError *deleteError;
479
+ [[NSFileManager defaultManager ] removeItemAtPath: previousPackageFolderPath
480
+ error: &deleteError];
481
+ if (deleteError) {
482
+ NSLog (@" Error deleting old package: %@ " , deleteError);
483
+ }
470
484
}
485
+ [info setValue: info[@" currentPackage" ] forKey: @" previousPackage" ];
471
486
}
472
487
473
- [info setValue: info[@" currentPackage" ] forKey: @" previousPackage" ];
474
488
[info setValue: packageHash forKey: @" currentPackage" ];
475
489
476
490
[self updateCurrentPackageInfo: info
0 commit comments