in AppCenterDistribute/AppCenterDistribute/MSACDistributeUtil.m [67:106]
NSComparisonResult MSACCompareCurrentReleaseWithRelease(MSACReleaseDetails *releaseB) {
NSComparisonResult result = NSOrderedSame;
MSACSemVer *shortVersionA = [MSACSemVer semVerWithString:[MSAC_APP_MAIN_BUNDLE infoDictionary][@"CFBundleShortVersionString"]];
MSACSemVer *shortVersionB = [MSACSemVer semVerWithString:releaseB.shortVersion];
NSString *packageHashA = MSACPackageHash();
// Compare.
if (!shortVersionA) {
// None is using semantic versioning format, compare UUIDs.
if (!shortVersionB) {
if (![releaseB.packageHashes containsObject:packageHashA]) {
return NSOrderedAscending;
}
} else {
// Only version B is semantic versioning.
return NSOrderedAscending;
}
} else if (!shortVersionB) {
// Only version A is semantic versioning.
return NSOrderedDescending;
} else {
// Compare using semantic versioning.
result = [shortVersionA compare:shortVersionB];
// Same, use version field as numeric values for comparison.
if (result == NSOrderedSame) {
result = [(NSString *)[MSAC_APP_MAIN_BUNDLE infoDictionary][@"CFBundleVersion"] compare:releaseB.version options:NSNumericSearch];
}
// Still same, compare UUIDs.
if (result == NSOrderedSame && ![releaseB.packageHashes containsObject:packageHashA]) {
return NSOrderedAscending;
}
}
return result;
}