Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit e34f514

Browse files
committed
fix ios install to overwrite pending
1 parent 35201d1 commit e34f514

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

CodePush.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ failCallback:(void (^)(NSError *err))failCallback;
6969
@interface CodePushPackage : NSObject
7070

7171
+ (void)installPackage:(NSDictionary *)updatePackage
72+
removePendingUpdate:(BOOL)removePendingUpdate
7273
error:(NSError **)error;
7374

7475
+ (NSDictionary *)getCurrentPackage:(NSError **)error;

CodePush.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ - (void)savePendingUpdate:(NSString *)packageHash
446446
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
447447
NSError *error;
448448
[CodePushPackage installPackage:updatePackage
449+
removePendingUpdate:[self isPendingUpdate:nil]
449450
error:&error];
450451

451452
if (error) {

CodePushPackage.m

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,7 @@ + (void)copyEntriesInFolder:(NSString *)sourceFolder
449449
}
450450

451451
+ (void)installPackage:(NSDictionary *)updatePackage
452+
removePendingUpdate:(BOOL)removePendingUpdate
452453
error:(NSError **)error
453454
{
454455
NSString *packageHash = updatePackage[@"packageHash"];
@@ -458,19 +459,32 @@ + (void)installPackage:(NSDictionary *)updatePackage
458459
return;
459460
}
460461

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+
}
470484
}
485+
[info setValue:info[@"currentPackage"] forKey:@"previousPackage"];
471486
}
472487

473-
[info setValue:info[@"currentPackage"] forKey:@"previousPackage"];
474488
[info setValue:packageHash forKey:@"currentPackage"];
475489

476490
[self updateCurrentPackageInfo:info

0 commit comments

Comments
 (0)