diff --git a/Classes/FanControl.h b/Classes/FanControl.h index 0e36e0a..d90124e 100755 --- a/Classes/FanControl.h +++ b/Classes/FanControl.h @@ -25,6 +25,7 @@ #import "NSFileManager+DirectoryLocations.h" #import "smc.h" #import "smcWrapper.h" +#import "IOHIDSensor.h" #import "MachineDefaults.h" #import "Power.h" diff --git a/Classes/FanControl.m b/Classes/FanControl.m index cd721e7..0508033 100755 --- a/Classes/FanControl.m +++ b/Classes/FanControl.m @@ -150,7 +150,11 @@ -(void) awakeFromNib { @0, PREF_AC_SELECTION, @0, PREF_CHARGING_SELECTION, @0, PREF_MENU_DISPLAYMODE, +#if TARGET_CPU_ARM64 + @"Tp0D",PREF_TEMPERATURE_SENSOR, +#else @"TC0D",PREF_TEMPERATURE_SENSOR, +#endif @0, PREF_NUMBEROF_LAUNCHES, @NO,PREF_DONATIONMESSAGE_DISPLAY, [NSArchiver archivedDataWithRootObject:[NSColor blackColor]],PREF_MENU_TEXTCOLOR, @@ -334,6 +338,13 @@ - (IBAction)delete_favorite:(id)sender{ } +- (BOOL)usesIOHIDForTemperature { +#if TARGET_CPU_ARM64 + return [[MachineDefaults computerModel] rangeOfString:@"MacBookPro17"].length > 0; +#else + return false; +#endif +} // Called via a timer mechanism. This is where all the temp / RPM reading is done. //reads fan data and updates the gui @@ -399,7 +410,11 @@ -(void) readFanData:(id)caller{ if (bNeedTemp == true) { // Read current temperature and format text for the menubar. - c_temp = [smcWrapper get_maintemp]; + if ([self usesIOHIDForTemperature]) { + c_temp = [IOHIDSensor getSOCTemperature]; + } else { + c_temp = [smcWrapper get_maintemp]; + } if ([[defaults objectForKey:PREF_TEMP_UNIT] intValue]==0) { temp = [NSString stringWithFormat:@"%@%CC",@(c_temp),(unsigned short)0xb0]; @@ -534,6 +549,15 @@ - (IBAction)closePreferences:(id)sender{ [DefaultsController revert:sender]; } +-(void)setFansToAuto:(bool)is_auto { + for (int fan_index=0;fan_index<[[FavoritesController arrangedObjects][0][PREF_FAN_ARRAY] count];fan_index++) { + [self setFanToAuto:fan_index is_auto:is_auto]; + } +} + +-(void)setFanToAuto:(int)fan_index is_auto:(bool)is_auto { + [smcWrapper setKey_external:[NSString stringWithFormat:@"F%dMd",fan_index] value:is_auto ? @"00" : @"01"]; +} //set the new fan settings @@ -549,7 +573,7 @@ -(void)apply_settings:(id)sender controllerindex:(int)cIndex{ [smcWrapper setKey_external:[NSString stringWithFormat:@"F%dMn",i] value:[[FanController arrangedObjects][i][PREF_FAN_SELSPEED] tohex]]; } else { bool is_auto = [[FanController arrangedObjects][i][PREF_FAN_AUTO] boolValue]; - [smcWrapper setKey_external:[NSString stringWithFormat:@"F%dMd",i] value:is_auto ? @"00" : @"01"]; + [self setFanToAuto:i is_auto:is_auto]; float f_val = [[FanController arrangedObjects][i][PREF_FAN_SELSPEED] floatValue]; uint8 *vals = (uint8*)&f_val; //NSString str_val = ; @@ -676,9 +700,7 @@ -(void)performReset } error = nil; if ([[MachineDefaults computerModel] rangeOfString:@"MacBookPro15"].location != NSNotFound) { - for (int i=0;i<[[FavoritesController arrangedObjects][0][PREF_FAN_ARRAY] count];i++) { - [smcWrapper setKey_external:[NSString stringWithFormat:@"F%dMd",i] value:@"00"]; - } + [self setFansToAuto:true]; } NSString *domainName = [[NSBundle mainBundle] bundleIdentifier]; @@ -733,6 +755,13 @@ -(void) syncBinder:(Boolean)bind{ #pragma mark **Power Watchdog-Methods** +- (void)systemWillSleep:(id)sender{ +#if TARGET_CPU_ARM64 + [FanControl setRights]; + [self setFansToAuto:true]; +#endif +} + - (void)systemDidWakeFromSleep:(id)sender{ [self apply_settings:nil controllerindex:[[defaults objectForKey:PREF_SELECTION_DEFAULT] intValue]]; } diff --git a/Classes/IOHIDSensor.h b/Classes/IOHIDSensor.h new file mode 100644 index 0000000..72ddc52 --- /dev/null +++ b/Classes/IOHIDSensor.h @@ -0,0 +1,57 @@ +/* + * FanControl + * + * Copyright (c) 2006-2012 Hendrik Holtmann + * + * IOHIDSensor.h - MacBook(Pro) FanControl application + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import + +#import +#import + +// https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-1035.70.7/IOHIDFamily/AppleHIDUsageTables.h.auto.html +#define kHIDPage_AppleVendor 0xff00 +#define kHIDUsage_AppleVendor_TemperatureSensor 0x0005 + +// https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-1035.70.7/IOHIDFamily/IOHIDEventTypes.h.auto.html +#ifdef __LP64__ +typedef double IOHIDFloat; +#else +typedef float IOHIDFloat; +#endif + +// https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-1035.70.7/IOHIDFamily/IOHIDEventTypes.h.auto.html +#define IOHIDEventFieldBase(type) (type << 16) +#define kIOHIDEventTypeTemperature 15 + + +typedef struct __IOHIDEvent *IOHIDEventRef; +typedef struct __IOHIDServiceClient *IOHIDServiceClientRef; + +IOHIDEventSystemClientRef IOHIDEventSystemClientCreate(CFAllocatorRef); +void IOHIDEventSystemClientSetMatching(IOHIDEventSystemClientRef, CFDictionaryRef); +IOHIDEventRef IOHIDServiceClientCopyEvent(IOHIDServiceClientRef, int64_t, int32_t, int64_t); +IOHIDFloat IOHIDEventGetFloatValue(IOHIDEventRef event, uint32_t field); + +@interface IOHIDSensor : NSObject { +} + ++ (float) getSOCTemperature; + +@end diff --git a/Classes/IOHIDSensor.m b/Classes/IOHIDSensor.m new file mode 100644 index 0000000..b439339 --- /dev/null +++ b/Classes/IOHIDSensor.m @@ -0,0 +1,70 @@ +/* + * FanControl + * + * Copyright (c) 2006-2012 Hendrik Holtmann + * + * IOHIDSensor.m - MacBook(Pro) FanControl application + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import "IOHIDSensor.h" + +@implementation IOHIDSensor + +static BOOL isSOCSensor(CFStringRef sensorName) { + return CFStringFind(sensorName, CFSTR("SOC"), kCFCompareCaseInsensitive).location != kCFNotFound; +} + +static float toOneDecimalPlace(float value) { + return roundf(10.0f * value) / 10.0f; +} + ++ (float) getSOCTemperature { + IOHIDEventSystemClientRef eventSystemClient = IOHIDEventSystemClientCreate(kCFAllocatorDefault); + CFArrayRef services = IOHIDEventSystemClientCopyServices(eventSystemClient); + if (services) { + + float socSensorSum = 0.0f; + int socSensorCount = 0; + + for (int i = 0; i < CFArrayGetCount(services); i++) { + IOHIDServiceClientRef serviceClientRef = (IOHIDServiceClientRef)CFArrayGetValueAtIndex(services, i); + CFStringRef sensorName = IOHIDServiceClientCopyProperty(serviceClientRef, CFSTR("Product")); + if (sensorName) { + if (isSOCSensor(sensorName)) { + IOHIDEventRef event = IOHIDServiceClientCopyEvent(serviceClientRef, kIOHIDEventTypeTemperature, 0, 0); + if (event) { + IOHIDFloat sensorTemperature = IOHIDEventGetFloatValue(event, IOHIDEventFieldBase(kIOHIDEventTypeTemperature)); + CFRelease(event); + socSensorSum += sensorTemperature; + socSensorCount++; + } + } + CFRelease(sensorName); + } + } + + CFRelease(services); + CFRelease(eventSystemClient); + + float avgSOCTemp = socSensorCount > 0 ? socSensorSum / socSensorCount : 0.0f; + return toOneDecimalPlace(avgSOCTemp); + } + + return 0.0f; +} + +@end diff --git a/Classes/Power.h b/Classes/Power.h index a29df84..0340e9a 100644 --- a/Classes/Power.h +++ b/Classes/Power.h @@ -58,6 +58,8 @@ //delegate Prototypes @interface NSObject (PowerDelegate) +- (void)systemWillSleep:(id)sender; + - (void)systemDidWakeFromSleep:(id)sender; - (void)powerChangeToBattery:(id)sender; diff --git a/Classes/Power.m b/Classes/Power.m index 39ed9c2..6690c18 100644 --- a/Classes/Power.m +++ b/Classes/Power.m @@ -101,6 +101,7 @@ - (void)powerMessageReceived:(natural_t)messageType withArgument:(void *) messag switch (messageType) { case kIOMessageSystemWillSleep: + [_delegate systemWillSleep:self]; IOAllowPowerChange(root_port, (long)messageArgument); break; case kIOMessageCanSystemSleep: diff --git a/Classes/smcWrapper.m b/Classes/smcWrapper.m index 7828059..83d7419 100755 --- a/Classes/smcWrapper.m +++ b/Classes/smcWrapper.m @@ -70,7 +70,11 @@ +(float)readTempSensors NSString *sensor = [[NSUserDefaults standardUserDefaults] objectForKey:PREF_TEMPERATURE_SENSOR]; SMCReadKey2((char*)[sensor UTF8String], &val,conn); retValue = [self convertToNumber:val]; +#if TARGET_CPU_ARM64 + allSensors = [NSArray arrayWithObjects:@"Tp01",@"Tp05",@"Tp09",@"Tp0b",@"Tp0D",@"Tp0H",@"Tp0L",@"Tp0P",@"Tp0T",@"Tp0X",nil]; +#else allSensors = [NSArray arrayWithObjects:@"TC0D",@"TC0P",@"TCAD",@"TC0H",@"TC0F",@"TCAH",@"TCBH",nil]; +#endif if (retValue<=0 || floor(retValue) == 129 ) { //workaround for some iMac Models for (NSString *sensor in allSensors) { SMCReadKey2((char*)[sensor UTF8String], &val,conn); diff --git a/Readme.md b/Readme.md index b9d0184..ac34f60 100644 --- a/Readme.md +++ b/Readme.md @@ -18,7 +18,7 @@ $ brew install --cask smcfancontrol After that you'll be able to use Spotlight to launch smcFanControl normally. :-) -Requirements: Intel Mac / OS X 10.7 or higher +Requirements: Apple Silicon or Intel Mac / OS X 10.7 or higher Compiled version: https://www.eidac.de/smcfancontrol/smcfancontrol_2_6.zip diff --git a/Ressources/Dutch.lproj/F.A.Q.rtf b/Ressources/Dutch.lproj/F.A.Q.rtf index d2b3722..807e1da 100644 --- a/Ressources/Dutch.lproj/F.A.Q.rtf +++ b/Ressources/Dutch.lproj/F.A.Q.rtf @@ -30,7 +30,7 @@ All changes smcFanControl does to the fan controlling get lost after you shutdow \b I get a "smcFanControl has not been tested on this machine" warning. What does that mean?\ -\b0 Technically smcFanControl supports every intel mac, but it does not come with defaults for every machine. If you get the warning, smcFanControl tries to read out the fan-details directly from the System Management Controller. If you follow the instructions (no other fan control software is running etc.) you should have no problem running smcFanControl on a machine it has not been tested on.\ +\b0 Technically smcFanControl supports every Apple Silicon & Intel Mac, but it does not come with defaults for every machine. If you get the warning, smcFanControl tries to read out the fan-details directly from the System Management Controller. If you follow the instructions (no other fan control software is running etc.) you should have no problem running smcFanControl on a machine it has not been tested on.\ \ \b How can I restore the Apple defaults for fanspeed?\ @@ -74,7 +74,7 @@ Will there be a version of smcFanControl for Powerbooks or other PPC based Macs? \b Wouldn't it be even better to read out the temperature and set the fan speeds depending on the readout than just set the minimum fan speed and let automatic fan control as defined by apple do the rest?\ -\b0 Yes, that approach is even better and could make your machine running cooler, when you are at higher loads. BUT: I did not take this route for smcFanControl, cause it has some risks. Adjusting the fan speed to CPU temperature requires you have a program running in the background (e.g. a daemon) that adjust fan speed continuously . If that program ever crashes or becomes incompatible cause of a System Update (or the readouts of the temperature sensor get inappropriate) , the fans could get set to a wrong (too low) speed and this could probably damage the machine. In addition to that the fan-control-logic is quite complicate. An intel mac has about 10 temperature sensors, that are continuously read out and are used for monitoring and setting the right fan speeds. So it would be "not so great" to read out just the CPU temperature as a foundation for the fan-controlling.\ +\b0 Yes, that approach is even better and could make your machine running cooler, when you are at higher loads. BUT: I did not take this route for smcFanControl, cause it has some risks. Adjusting the fan speed to CPU temperature requires you have a program running in the background (e.g. a daemon) that adjust fan speed continuously . If that program ever crashes or becomes incompatible cause of a System Update (or the readouts of the temperature sensor get inappropriate) , the fans could get set to a wrong (too low) speed and this could probably damage the machine. In addition to that the fan-control-logic is quite complicate. A Mac has about 10 temperature sensors, that are continuously read out and are used for monitoring and setting the right fan speeds. So it would be "not so great" to read out just the CPU temperature as a foundation for the fan-controlling.\ \ \b I have got a MBP and smcFanControl is reporting 0rpm for one of my fans?\ diff --git a/Ressources/English.lproj/F.A.Q.rtf b/Ressources/English.lproj/F.A.Q.rtf index e69560c..e8942e0 100644 --- a/Ressources/English.lproj/F.A.Q.rtf +++ b/Ressources/English.lproj/F.A.Q.rtf @@ -29,7 +29,7 @@ All changes smcFanControl does to the fan controlling get lost after you shutdow \b I get a "smcFanControl has not been tested on this machine" warning. What does that mean?\ -\b0 Technically smcFanControl supports every intel mac, but it does not come with defaults for every machine. If you get the warning, smcFanControl tries to read out the fan-details directly from the System Management Controller. If you follow the instructions (no other fan control software is running etc.) you should have no problem running smcFanControl on a machine it has not been tested on.\ +\b0 Technically smcFanControl supports every Apple Silicon & Intel Mac, but it does not come with defaults for every machine. If you get the warning, smcFanControl tries to read out the fan-details directly from the System Management Controller. If you follow the instructions (no other fan control software is running etc.) you should have no problem running smcFanControl on a machine it has not been tested on.\ \ \b How can I restore the Apple defaults for fanspeed?\ @@ -73,7 +73,7 @@ Will there be a version of smcFanControl for Powerbooks or other PPC based Macs? \b Wouldn't it be even better to read out the temperature and set the fan speeds depending on the readout than just set the minimum fan speed and let automatic fan control as defined by apple do the rest?\ -\b0 Yes, that approach is even better and could make your machine running cooler, when you are at higher loads. BUT: I did not take this route for smcFanControl, cause it has some risks. Adjusting the fan speed to CPU temperature requires you have a program running in the background (e.g. a daemon) that adjust fan speed continuously . If that program ever crashes or becomes incompatible cause of a System Update (or the readouts of the temperature sensor get inappropriate) , the fans could get set to a wrong (too low) speed and this could probably damage the machine. In addition to that the fan-control-logic is quite complicate. An intel mac has about 10 temperature sensors, that are continuously read out and are used for monitoring and setting the right fan speeds. So it would be "not so great" to read out just the CPU temperature as a foundation for the fan-controlling.\ +\b0 Yes, that approach is even better and could make your machine running cooler, when you are at higher loads. BUT: I did not take this route for smcFanControl, cause it has some risks. Adjusting the fan speed to CPU temperature requires you have a program running in the background (e.g. a daemon) that adjust fan speed continuously . If that program ever crashes or becomes incompatible cause of a System Update (or the readouts of the temperature sensor get inappropriate) , the fans could get set to a wrong (too low) speed and this could probably damage the machine. In addition to that the fan-control-logic is quite complicate. A Mac has about 10 temperature sensors, that are continuously read out and are used for monitoring and setting the right fan speeds. So it would be "not so great" to read out just the CPU temperature as a foundation for the fan-controlling.\ \ \b I have got a MBP and smcFanControl is reporting 0rpm for one of my fans?\ diff --git a/Ressources/French.lproj/F.A.Q.rtf b/Ressources/French.lproj/F.A.Q.rtf index d3db022..36d79ff 100644 --- a/Ressources/French.lproj/F.A.Q.rtf +++ b/Ressources/French.lproj/F.A.Q.rtf @@ -29,7 +29,7 @@ Oui \b J'obtiens le message d'avertissement "smcFanControl n'a pas encore \'e9t\'e9 test\'e9 sur cette machine". Qu'est ce que cela signifie?\ -\b0 Techniquement, smcFanControl fonctionne avec tous les Mac intel, mais ces machines ont des valeurs par d\'e9faut diff\'e9rente. Si vous obtenez ce message, smcFanControl tente de lire la valeur par d\'e9faut directement du System Management Controller. Si vous suivez les instructions (ne pas lancer d'autres logiciels de gestion de ventilation, etc.) vous devriez pouvoir utiliser smcFanControl sur une machine que n'a pas encore \'e9t\'e9 test\'e9e par nos soins.\ +\b0 Techniquement, smcFanControl fonctionne avec tous les Mac Apple Silicon et Intel, mais ces machines ont des valeurs par d\'e9faut diff\'e9rente. Si vous obtenez ce message, smcFanControl tente de lire la valeur par d\'e9faut directement du System Management Controller. Si vous suivez les instructions (ne pas lancer d'autres logiciels de gestion de ventilation, etc.) vous devriez pouvoir utiliser smcFanControl sur une machine que n'a pas encore \'e9t\'e9 test\'e9e par nos soins.\ \ \b Comment revenir au valeur par d\'e9fauts d\'e9finies par Apple ?\ @@ -63,7 +63,7 @@ Toutefois, vous pouvez d\'e9finir une vitesse minimale sous OSX puis red\'e9mar \b Ne serait-il pas mieux de d\'e9finir la vitesse de rotation en fonction de la temp\'e9rature plut\'f4t que de choisir une vitesse minimale et laisse Apple faire le reste ?\ -\b0 Oui, cette approche serait probablement plus int\'e9ressante. MAIS : cette m\'e9thode n'a pas \'e9t\'e9 retenue car elle comporte des risques. D\'e9finir la vitesse en fonction de la temp\'e9rature requiert un programme qui tourne en continue. Si ce programme crash ou devient incompatible \'e0 la suite d'une mise \'e0 jour, le ventilateur pourrait \'eatre d\'e9fini \'e0 une valeur trop basse qui pourrait endommager votre machine. D'autre part, cette logique est complexe \'e0 mettre en oeuvre. Un mac intel poss\'e8de une dizaine de sondes de temp\'e9rature, lues continuellement afin de d\'e9finir la vitesse ad\'e9quate de rotation des ventilateurs. Ainsi il ne serait pas judicieux de se reposer sur la lecture d'une seule sonde pour le contr\'f4le de la ventilation.\ +\b0 Oui, cette approche serait probablement plus int\'e9ressante. MAIS : cette m\'e9thode n'a pas \'e9t\'e9 retenue car elle comporte des risques. D\'e9finir la vitesse en fonction de la temp\'e9rature requiert un programme qui tourne en continue. Si ce programme crash ou devient incompatible \'e0 la suite d'une mise \'e0 jour, le ventilateur pourrait \'eatre d\'e9fini \'e0 une valeur trop basse qui pourrait endommager votre machine. D'autre part, cette logique est complexe \'e0 mettre en oeuvre. Un Mac poss\'e8de une dizaine de sondes de temp\'e9rature, lues continuellement afin de d\'e9finir la vitesse ad\'e9quate de rotation des ventilateurs. Ainsi il ne serait pas judicieux de se reposer sur la lecture d'une seule sonde pour le contr\'f4le de la ventilation.\ \ \b Je poss\'e8de un MBP et smcFanControl m'indique 0 rpm pour l'un des ventilateurs\ diff --git a/Ressources/German.lproj/F.A.Q.rtf b/Ressources/German.lproj/F.A.Q.rtf index 614b26b..3a44d64 100644 --- a/Ressources/German.lproj/F.A.Q.rtf +++ b/Ressources/German.lproj/F.A.Q.rtf @@ -30,7 +30,7 @@ All changes smcFanControl does to the fan controlling get lost after you shutdow \b I get a "smcFanControl has not been tested on this machine" warning. What does that mean?\ -\b0 Technically smcFanControl supports every intel mac, but it does not come with defaults for every machine. If you get the warning, smcFanControl tries to read out the fan-details directly from the System Management Controller. If you follow the instructions (no other fan control software is running etc.) you should have no problem running smcFanControl on a machine it has not been tested on.\ +\b0 Technically smcFanControl supports every Apple Silicon & Intel Mac, but it does not come with defaults for every machine. If you get the warning, smcFanControl tries to read out the fan-details directly from the System Management Controller. If you follow the instructions (no other fan control software is running etc.) you should have no problem running smcFanControl on a machine it has not been tested on.\ \ \b How can I restore the Apple defaults for fanspeed?\ @@ -74,7 +74,7 @@ Will there be a version of smcFanControl for Powerbooks or other PPC based Macs? \b Wouldn't it be even better to read out the temperature and set the fan speeds depending on the readout than just set the minimum fan speed and let automatic fan control as defined by apple do the rest?\ -\b0 Yes, that approach is even better and could make your machine running cooler, when you are at higher loads. BUT: I did not take this route for smcFanControl, cause it has some risks. Adjusting the fan speed to CPU temperature requires you have a program running in the background (e.g. a daemon) that adjust fan speed continuously . If that program ever crashes or becomes incompatible cause of a System Update (or the readouts of the temperature sensor get inappropriate) , the fans could get set to a wrong (too low) speed and this could probably damage the machine. In addition to that the fan-control-logic is quite complicate. An intel mac has about 10 temperature sensors, that are continuously read out and are used for monitoring and setting the right fan speeds. So it would be "not so great" to read out just the CPU temperature as a foundation for the fan-controlling.\ +\b0 Yes, that approach is even better and could make your machine running cooler, when you are at higher loads. BUT: I did not take this route for smcFanControl, cause it has some risks. Adjusting the fan speed to CPU temperature requires you have a program running in the background (e.g. a daemon) that adjust fan speed continuously . If that program ever crashes or becomes incompatible cause of a System Update (or the readouts of the temperature sensor get inappropriate) , the fans could get set to a wrong (too low) speed and this could probably damage the machine. In addition to that the fan-control-logic is quite complicate. A Mac has about 10 temperature sensors, that are continuously read out and are used for monitoring and setting the right fan speeds. So it would be "not so great" to read out just the CPU temperature as a foundation for the fan-controlling.\ \ \b I have got a MBP and smcFanControl is reporting 0rpm for one of my fans?\ diff --git a/Ressources/Machines.plist b/Ressources/Machines.plist index a6494dd..e19657a 100644 --- a/Ressources/Machines.plist +++ b/Ressources/Machines.plist @@ -638,5 +638,38 @@ NumFans 2 + + Fans + + + Description + Left Fan + Maxspeed + 4296 + Minspeed + 1499 + selspeed + 1499 + + + Description + Right Fan + Maxspeed + 4744 + Minspeed + 1499 + selspeed + 1499 + + + Machine + MacBookPro18,1 + Maxspeed + 4744 + Minspeed + 1499 + NumFans + 2 + diff --git a/Ressources/Spanish.lproj/F.A.Q.rtf b/Ressources/Spanish.lproj/F.A.Q.rtf index 44f14b1..ca77242 100644 --- a/Ressources/Spanish.lproj/F.A.Q.rtf +++ b/Ressources/Spanish.lproj/F.A.Q.rtf @@ -29,7 +29,7 @@ Todos los cambios realizados por smcFanControl se pierden al apagar el ordenador \b Me sale el aviso "smcFanControl no ha sido probado en esta m\'e1quina". \'bfQu\'e9 significa?\ -\b0 T\'e9cnicamente smcFanControl funciona en todos los mac Intel, pero no trae los valores por defecto para todos los modelos. Si sale este aviso smcFanControl tratar\'e1 de leer los valores por defecto del SMC (System Management Controller) Si sigue las instrucciones (no hay otro controlador de ventiladoes, etc) no deber\'eda de tener ning\'fan problema en usarlo en un modelo en el que no haya sido probado a\'fan.\ +\b0 T\'e9cnicamente smcFanControl funciona en todos los Mac Apple Silicon o Intel, pero no trae los valores por defecto para todos los modelos. Si sale este aviso smcFanControl tratar\'e1 de leer los valores por defecto del SMC (System Management Controller) Si sigue las instrucciones (no hay otro controlador de ventiladoes, etc) no deber\'eda de tener ning\'fan problema en usarlo en un modelo en el que no haya sido probado a\'fan.\ \ \b \'bfComo puedo recobrar los valores por defecto de Apple para la velocidad de los ventiladores?\ @@ -73,7 +73,7 @@ b) La m\'e1quina se apaga.\ \b \'bfNo ser\'eda mejor leer los valores de temperaura y ajustar la velocidad que limitarse a cambiar el valor m\'ednimo y dejar que el control autom\'e1tico de ventiladores de Apple haga el resto?\ -\b0 Si, ese camino es mejor y puede que haga que la m\'e1quina funcione m\'e1s fresca cuando la carga es alta... PERO: No eleg\'ed este camino por los los riesgos que tiene. Requiere un programa en segundo plano (un daemon) ajustando constantemente la velocidad. Si este programa es incompatible con una fuura actualiaci\'f3n del sistema o se cuelga puede fijar la velocidad a un valor demasiado bajo y estropear la m\'e1quina. Adem\'e1s la l\'f3gica que hay que a\'f1adir es muy complicada, un mac intel tiene en torno a 10 sensores de temperatura, con lo que simplemente "leer la temperatura de la CPU y ajustar el ventilador" no es tan buena idea.\ +\b0 Si, ese camino es mejor y puede que haga que la m\'e1quina funcione m\'e1s fresca cuando la carga es alta... PERO: No eleg\'ed este camino por los los riesgos que tiene. Requiere un programa en segundo plano (un daemon) ajustando constantemente la velocidad. Si este programa es incompatible con una fuura actualiaci\'f3n del sistema o se cuelga puede fijar la velocidad a un valor demasiado bajo y estropear la m\'e1quina. Adem\'e1s la l\'f3gica que hay que a\'f1adir es muy complicada, un Mac tiene en torno a 10 sensores de temperatura, con lo que simplemente "leer la temperatura de la CPU y ajustar el ventilador" no es tan buena idea.\ \ \b \'bfTengo un MBP y smcFanControl dice que un ventilador gira a 0rpm?\ diff --git a/Sparkle.framework/Autoupdate b/Sparkle.framework/Autoupdate new file mode 120000 index 0000000..1a4fc02 --- /dev/null +++ b/Sparkle.framework/Autoupdate @@ -0,0 +1 @@ +Versions/Current/Autoupdate \ No newline at end of file diff --git a/Sparkle.framework/Updater.app b/Sparkle.framework/Updater.app new file mode 120000 index 0000000..18f3223 --- /dev/null +++ b/Sparkle.framework/Updater.app @@ -0,0 +1 @@ +Versions/Current/Updater.app \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/Sparkle.framework/Versions/A/Headers/SUAppcast.h deleted file mode 100644 index a035f18..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUAppcast.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// SUAppcast.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCAST_H -#define SUAPPCAST_H - -#import -#import "SUExport.h" - -@class SUAppcastItem; -SU_EXPORT @interface SUAppcast : NSObject - -@property (copy) NSString *userAgentString; -@property (copy) NSDictionary *httpHeaders; - -- (void)fetchAppcastFromURL:(NSURL *)url completionBlock:(void (^)(NSError *))err; -- (SUAppcast *)copyWithoutDeltaUpdates; - -@property (readonly, copy) NSArray *items; -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h deleted file mode 100644 index 86843bf..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// SUAppcastItem.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCASTITEM_H -#define SUAPPCASTITEM_H - -#import -#import "SUExport.h" - -SU_EXPORT @interface SUAppcastItem : NSObject -@property (copy, readonly) NSString *title; -@property (copy, readonly) NSDate *date; -@property (copy, readonly) NSString *itemDescription; -@property (strong, readonly) NSURL *releaseNotesURL; -@property (copy, readonly) NSString *DSASignature; -@property (copy, readonly) NSString *minimumSystemVersion; -@property (copy, readonly) NSString *maximumSystemVersion; -@property (strong, readonly) NSURL *fileURL; -@property (copy, readonly) NSString *versionString; -@property (copy, readonly) NSString *displayVersionString; -@property (copy, readonly) NSDictionary *deltaUpdates; -@property (strong, readonly) NSURL *infoURL; - -// Initializes with data from a dictionary provided by the RSS class. -- (instancetype)initWithDictionary:(NSDictionary *)dict; -- (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error; - -@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate; -@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate; -@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate; - -// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. -@property (readonly, copy) NSDictionary *propertiesDictionary; - -- (NSURL *)infoURL; - -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUErrors.h b/Sparkle.framework/Versions/A/Headers/SUErrors.h deleted file mode 100644 index d73aadb..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUErrors.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// SUErrors.h -// Sparkle -// -// Created by C.W. Betts on 10/13/14. -// Copyright (c) 2014 Sparkle Project. All rights reserved. -// - -#ifndef SUERRORS_H -#define SUERRORS_H - -#import -#import "SUExport.h" - -/** - * Error domain used by Sparkle - */ -SU_EXPORT extern NSString *const SUSparkleErrorDomain; - -typedef NS_ENUM(OSStatus, SUError) { - // Appcast phase errors. - SUAppcastParseError = 1000, - SUNoUpdateError = 1001, - SUAppcastError = 1002, - SURunningFromDiskImageError = 1003, - - // Downlaod phase errors. - SUTemporaryDirectoryError = 2000, - - // Extraction phase errors. - SUUnarchivingError = 3000, - SUSignatureError = 3001, - - // Installation phase errors. - SUFileCopyFailure = 4000, - SUAuthenticationFailure = 4001, - SUMissingUpdateError = 4002, - SUMissingInstallerToolError = 4003, - SURelaunchError = 4004, - SUInstallationError = 4005, - SUDowngradeError = 4006, - - // System phase errors - SUSystemPowerOffError = 5000 -}; - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h b/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h deleted file mode 100644 index d7f2a48..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// SUStandardVersionComparator.h -// Sparkle -// -// Created by Andy Matuschak on 12/21/07. -// Copyright 2007 Andy Matuschak. All rights reserved. -// - -#ifndef SUSTANDARDVERSIONCOMPARATOR_H -#define SUSTANDARDVERSIONCOMPARATOR_H - -#import -#import "SUExport.h" -#import "SUVersionComparisonProtocol.h" - -/*! - Sparkle's default version comparator. - - This comparator is adapted from MacPAD, by Kevin Ballard. - It's "dumb" in that it does essentially string comparison, - in components split by character type. -*/ -SU_EXPORT @interface SUStandardVersionComparator : NSObject - -/*! - Returns a singleton instance of the comparator. -*/ -+ (SUStandardVersionComparator *)defaultComparator; - -/*! - Compares version strings through textual analysis. - - See the implementation for more details. -*/ -- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/Sparkle.framework/Versions/A/Headers/SUUpdater.h deleted file mode 100644 index 8602485..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUUpdater.h +++ /dev/null @@ -1,366 +0,0 @@ -// -// SUUpdater.h -// Sparkle -// -// Created by Andy Matuschak on 1/4/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUUPDATER_H -#define SUUPDATER_H - -#import -#import "SUExport.h" -#import "SUVersionComparisonProtocol.h" -#import "SUVersionDisplayProtocol.h" - -@class SUAppcastItem, SUAppcast; - -@protocol SUUpdaterDelegate; - -/*! - The main API in Sparkle for controlling the update mechanism. - - This class is used to configure the update paramters as well as manually - and automatically schedule and control checks for updates. - */ -SU_EXPORT @interface SUUpdater : NSObject - -@property (unsafe_unretained) IBOutlet id delegate; - -+ (SUUpdater *)sharedUpdater; -+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; -- (instancetype)initForBundle:(NSBundle *)bundle; - -@property (readonly, strong) NSBundle *hostBundle; -@property (strong, readonly) NSBundle *sparkleBundle; - -@property BOOL automaticallyChecksForUpdates; - -@property NSTimeInterval updateCheckInterval; - -/*! - * The URL of the appcast used to download update information. - * - * This property must be called on the main thread. - */ -@property (copy) NSURL *feedURL; - -@property (nonatomic, copy) NSString *userAgentString; - -@property (copy) NSDictionary *httpHeaders; - -@property BOOL sendsSystemProfile; - -@property BOOL automaticallyDownloadsUpdates; - -@property (nonatomic, copy) NSString *decryptionPassword; - -/*! - Explicitly checks for updates and displays a progress dialog while doing so. - - This method is meant for a main menu item. - Connect any menu item to this action in Interface Builder, - and Sparkle will check for updates and report back its findings verbosely - when it is invoked. - */ -- (IBAction)checkForUpdates:(id)sender; - -/*! - Checks for updates, but does not display any UI unless an update is found. - - This is meant for programmatically initating a check for updates. That is, - it will display no UI unless it actually finds an update, in which case it - proceeds as usual. - - If the fully automated updating is turned on, however, this will invoke that - behavior, and if an update is found, it will be downloaded and prepped for - installation. - */ -- (void)checkForUpdatesInBackground; - -/*! - Checks for updates and, if available, immediately downloads and installs them. - A progress dialog is shown but the user will never be prompted to read the - release notes. - - You may want to respond to the userDidCancelDownload delegate method in case - the user clicks the "Cancel" button while the update is downloading. - */ -- (void)installUpdatesIfAvailable; - -/*! - Returns the date of last update check. - - \returns \c nil if no check has been performed. - */ -@property (readonly, copy) NSDate *lastUpdateCheckDate; - -/*! - Begins a "probing" check for updates which will not actually offer to - update to that version. - - However, the delegate methods - SUUpdaterDelegate::updater:didFindValidUpdate: and - SUUpdaterDelegate::updaterDidNotFindUpdate: will be called, - so you can use that information in your UI. - */ -- (void)checkForUpdateInformation; - -/*! - Appropriately schedules or cancels the update checking timer according to - the preferences for time interval and automatic checks. - - This call does not change the date of the next check, - but only the internal NSTimer. - */ -- (void)resetUpdateCycle; - -@property (readonly) BOOL updateInProgress; - -@end - -// ----------------------------------------------------------------------------- -// SUUpdater Notifications for events that might be interesting to more than just the delegate -// The updater will be the notification object -// ----------------------------------------------------------------------------- -SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification; -SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification; -SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification; -SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification; -#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification; -#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification; - -// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo -SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey; -// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo -SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey; - -// ----------------------------------------------------------------------------- -// SUUpdater Delegate: -// ----------------------------------------------------------------------------- - -/*! - Provides methods to control the behavior of an SUUpdater object. - */ -@protocol SUUpdaterDelegate -@optional - -/*! - Returns whether to allow Sparkle to pop up. - - For example, this may be used to prevent Sparkle from interrupting a setup assistant. - - \param updater The SUUpdater instance. - */ -- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater; - -/*! - Returns additional parameters to append to the appcast URL's query string. - - This is potentially based on whether or not Sparkle will also be sending along the system profile. - - \param updater The SUUpdater instance. - \param sendingProfile Whether the system profile will also be sent. - - \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. - */ -- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; - -/*! - Returns a custom appcast URL. - - Override this to dynamically specify the entire URL. - - \param updater The SUUpdater instance. - */ -- (NSString *)feedURLStringForUpdater:(SUUpdater *)updater; - -/*! - Returns whether Sparkle should prompt the user about automatic update checks. - - Use this to override the default behavior. - - \param updater The SUUpdater instance. - */ -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater; - -/*! - Called after Sparkle has downloaded the appcast from the remote server. - - Implement this if you want to do some special handling with the appcast once it finishes loading. - - \param updater The SUUpdater instance. - \param appcast The appcast that was downloaded from the remote server. - */ -- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -/*! - Returns the item in the appcast corresponding to the update that should be installed. - - If you're using special logic or extensions in your appcast, - implement this to use your own logic for finding a valid update, if any, - in the given appcast. - - \param appcast The appcast that was downloaded from the remote server. - \param updater The SUUpdater instance. - */ -- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater; - -/*! - Called when a valid update is found by the update driver. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - */ -- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; - -/*! - Called when a valid update is not found. - - \param updater The SUUpdater instance. - */ -- (void)updaterDidNotFindUpdate:(SUUpdater *)updater; - -/*! - Called immediately before downloading the specified update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be downloaded. - \param request The mutable URL request that will be used to download the update. - */ -- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request; - -/*! - Called after the specified update failed to download. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that failed to download. - \param error The error generated by the failed download. - */ -- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error; - -/*! - Called when the user clicks the cancel button while and update is being downloaded. - - \param updater The SUUpdater instance. - */ -- (void)userDidCancelDownload:(SUUpdater *)updater; - -/*! - Called immediately before installing the specified update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - */ -- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; - -/*! - Returns whether the relaunch should be delayed in order to perform other tasks. - - This is not called if the user didn't relaunch on the previous update, - in that case it will immediately restart. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - \param invocation The invocation that must be completed before continuing with the relaunch. - - \return \c YES to delay the relaunch until \p invocation is invoked. - */ -- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation; - -/*! - Returns whether the application should be relaunched at all. - - Some apps \b cannot be relaunched under certain circumstances. - This method can be used to explicitly prevent a relaunch. - - \param updater The SUUpdater instance. - */ -- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater; - -/*! - Called immediately before relaunching. - - \param updater The SUUpdater instance. - */ -- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; - -/*! - Returns an object that compares version numbers to determine their arithmetic relation to each other. - - This method allows you to provide a custom version comparator. - If you don't implement this method or return \c nil, - the standard version comparator will be used. - - \sa SUStandardVersionComparator - - \param updater The SUUpdater instance. - */ -- (id)versionComparatorForUpdater:(SUUpdater *)updater; - -/*! - Returns an object that formats version numbers for display to the user. - - If you don't implement this method or return \c nil, - the standard version formatter will be used. - - \sa SUUpdateAlert - - \param updater The SUUpdater instance. - */ -- (id)versionDisplayerForUpdater:(SUUpdater *)updater; - -/*! - Returns the path which is used to relaunch the client after the update is installed. - - The default is the path of the host bundle. - - \param updater The SUUpdater instance. - */ -- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; - -/*! - Called before an updater shows a modal alert window, - to give the host the opportunity to hide attached windows that may get in the way. - - \param updater The SUUpdater instance. - */ -- (void)updaterWillShowModalAlert:(SUUpdater *)updater; - -/*! - Called after an updater shows a modal alert window, - to give the host the opportunity to hide attached windows that may get in the way. - - \param updater The SUUpdater instance. - */ -- (void)updaterDidShowModalAlert:(SUUpdater *)updater; - -/*! - Called when an update is scheduled to be silently installed on quit. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - \param invocation Can be used to trigger an immediate silent install and relaunch. - */ -- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation; - -/*! - Calls after an update that was scheduled to be silently installed on quit has been canceled. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that was proposed to be installed. - */ -- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item; - -/*! - Called after an update is aborted due to an error. - - \param updater The SUUpdater instance. - \param error The error that caused the abort - */ -- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error; - -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/Sparkle.h b/Sparkle.framework/Versions/A/Headers/Sparkle.h deleted file mode 100644 index 20ed697..0000000 --- a/Sparkle.framework/Versions/A/Headers/Sparkle.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// Sparkle.h -// Sparkle -// -// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SPARKLE_H -#define SPARKLE_H - -#import - -// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless -// there are name-space collisions) so we can list all of them to start with: - -#import "SUAppcast.h" -#import "SUAppcastItem.h" -#import "SUStandardVersionComparator.h" -#import "SUUpdater.h" -#import "SUVersionComparisonProtocol.h" -#import "SUVersionDisplayProtocol.h" -#import "SUErrors.h" - -#endif diff --git a/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h b/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h deleted file mode 100644 index ccd5611..0000000 --- a/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// SUUnarchiver.h -// Sparkle -// -// Created by Andy Matuschak on 3/16/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUUNARCHIVER_H -#define SUUNARCHIVER_H - -#import - -@class SUHost; -@protocol SUUnarchiverDelegate; - -@interface SUUnarchiver : NSObject - -@property (copy, readonly) NSString *archivePath; -@property (copy, readonly) NSString *updateHostBundlePath; -@property (copy, readonly) NSString *decryptionPassword; -@property (weak) id delegate; - -+ (SUUnarchiver *)unarchiverForPath:(NSString *)path updatingHostBundlePath:(NSString *)host withPassword:(NSString *)decryptionPassword; - -- (void)start; -@end - -@protocol SUUnarchiverDelegate -- (void)unarchiverDidFinish:(SUUnarchiver *)unarchiver; -- (void)unarchiverDidFail:(SUUnarchiver *)unarchiver; -@optional -- (void)unarchiver:(SUUnarchiver *)unarchiver extractedProgress:(double)progress; -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate deleted file mode 100755 index 0e70736..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns deleted file mode 100644 index 93fb79e..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib deleted file mode 100644 index 30f3c2c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings deleted file mode 100644 index 057e2f8..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings deleted file mode 100644 index cc238f6..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings deleted file mode 100644 index da59028..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings deleted file mode 100644 index 266c069..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index f99c8c0..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings deleted file mode 100644 index 394c159..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings deleted file mode 100644 index f427ad6..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings deleted file mode 100644 index 8922b32..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings deleted file mode 100644 index 32d3107..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index 6577569..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings deleted file mode 100644 index 99124cc..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings deleted file mode 100644 index 74ae728..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings deleted file mode 100644 index f7fb935..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings deleted file mode 100644 index 08cb296..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings deleted file mode 100644 index c6ecfba..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings deleted file mode 100644 index 25e2079..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings deleted file mode 100644 index de38912..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings deleted file mode 100644 index e366e3b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings deleted file mode 100644 index 19cb11f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings deleted file mode 100644 index d3eddf7..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings deleted file mode 100644 index d5cb607..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings deleted file mode 100644 index 949fb16..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings deleted file mode 100644 index c1ce5a0..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings deleted file mode 100644 index e65ac55..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings deleted file mode 100644 index fc728fd..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings deleted file mode 100644 index c41e3db..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings deleted file mode 100644 index 521656d..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings deleted file mode 100644 index cbd1ba6..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings deleted file mode 100644 index ea8c82f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist b/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist deleted file mode 100644 index 1f75b24..0000000 --- a/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist +++ /dev/null @@ -1,314 +0,0 @@ - - - - - ADP2,1 - Developer Transition Kit - iMac1,1 - iMac G3 (Rev A-D) - iMac4,1 - iMac (Core Duo) - iMac4,2 - iMac for Education (17 inch, Core Duo) - iMac5,1 - iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) - iMac5,2 - iMac (Core 2 Duo, 17 inch, Combo Drive) - iMac6,1 - iMac (Core 2 Duo, 24 inch, SuperDrive) - iMac7,1 - iMac Intel Core 2 Duo (aluminum enclosure) - iMac8,1 - iMac (Core 2 Duo, 20 or 24 inch, Early 2008 ) - iMac9,1 - iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 ) - iMac10,1 - iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 ) - iMac11,1 - iMac (Core i5 or i7, 27 inch Late 2009) - iMac11,2 - 21.5" iMac (mid 2010) - iMac11,3 - iMac (Core i5 or i7, 27 inch Mid 2010) - iMac12,1 - iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011) - iMac12,2 - iMac (Core i5 or i7, 27 inch Mid 2011) - iMac13,1 - iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013) - iMac13,2 - iMac (Core i5 or i7, 27 inch Late 2012) - iMac14,1 - iMac (Core i5, 21.5 inch Late 2013) - iMac14,2 - iMac (Core i5 or i7, 27 inch Late 2013) - iMac14,3 - iMac (Core i5 or i7, 21.5 inch Late 2013) - iMac14,4 - iMac (Core i5, 21.5 inch Mid 2014) - iMac15,1 - iMac (Retina 5K Core i5 or i7, 27 inch Late 2014 or Mid 2015) - iMac16,1 - iMac (Core i5, 21,5 inch Late 2015) - iMac16,2 - iMac (Retina 4K Core i5 or i7, 21.5 inch Late 2015) - iMac17,1 - iMac (Retina 5K Core i5 or i7, 27 inch Late 2015) - MacBook1,1 - MacBook (Core Duo) - MacBook2,1 - MacBook (Core 2 Duo) - MacBook4,1 - MacBook (Core 2 Duo Feb 2008) - MacBook5,1 - MacBook (Core 2 Duo, Late 2008, Unibody) - MacBook5,2 - MacBook (Core 2 Duo, Early 2009, White) - MacBook6,1 - MacBook (Core 2 Duo, Late 2009, Unibody) - MacBook7,1 - MacBook (Core 2 Duo, Mid 2010, White) - MacBook8,1 - MacBook (Core M, 12 inch, Early 2015) - MacBookAir1,1 - MacBook Air (Core 2 Duo, 13 inch, Early 2008) - MacBookAir2,1 - MacBook Air (Core 2 Duo, 13 inch, Mid 2009) - MacBookAir3,1 - MacBook Air (Core 2 Duo, 11 inch, Late 2010) - MacBookAir3,2 - MacBook Air (Core 2 Duo, 13 inch, Late 2010) - MacBookAir4,1 - MacBook Air (Core i5 or i7, 11 inch, Mid 2011) - MacBookAir4,2 - MacBook Air (Core i5 or i7, 13 inch, Mid 2011) - MacBookAir5,1 - MacBook Air (Core i5 or i7, 11 inch, Mid 2012) - MacBookAir5,2 - MacBook Air (Core i5 or i7, 13 inch, Mid 2012) - MacBookAir6,1 - MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014) - MacBookAir6,2 - MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014) - MacBookAir7,1 - MacBook Air (Core i5 or i7, 11 inch, Early 2015) - MacBookAir7,2 - MacBook Air (Core i5 or i7, 13 inch, Early 2015) - MacBookPro1,1 - MacBook Pro Core Duo (15-inch) - MacBookPro1,2 - MacBook Pro Core Duo (17-inch) - MacBookPro2,1 - MacBook Pro Core 2 Duo (17-inch) - MacBookPro2,2 - MacBook Pro Core 2 Duo (15-inch) - MacBookPro3,1 - MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) - MacBookPro3,2 - MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) - MacBookPro4,1 - MacBook Pro (Core 2 Duo Feb 2008) - MacBookPro5,1 - MacBook Pro Intel Core 2 Duo (aluminum unibody) - MacBookPro5,2 - MacBook Pro Intel Core 2 Duo (aluminum unibody) - MacBookPro5,3 - MacBook Pro Intel Core 2 Duo (aluminum unibody) - MacBookPro5,4 - MacBook Pro Intel Core 2 Duo (aluminum unibody) - MacBookPro5,5 - MacBook Pro Intel Core 2 Duo (aluminum unibody) - MacBookPro6,1 - MacBook Pro Intel Core i5, Intel Core i7 (mid 2010) - MacBookPro6,2 - MacBook Pro Intel Core i5, Intel Core i7 (mid 2010) - MacBookPro7,1 - MacBook Pro Intel Core 2 Duo (mid 2010) - MacBookPro8,1 - MacBook Pro Intel Core i5, Intel Core i7, 13" (early 2011) - MacBookPro8,2 - MacBook Pro Intel Core i7, 15" (early 2011) - MacBookPro8,3 - MacBook Pro Intel Core i7, 17" (early 2011) - MacBookPro9,1 - MacBook Pro (15-inch, Mid 2012) - MacBookPro9,2 - MacBook Pro (13-inch, Mid 2012) - MacBookPro10,1 - MacBook Pro (Retina, Mid 2012) - MacBookPro10,2 - MacBook Pro (Retina, 13-inch, Late 2012) - MacBookPro11,1 - MacBook Pro (Retina, 13-inch, Late 2013) - MacBookPro11,2 - MacBook Pro (Retina, 15-inch, Late 2013) - MacBookPro11,3 - MacBook Pro (Retina, 15-inch, Late 2013) - MacbookPro11,4 - MacBook Pro (Retina, 15-inch, Mid 2015) - MacbookPro11,5 - MacBook Pro (Retina, 15-inch, Mid 2015) - MacbookPro12,1  - MacBook Pro (Retina, 13-inch, Early 2015) - Macmini1,1 - Mac Mini (Core Solo/Duo) - Macmini2,1 - Mac mini Intel Core - Macmini3,1 - Mac mini Intel Core - Macmini4,1 - Mac mini Intel Core (Mid 2010) - Macmini5,1 - Mac mini (Core i5, Mid 2011) - Macmini5,2 - Mac mini (Core i5 or Core i7, Mid 2011) - Macmini5,3 - Mac mini (Core i7, Server, Mid 2011) - Macmini6,1 - Mac mini (Core i5, Late 2012) - Macmini6,2 - Mac mini (Core i7, Normal or Server, Late 2012) - Macmini7,1 - Mac mini (Core i5 or Core i7, Late 2014) - MacPro1,1,Quad - Mac Pro - MacPro1,1 - Mac Pro (four-core) - MacPro2,1 - Mac Pro (eight-core) - MacPro3,1 - Mac Pro (January 2008 4- or 8- core "Harpertown") - MacPro4,1 - Mac Pro (March 2009) - MacPro5,1 - Mac Pro (2010 or 2012) - MacPro6,1 - Mac Pro (Late 2013) - PowerBook1,1 - PowerBook G3 - PowerBook2,1 - iBook G3 - PowerBook2,2 - iBook G3 (FireWire) - PowerBook2,3 - iBook G3 - PowerBook2,4 - iBook G3 - PowerBook3,1 - PowerBook G3 (FireWire) - PowerBook3,2 - PowerBook G4 - PowerBook3,3 - PowerBook G4 (Gigabit Ethernet) - PowerBook3,4 - PowerBook G4 (DVI) - PowerBook3,5 - PowerBook G4 (1GHz / 867MHz) - PowerBook4,1 - iBook G3 (Dual USB, Late 2001) - PowerBook4,2 - iBook G3 (16MB VRAM) - PowerBook4,3 - iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) - PowerBook5,1 - PowerBook G4 (17 inch) - PowerBook5,2 - PowerBook G4 (15 inch FW 800) - PowerBook5,3 - PowerBook G4 (17-inch 1.33GHz) - PowerBook5,4 - PowerBook G4 (15 inch 1.5/1.33GHz) - PowerBook5,5 - PowerBook G4 (17-inch 1.5GHz) - PowerBook5,6 - PowerBook G4 (15 inch 1.67GHz/1.5GHz) - PowerBook5,7 - PowerBook G4 (17-inch 1.67GHz) - PowerBook5,8 - PowerBook G4 (Double layer SD, 15 inch) - PowerBook5,9 - PowerBook G4 (Double layer SD, 17 inch) - PowerBook6,1 - PowerBook G4 (12 inch) - PowerBook6,2 - PowerBook G4 (12 inch, DVI) - PowerBook6,3 - iBook G4 - PowerBook6,4 - PowerBook G4 (12 inch 1.33GHz) - PowerBook6,5 - iBook G4 (Early-Late 2004) - PowerBook6,7 - iBook G4 (Mid 2005) - PowerBook6,8 - PowerBook G4 (12 inch 1.5GHz) - PowerMac1,1 - Power Macintosh G3 (Blue & White) - PowerMac1,2 - Power Macintosh G4 (PCI Graphics) - PowerMac2,1 - iMac G3 (Slot-loading CD-ROM) - PowerMac2,2 - iMac G3 (Summer 2000) - PowerMac3,1 - Power Macintosh G4 (AGP Graphics) - PowerMac3,2 - Power Macintosh G4 (AGP Graphics) - PowerMac3,3 - Power Macintosh G4 (Gigabit Ethernet) - PowerMac3,4 - Power Macintosh G4 (Digital Audio) - PowerMac3,5 - Power Macintosh G4 (Quick Silver) - PowerMac3,6 - Power Macintosh G4 (Mirrored Drive Door) - PowerMac4,1 - iMac G3 (Early/Summer 2001) - PowerMac4,2 - iMac G4 (Flat Panel) - PowerMac4,4 - eMac - PowerMac4,5 - iMac G4 (17-inch Flat Panel) - PowerMac5,1 - Power Macintosh G4 Cube - PowerMac5,2 - Power Mac G4 Cube - PowerMac6,1 - iMac G4 (USB 2.0) - PowerMac6,3 - iMac G4 (20-inch Flat Panel) - PowerMac6,4 - eMac (USB 2.0, 2005) - PowerMac7,2 - Power Macintosh G5 - PowerMac7,3 - Power Macintosh G5 - PowerMac8,1 - iMac G5 - PowerMac8,2 - iMac G5 (Ambient Light Sensor) - PowerMac9,1 - Power Macintosh G5 (Late 2005) - PowerMac10,1 - Mac Mini G4 - PowerMac10,2 - Mac Mini (Late 2005) - PowerMac11,2 - Power Macintosh G5 (Late 2005) - PowerMac12,1 - iMac G5 (iSight) - RackMac1,1 - Xserve G4 - RackMac1,2 - Xserve G4 (slot-loading, cluster node) - RackMac3,1 - Xserve G5 - Xserve1,1 - Xserve (Intel Xeon) - Xserve2,1 - Xserve (January 2008 quad-core) - Xserve3,1 - Xserve (early 2009) - - diff --git a/Sparkle.framework/Versions/A/Resources/SUStatus.nib b/Sparkle.framework/Versions/A/Resources/SUStatus.nib deleted file mode 100644 index 30f3c2c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/SUStatus.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 46d10f1..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib deleted file mode 100644 index 1fafb03..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index f93d74b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings deleted file mode 100644 index 057e2f8..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings deleted file mode 100644 index cc238f6..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 86c7ace..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib deleted file mode 100644 index 87d4eb2..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index c39c065..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings deleted file mode 100644 index da59028..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index a1fbef9..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib deleted file mode 100644 index 05bf2cb..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index d04d0cd..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings deleted file mode 100644 index 266c069..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 6636062..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib deleted file mode 100644 index a457c2f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 92499cb..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index f99c8c0..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index a3db760..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib deleted file mode 100644 index 20302af..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 157168b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings deleted file mode 100644 index 394c159..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index df090b4..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib deleted file mode 100644 index 7ed2647..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 9c0c887..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings deleted file mode 100644 index f427ad6..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 4fc4bbc..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib deleted file mode 100644 index 5ae5ade..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 8006f90..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings deleted file mode 100644 index 8922b32..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings deleted file mode 100644 index 32d3107..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index bc13d0c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib deleted file mode 100644 index f8f1f1c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 7b2b40e..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index 6577569..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/fr_CA.lproj b/Sparkle.framework/Versions/A/Resources/fr_CA.lproj deleted file mode 120000 index f9834a3..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr_CA.lproj +++ /dev/null @@ -1 +0,0 @@ -fr.lproj \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings deleted file mode 100644 index 99124cc..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 3550df4..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib deleted file mode 100644 index 683ad62..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 6551540..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings deleted file mode 100644 index 74ae728..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 74eb026..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib deleted file mode 100644 index a7bc37b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 7581873..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings deleted file mode 100644 index f7fb935..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 7207576..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib deleted file mode 100644 index 5479c40..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 67c837f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings deleted file mode 100644 index 08cb296..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 95105af..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib deleted file mode 100644 index 5a81571..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 8cecd70..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings deleted file mode 100644 index c6ecfba..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index ab9491f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib deleted file mode 100644 index 14bcaf7..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 54e248f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings deleted file mode 100644 index 25e2079..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index f60fb1d..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib deleted file mode 100644 index 7da34c2..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 516751a..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings deleted file mode 100644 index de38912..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index a7ae983..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib deleted file mode 100644 index d7a2f0f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 616cf6a..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings deleted file mode 100644 index e366e3b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt.lproj b/Sparkle.framework/Versions/A/Resources/pt.lproj deleted file mode 120000 index 3c1c9f6..0000000 --- a/Sparkle.framework/Versions/A/Resources/pt.lproj +++ /dev/null @@ -1 +0,0 @@ -pt_BR.lproj \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index c04684b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib deleted file mode 100644 index c0831ee..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index da41ed2..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings deleted file mode 100644 index 19cb11f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index a7c83d7..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib deleted file mode 100644 index 7ae5322..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 9864c7a..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings deleted file mode 100644 index d3eddf7..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index eace82c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib deleted file mode 100644 index e22df98..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index fbb2a4b..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index df2f817..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib deleted file mode 100644 index 1e69dbe..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index b85d061..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings deleted file mode 100644 index d5cb607..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index c6aa945..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib deleted file mode 100644 index 5ce8b5f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index fc3a83c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings deleted file mode 100644 index 949fb16..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 58d1b27..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib deleted file mode 100644 index b3ff818..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 0273822..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings deleted file mode 100644 index c1ce5a0..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 84a4996..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib deleted file mode 100644 index a89378c..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index d2abca1..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings deleted file mode 100644 index e65ac55..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index f16caf0..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib deleted file mode 100644 index 31295fc..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 6f57549..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings deleted file mode 100644 index fc728fd..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 08c15cb..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib deleted file mode 100644 index cc72ff8..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index aa2c54d..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings deleted file mode 100644 index c41e3db..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 987d915..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib deleted file mode 100644 index 1a77ccf..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index bdce462..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings deleted file mode 100644 index 521656d..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index d4e0728..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib deleted file mode 100644 index 0602af8..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index b371b0d..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings deleted file mode 100644 index cbd1ba6..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index e204c1a..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib deleted file mode 100644 index 5f24205..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib b/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index fb32ddc..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings deleted file mode 100644 index ea8c82f..0000000 Binary files a/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ diff --git a/Sparkle.framework/Versions/A/Sparkle b/Sparkle.framework/Versions/A/Sparkle deleted file mode 100755 index 5b7ce17..0000000 Binary files a/Sparkle.framework/Versions/A/Sparkle and /dev/null differ diff --git a/Sparkle.framework/Versions/B/Autoupdate b/Sparkle.framework/Versions/B/Autoupdate new file mode 100755 index 0000000..95608f8 Binary files /dev/null and b/Sparkle.framework/Versions/B/Autoupdate differ diff --git a/Sparkle.framework/Versions/B/Headers/SPUDownloadData.h b/Sparkle.framework/Versions/B/Headers/SPUDownloadData.h new file mode 100644 index 0000000..680b398 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUDownloadData.h @@ -0,0 +1,52 @@ +// +// SPUDownloadData.h +// Sparkle +// +// Created by Mayur Pawashe on 8/10/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import + +#ifdef BUILDING_SPARKLE_DOWNLOADER_SERVICE +// Ignore incorrect warning +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" +#import "SUExport.h" +#pragma clang diagnostic pop +#else +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + * A class for containing downloaded data along with some information about it. + */ +SU_EXPORT @interface SPUDownloadData : NSObject + +/** + * The raw data that was downloaded. + */ +@property (nonatomic, readonly) NSData *data; + +/** + * The URL that was fetched from. + * + * This may be different from the URL in the request if there were redirects involved. + */ +@property (nonatomic, readonly, copy) NSURL *URL; + +/** + * The IANA charset encoding name if available. Eg: "utf-8" + */ +@property (nonatomic, readonly, nullable, copy) NSString *textEncodingName; + +/** + * The MIME type if available. Eg: "text/plain" + */ +@property (nonatomic, readonly, nullable, copy) NSString *MIMEType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h b/Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h new file mode 100644 index 0000000..a34100d --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h @@ -0,0 +1,112 @@ +// +// SPUStandardUpdaterController.h +// Sparkle +// +// Created by Mayur Pawashe on 2/28/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class SPUUpdater; +@class SPUStandardUserDriver; +@class NSMenuItem; +@protocol SPUUserDriver, SPUUpdaterDelegate, SPUStandardUserDriverDelegate; + +/** + A controller class that instantiates a `SPUUpdater` and allows binding UI to its updater settings. + + This class can be instantiated in a nib or created programatically using `-initWithUpdaterDelegate:userDriverDelegate:` or `-initWithStartingUpdater:updaterDelegate:userDriverDelegate:`. + + The controller's updater targets the application's main bundle and uses Sparkle's standard user interface. + Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too. + + The controller creates an `SPUUpdater` instance using a `SPUStandardUserDriver` and allows hooking up the check for updates action and handling menu item validation. + It also allows hooking up the updater's and user driver's delegates. + + If you need more control over what bundle you want to update, or you want to provide a custom user interface (via `SPUUserDriver`), please use `SPUUpdater` directly instead. + */ +SU_EXPORT @interface SPUStandardUpdaterController : NSObject +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-interface-ivars" + /** + * Interface builder outlet for the updater's delegate. + */ + IBOutlet __weak id updaterDelegate; + + /** + * Interface builder outlet for the user driver's delegate. + */ + IBOutlet __weak id userDriverDelegate; +#pragma clang diagnostic pop +} + +/** + Accessible property for the updater. Some properties on the updater can be binded via KVO + + When instantiated from a nib, don't perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points. + */ +@property (nonatomic, readonly) SPUUpdater *updater; + +/** + Accessible property for the updater's user driver. + */ +@property (nonatomic, readonly) SPUStandardUserDriver *userDriver; + +/** + Create a new `SPUStandardUpdaterController` from a nib. + + You cannot call this initializer directly. You must instantiate a `SPUStandardUpdaterController` inside of a nib (typically the MainMenu nib) to use it. + + To create a `SPUStandardUpdaterController` programatically, use `-initWithUpdaterDelegate:userDriverDelegate:` or `-initWithStartingUpdater:updaterDelegate:userDriverDelegate:` instead. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + Create a new `SPUStandardUpdaterController` programmatically. + + The updater is started automatically. See `-startUpdater` for more information. + */ +- (instancetype)initWithUpdaterDelegate:(nullable id)updaterDelegate userDriverDelegate:(nullable id)userDriverDelegate; + +/** + Create a new `SPUStandardUpdaterController` programmatically allowing you to specify whether or not to start the updater immediately. + + You can specify whether or not you want to start the updater immediately. + If you do not start the updater, you must invoke `-startUpdater` at a later time to start it. + */ +- (instancetype)initWithStartingUpdater:(BOOL)startUpdater updaterDelegate:(nullable id)updaterDelegate userDriverDelegate:(nullable id)userDriverDelegate; + +/** + Starts the updater if it has not already been started. + + You should only call this method yourself if you opted out of starting the updater on initialization. + Hence, do not call this yourself if you are instantiating this controller from a nib. + + This invokes `-[SPUUpdater startUpdater:]`. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer. + If you want more control over this behavior, you can create your own `SPUUpdater` instead of using `SPUStandardUpdaterController`. + */ +- (void)startUpdater; + +/** + Explicitly checks for updates and displays a progress dialog while doing so. + + This method is meant for a main menu item. + Connect any NSMenuItem to this action in Interface Builder or programmatically, + and Sparkle will check for updates and report back its findings verbosely when it is invoked. + + When the target/action of the menu item is set to this controller and this method, + this controller also handles enabling/disabling the menu item by checking + `-[SPUUpdater canCheckForUpdates]` + + This action checks updates by invoking `-[SPUUpdater checkForUpdates]` + */ +- (IBAction)checkForUpdates:(nullable id)sender; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h b/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h new file mode 100644 index 0000000..36eda90 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h @@ -0,0 +1,37 @@ +// +// SPUStandardUserDriver.h +// Sparkle +// +// Created by Mayur Pawashe on 2/14/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol SPUStandardUserDriverDelegate; + +/** + Sparkle's standard built-in user driver for updater interactions + */ +SU_EXPORT @interface SPUStandardUserDriver : NSObject + +/** + Initializes a Sparkle's standard user driver for user update interactions + + @param hostBundle The target bundle of the host that is being updated. + @param delegate The optional delegate to this user driver. + */ +- (instancetype)initWithHostBundle:(NSBundle *)hostBundle delegate:(nullable id)delegate; + +/** + Use initWithHostBundle:delegate: instead. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h b/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h new file mode 100644 index 0000000..9344864 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h @@ -0,0 +1,172 @@ +// +// SPUStandardUserDriverDelegate.h +// Sparkle +// +// Created by Mayur Pawashe on 3/3/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol SUVersionDisplay; +@class SUAppcastItem; +@class SPUUserUpdateState; + +/** + A protocol for Sparkle's standard user driver's delegate + + This includes methods related to UI interactions + */ +SU_EXPORT @protocol SPUStandardUserDriverDelegate + +@optional + +/** + Called before showing a modal alert window, + to give the opportunity to hide attached windows that may get in the way. + */ +- (void)standardUserDriverWillShowModalAlert; + +/** + Called after showing a modal alert window, + to give the opportunity to hide attached windows that may get in the way. + */ +- (void)standardUserDriverDidShowModalAlert; + +/** + Returns an object that formats version numbers for display to the user. + If you don't implement this method or return @c nil, the standard version formatter will be used. + */ +- (_Nullable id )standardUserDriverRequestsVersionDisplayer; + +/** + Handles showing the full release notes to the user. + + When a user checks for new updates and no new update is found, Sparkle will offer to show the application's version history to the user + by providing a "Version History" button in the no new update available alert. + + If this delegate method is not implemented, Sparkle will instead offer to open the + `fullReleaseNotesLink` (or `releaseNotesLink` if the former is unavailable) from the appcast's latest `item` in the user's web browser. + + If this delegate method is implemented, Sparkle will instead ask the delegate to show the full release notes to the user. + A delegate may want to implement this method if they want to show in-app or offline release notes. + + @param item The appcast item corresponding to the latest version available. + */ +- (void)standardUserDriverShowVersionHistoryForAppcastItem:(SUAppcastItem *)item; + +/** + Specifies whether or not the download, extraction, and installing status windows allows to be minimized. + + By default, the status window showing the current status of the update (download, extraction, ready to install) is allowed to be minimized + for regular application bundle updates. + + @return @c YES if the status window is allowed to be minimized (default behavior), otherwise @c NO. + */ +- (BOOL)standardUserDriverAllowsMinimizableStatusWindow; + +/** + Declares whether or not gentle scheduled update reminders are supported. + + The delegate may implement scheduled update reminders that are presented in a gentle manner by implementing one or both of: + `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` and `-standardUserDriverShouldHandleShowingScheduledUpdate:andInImmediateFocus:` + + Visit https://sparkle-project.org/documentation/gentle-reminders for more information and examples. + + @return @c YES if gentle scheduled update reminders are implemented by standard user driver delegate, otherwise @c NO (default). + */ +@property (nonatomic, readonly) BOOL supportsGentleScheduledUpdateReminders; + +/** + Specifies if the standard user driver should handle showing a new scheduled update, or if its delegate should handle showing the update instead. + + If you implement this method and return @c NO the delegate is then responsible for showing the update, + which must be implemented and done in `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` + The motivation for the delegate being responsible for showing updates is to override Sparkle's default behavior + and add gentle reminders for new updates. + + Returning @c YES is the default behavior and allows the standard user driver to handle showing the update. + + If the standard user driver handles showing the update, `immediateFocus` reflects whether or not it will show the update in immediate and utmost focus. + The standard user driver may choose to show the update in immediate and utmost focus when the app was launched recently + or the system has been idle for some time. + + If `immediateFocus` is @c NO the standard user driver may want to defer showing the update until the user comes back to the app. + For background running applications, when `immediateFocus` is @c NO the standard user driver will always want to show + the update alert immediately, but behind other running applications or behind the app's own windows if it's currently active. + + There should be no side effects made when implementing this method so you should just return @c YES or @c NO + You will also want to implement `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` for adding additional update reminders. + + This method is not called for user-initiated update checks. The standard user driver always handles those. + + Visit https://sparkle-project.org/documentation/gentle-reminders for more information and examples. + + @param update The update the standard user driver should show. + @param immediateFocus If @c immediateFocus is @c YES, then the standard user driver proposes to show the update in immediate and utmost focus. See discussion for more details. + + @return @c YES if the standard user should handle showing the scheduled update (default behavior), otherwise @c NO if the delegate handles showing it. + */ +- (BOOL)standardUserDriverShouldHandleShowingScheduledUpdate:(SUAppcastItem *)update andInImmediateFocus:(BOOL)immediateFocus; + +/** + Called before an update will be shown to the user. + + If the standard user driver handles showing the update, `handleShowingUpdate` will be `YES`. + Please see `-standardUserDriverShouldHandleShowingScheduledUpdate:andInImmediateFocus:` for how the standard user driver + may handle showing scheduled updates when `handleShowingUpdate` is `YES` and `state.userInitiated` is `NO`. + + If the delegate declared it handles showing the update by returning @c NO in `-standardUserDriverShouldHandleShowingScheduledUpdate:andInImmediateFocus:` + then the delegate should handle showing update reminders in this method, or at some later point. + In this case, `handleShowingUpdate` will be @c NO. + To bring the update alert in focus, you may call `-[SPUStandardUpdaterController checkForUpdates:]` or `-[SPUUpdater checkForUpdates]`. + You may want to show additional UI indicators in your application that will show this update in focus + and want to dismiss additional UI indicators in `-standardUserDriverWillFinishUpdateSession` or `-standardUserDriverDidReceiveUserAttentionForUpdate:` + + If `state.userInitiated` is @c YES then the standard user driver always handles showing the new update and `handleShowingUpdate` will be @c YES. + In this case, it may still be useful for the delegate to intercept this method right before a new update will be shown. + + This method is not called when bringing an update that has already been presented back in focus. + + Visit https://sparkle-project.org/documentation/gentle-reminders for more information and examples. + + @param handleShowingUpdate @c YES if the standard user driver handles showing the update, otherwise @c NO if the delegate handles showing the update. + @param update The update that will be shown. + @param state The user state of the update which includes if the update check was initiated by the user. + */ +- (void)standardUserDriverWillHandleShowingUpdate:(BOOL)handleShowingUpdate forUpdate:(SUAppcastItem *)update state:(SPUUserUpdateState *)state; + +/** + Called when a new update first receives attention from the user. + + This occurs either when the user first brings the update alert in utmost focus or when the user makes a choice to install an update or dismiss/skip it. + + This may be useful to intercept for dismissing custom attention-based UI indicators (e.g, user notifications) introduced when implementing + `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` + + For custom UI indicators that need to still be on screen after the user has started to install an update, please see `-standardUserDriverWillFinishUpdateSession`. + + @param update The new update that the user gave attention to. + */ +- (void)standardUserDriverDidReceiveUserAttentionForUpdate:(SUAppcastItem *)update; + +/** + Called before the standard user driver session will finish its current update session. + + This may occur after the user has dismissed / skipped a new update or after an update error has occurred. + For updaters updating external/other bundles, this may also be called after an update has been successfully installed. + + This may be useful to intercept for dismissing custom UI indicators introduced when implementing + `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` + + For UI indicators that need to be dismissed when the user has given attention to a new update alert, + please see `-standardUserDriverDidReceiveUserAttentionForUpdate:` + */ +- (void)standardUserDriverWillFinishUpdateSession; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h b/Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h new file mode 100644 index 0000000..80a2001 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h @@ -0,0 +1,33 @@ +// +// SPUUpdateCheck.h +// SPUUpdateCheck +// +// Created by Mayur Pawashe on 8/28/21. +// Copyright © 2021 Sparkle Project. All rights reserved. +// + +#ifndef SPUUpdateCheck_h +#define SPUUpdateCheck_h + +/** + Describes the type of update check being performed. + + Each update check corresponds to an update check method on `SPUUpdater`. + */ +typedef NS_ENUM(NSInteger, SPUUpdateCheck) +{ + /** + The user-initiated update check corresponding to `-[SPUUpdater checkForUpdates]`. + */ + SPUUpdateCheckUpdates = 0, + /** + The background scheduled update check corresponding to `-[SPUUpdater checkForUpdatesInBackground]`. + */ + SPUUpdateCheckUpdatesInBackground = 1, + /** + The informational probe update check corresponding to `-[SPUUpdater checkForUpdateInformation]`. + */ + SPUUpdateCheckUpdateInformation = 2 +}; + +#endif /* SPUUpdateCheck_h */ diff --git a/Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h b/Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h new file mode 100644 index 0000000..010e50b --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h @@ -0,0 +1,33 @@ +// +// SPUUpdatePermissionRequest.h +// Sparkle +// +// Created by Mayur Pawashe on 8/14/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + This class represents information needed to make a permission request for checking updates. + */ +SU_EXPORT @interface SPUUpdatePermissionRequest : NSObject + +/** + Initializes a new update permission request instance. + + @param systemProfile The system profile information. + */ +- (instancetype)initWithSystemProfile:(NSArray *> *)systemProfile; + +/** + A read-only property for the user's system profile. + */ +@property (nonatomic, readonly) NSArray *> *systemProfile; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUUpdater.h b/Sparkle.framework/Versions/B/Headers/SPUUpdater.h new file mode 100644 index 0000000..17a6493 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUpdater.h @@ -0,0 +1,312 @@ +// +// SPUUpdater.h +// Sparkle +// +// Created by Andy Matuschak on 1/4/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class SUAppcastItem, SUAppcast; + +@protocol SPUUpdaterDelegate; + +/** + The main API in Sparkle for controlling the update mechanism. + + This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates. + + For convenience, you can create a standard or nib instantiable updater by using `SPUStandardUpdaterController`. + + Prefer to set initial properties in your bundle's Info.plist as described in [Customizing Sparkle](https://sparkle-project.org/documentation/customization/). + + Otherwise only if you need dynamic behavior for user settings should you set properties on the updater such as: + - `automaticallyChecksForUpdates` + - `updateCheckInterval` + - `automaticallyDownloadsUpdates` + - `feedURL` + + Please view the documentation on each of these properties for more detail if you are to configure them dynamically. + */ +SU_EXPORT @interface SPUUpdater : NSObject + +/** + Initializes a new `SPUUpdater` instance + + This creates an updater, but to start it and schedule update checks `-startUpdater:` needs to be invoked first. + + Related: See `SPUStandardUpdaterController` which wraps a `SPUUpdater` instance and is suitable for instantiating inside of nib files. + + @param hostBundle The bundle that should be targetted for updating. + @param applicationBundle The application bundle that should be waited for termination and relaunched (unless overridden). Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle. + @param userDriver The user driver that Sparkle uses for user update interaction. + @param delegate The delegate for `SPUUpdater`. + */ +- (instancetype)initWithHostBundle:(NSBundle *)hostBundle applicationBundle:(NSBundle *)applicationBundle userDriver:(id )userDriver delegate:(nullable id)delegate; + +/** + Use `-initWithHostBundle:applicationBundle:userDriver:delegate:` or `SPUStandardUpdaterController` standard adapter instead. + + If you want to drop an updater into a nib, use `SPUStandardUpdaterController`. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + Starts the updater. + + This method first checks if Sparkle is configured properly. A valid feed URL should be set before this method is invoked. + + If the configuration is valid, an update cycle is started in the next main runloop cycle. + During this cycle, a permission prompt may be brought up (if needed) for checking if the user wants automatic update checking. + Otherwise if automatic update checks are enabled, a scheduled update alert may be brought up if enough time has elapsed since the last check. + See `automaticallyChecksForUpdates` for more information. + + After starting the updater and before the next runloop cycle, one of `-checkForUpdates`, `-checkForUpdatesInBackground`, or `-checkForUpdateInformation` can be invoked. + This may be useful if you want to check for updates immediately or without showing a potential permission prompt. + + If the updater cannot be started (i.e, due to a configuration issue in the application), you may want to fall back appropriately. + For example, the standard updater controller (`SPUStandardUpdaterController`) alerts the user that the app is misconfigured and to contact the developer. + + This must be called on the main thread. + + @param error The error that is populated if this method fails. Pass NULL if not interested in the error information. + @return YES if the updater started otherwise NO with a populated error + */ +- (BOOL)startUpdater:(NSError * __autoreleasing *)error; + +/** + Checks for updates, and displays progress while doing so if needed. + + This is meant for users initiating a new update check or checking the current update progress. + + If an update hasn't started, the user may be shown that a new check for updates is occurring. + If an update has already been downloaded or begun installing from a previous session, the user may be presented to install that update. + If the user is already being presented with an update, that update will be shown to the user in active focus. + + This will find updates that the user has previously opted into skipping. + + See `canCheckForUpdates` property which can determine when this method may be invoked. + */ +- (void)checkForUpdates; + +/** + Checks for updates, but does not show any UI unless an update is found. + + You usually do not need to call this method directly. If `automaticallyChecksForUpdates` is @c YES, + Sparkle calls this method automatically according to its update schedule using the `updateCheckInterval` + and the `lastUpdateCheckDate`. Therefore, you should typically only consider calling this method directly if you + opt out of automatic update checks. + + This is meant for programmatically initating a check for updates in the background without the user initiating it. + This check will not show UI if no new updates are found. + + If a new update is found, the updater's user driver may handle showing it at an appropriate (but not necessarily immediate) time. + If you want control over when and how a new update is shown, please see https://sparkle-project.org/documentation/gentle-reminders/ + + Note if automated updating is turned on, either a new update may be downloaded in the background to be installed silently, + or an already downloaded update may be shown. + + This will not find updates that the user has opted into skipping. + + This method does not do anything if there is a `sessionInProgress`. + */ +- (void)checkForUpdatesInBackground; + +/** + Begins a "probing" check for updates which will not actually offer to + update to that version. + + However, the delegate methods + `-[SPUUpdaterDelegate updater:didFindValidUpdate:]` and + `-[SPUUpdaterDelegate updaterDidNotFindUpdate:]` will be called, + so you can use that information in your UI. + + `-[SPUUpdaterDelegate updater:didFinishUpdateCycleForUpdateCheck:error:]` will be called when + this probing check is completed. + + Updates that have been skipped by the user will not be found. + + This method does not do anything if there is a `sessionInProgress`. + */ +- (void)checkForUpdateInformation; + +/** + A property indicating whether or not updates can be checked by the user. + + An update check can be made by the user when an update session isn't in progress, or when an update or its progress is being shown to the user. + A user cannot check for updates when data (such as the feed or an update) is still being downloaded automatically in the background. + + This property is suitable to use for menu item validation for seeing if `-checkForUpdates` can be invoked. + + This property is also KVO-compliant. + + Note this property does not reflect whether or not an update session is in progress. Please see `sessionInProgress` property instead. + */ +@property (nonatomic, readonly) BOOL canCheckForUpdates; + +/** + A property indicating whether or not an update session is in progress. + + An update session is in progress when the appcast is being downloaded, an update is being downloaded, + an update is being shown, update permission is being requested, or the installer is being started. + + An active session is when Sparkle's fired scheduler is running. + + Note an update session may not be running even though Sparkle's installer (ran as a separate process) may be running, + or even though the update has been downloaded but the installation has been deferred. In both of these cases, a new update session + may be activated with the update resumed at a later point (automatically or manually). + + See also: + - `canCheckForUpdates` property which is more suited for menu item validation and deciding if the user can initiate update checks. + - `-[SPUUpdaterDelegate updater:didFinishUpdateCycleForUpdateCheck:error:]` which lets the updater delegate know when an update cycle and session finishes. + */ +@property (nonatomic, readonly) BOOL sessionInProgress; + +/** + A property indicating whether or not to check for updates automatically. + + By default, Sparkle asks users on second launch for permission if they want automatic update checks enabled + and sets this property based on their response. If `SUEnableAutomaticChecks` is set in the Info.plist, + this permission request is not performed however. + + Setting this property will persist in the host bundle's user defaults. + Hence developers shouldn't maintain an additional user default for this property. + Only set this property if the user wants to change the default via a user settings option. + Do not always set it on launch unless you want to ignore the user's preference. + For testing environments, you can disable update checks by passing `-SUEnableAutomaticChecks NO` + to your app's command line arguments instead of setting this property. + + The update schedule cycle will be reset in a short delay after the property's new value is set. + This is to allow reverting this property without kicking off a schedule change immediately + */ +@property (nonatomic) BOOL automaticallyChecksForUpdates; + +/** + A property indicating the current automatic update check interval in seconds. + + Prefer to set SUScheduledCheckInterval directly in your Info.plist for setting the initial value. + + Setting this property will persist in the host bundle's user defaults. + Hence developers shouldn't maintain an additional user default for this property. + Only set this property if the user wants to change the default via a user settings option. + Do not always set it on launch unless you want to ignore the user's preference. + + The update schedule cycle will be reset in a short delay after the property's new value is set. + This is to allow reverting this property without kicking off a schedule change immediately + */ +@property (nonatomic) NSTimeInterval updateCheckInterval; + +/** + A property indicating whether or not updates can be automatically downloaded in the background. + + By default, updates are not automatically downloaded. + + Note that the developer can disallow automatic downloading of updates from being enabled (via `SUAllowsAutomaticUpdates` Info.plist key). + In this case, this property will return NO regardless of how this property is set. + + Prefer to set SUAutomaticallyUpdate directly in your Info.plist for setting the initial value. + + Setting this property will persist in the host bundle's user defaults. + Hence developers shouldn't maintain an additional user default for this property. + Only set this property if the user wants to change the default via a user settings option. + Do not always set it on launch unless you want to ignore the user's preference. + */ +@property (nonatomic) BOOL automaticallyDownloadsUpdates; + +/** + The URL of the appcast used to download update information. + + If the updater's delegate implements `-[SPUUpdaterDelegate feedURLStringForUpdater:]`, this will return that feed URL. + Otherwise if the feed URL has been set before, the feed URL returned will be retrieved from the host bundle's user defaults. + Otherwise the feed URL in the host bundle's Info.plist will be returned. + If no feed URL can be retrieved, returns nil. + + For setting a primary feed URL, please set the `SUFeedURL` property in your Info.plist. + For setting an alternative feed URL, please prefer `-[SPUUpdaterDelegate feedURLStringForUpdater:]` over `-setFeedURL:` + + This property must be called on the main thread; calls from background threads will return nil. + */ +@property (nonatomic, readonly, nullable) NSURL *feedURL; + +/** + Set the URL of the appcast used to download update information. Using this method is discouraged. + + Setting this property will persist in the host bundle's user defaults. + To avoid this, you should consider implementing + `-[SPUUpdaterDelegate feedURLStringForUpdater:]` instead of using this method. + + Passing nil will remove any feed URL that has been set in the host bundle's user defaults. + If you do not need to alternate between multiple feeds, set the SUFeedURL in your Info.plist instead of invoking this method. + + For beta updates, you may consider migrating to `-[SPUUpdaterDelegate allowedChannelsForUpdater:]` in the future. + + This method must be called on the main thread; calls from background threads will have no effect. + */ +- (void)setFeedURL:(nullable NSURL *)feedURL; + +/** + The host bundle that is being updated. + */ +@property (nonatomic, readonly) NSBundle *hostBundle; + +/** + The user agent used when checking for updates. + + By default the user agent string returned is in the format: + $(BundleDisplayName)/$(BundleDisplayVersion) Sparkle/$(SparkleDisplayVersion) + + BundleDisplayVersion is derived from the main application's Info.plist's CFBundleShortVersionString. + + Note if Sparkle is being used to update another application, the bundle information retrieved is from the main application performing the updating. + + This default implementation can be overrided. + */ +@property (nonatomic, copy) NSString *userAgentString; + +/** + The HTTP headers used when checking for updates, downloading release notes, and downloading updates. + + The keys of this dictionary are HTTP header fields and values are corresponding values. + */ +@property (nonatomic, copy, nullable) NSDictionary *httpHeaders; + +/** + A property indicating whether or not the user's system profile information is sent when checking for updates. + + Setting this property will persist in the host bundle's user defaults. + */ +@property (nonatomic) BOOL sendsSystemProfile; + +/** + The date of the last update check or nil if no check has been performed yet. + + For testing purposes, the last update check is stored in the `SULastCheckTime` key in the host bundle's user defaults. + For example, `defaults delete my-bundle-id SULastCheckTime` can be invoked to clear the last update check time and test + if update checks are automatically scheduled. + */ +@property (nonatomic, readonly, copy, nullable) NSDate *lastUpdateCheckDate; + +/** + Appropriately schedules or cancels the update checking timer according to the settings for the time interval and automatic checks. + + If you change the `updateCheckInterval` or `automaticallyChecksForUpdates` properties, the update cycle will be reset automatically after a short delay. + The update cycle is also started automatically after the updater is started. In all these cases, this method should not be called directly. + + This call does not change the date of the next check, but only the internal timer. + */ +- (void)resetUpdateCycle; + + +/** + The system profile information that is sent when checking for updates. + */ +@property (nonatomic, readonly, copy) NSArray *> *systemProfileArray; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h b/Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h new file mode 100644 index 0000000..a18e967 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h @@ -0,0 +1,465 @@ +// +// SPUUpdaterDelegate.h +// Sparkle +// +// Created by Mayur Pawashe on 8/12/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import +#import +#import +#import + +@protocol SUVersionComparison; +@class SPUUpdater, SUAppcast, SUAppcastItem, SPUUserUpdateState; + +NS_ASSUME_NONNULL_BEGIN + +// ----------------------------------------------------------------------------- +// SUUpdater Notifications for events that might be interesting to more than just the delegate +// The updater will be the notification object +// ----------------------------------------------------------------------------- +SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification; +SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification; +SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification; +SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification; +#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification; +#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification; + +// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo +SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey; +// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo +SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey; + +// ----------------------------------------------------------------------------- +// System Profile Keys +// ----------------------------------------------------------------------------- + +SU_EXPORT extern NSString *const SUSystemProfilerApplicationNameKey; +SU_EXPORT extern NSString *const SUSystemProfilerApplicationVersionKey; +SU_EXPORT extern NSString *const SUSystemProfilerCPU64bitKey; +SU_EXPORT extern NSString *const SUSystemProfilerCPUCountKey; +SU_EXPORT extern NSString *const SUSystemProfilerCPUFrequencyKey; +SU_EXPORT extern NSString *const SUSystemProfilerCPUTypeKey; +SU_EXPORT extern NSString *const SUSystemProfilerCPUSubtypeKey; +SU_EXPORT extern NSString *const SUSystemProfilerHardwareModelKey; +SU_EXPORT extern NSString *const SUSystemProfilerMemoryKey; +SU_EXPORT extern NSString *const SUSystemProfilerOperatingSystemVersionKey; +SU_EXPORT extern NSString *const SUSystemProfilerPreferredLanguageKey; + +// ----------------------------------------------------------------------------- +// SPUUpdater Delegate: +// ----------------------------------------------------------------------------- + +/** + Provides delegation methods to control the behavior of an `SPUUpdater` object. + */ +@protocol SPUUpdaterDelegate +@optional + +/** + Returns whether to allow Sparkle to check for updates. + + For example, this may be used to prevent Sparkle from interrupting a setup assistant. + Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes. + + Note in Swift, this method returns Void and is marked with the throws keyword. If this method + doesn't throw an error, the updater may perform an update check. Otherwise if an error is thrown (we recommend using an NSError), + then the updater may not perform an update check. + + @param updater The updater instance. + @param updateCheck The type of update check that will be performed if the updater is allowed to check for updates. + @param error The populated error object if the updater may not perform a new update check. The @c NSLocalizedDescriptionKey user info key should be populated indicating a description of the error. + @return @c YES if the updater is allowed to check for updates, otherwise @c NO +*/ +- (BOOL)updater:(SPUUpdater *)updater mayPerformUpdateCheck:(SPUUpdateCheck)updateCheck error:(NSError * __autoreleasing *)error; + +/** + Returns the set of Sparkle channels the updater is allowed to find new updates from. + + An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel. + For instance: + ``` + + 2.0 Beta 1 + beta + + ``` + + This example posts an update to the @c beta channel, so only updaters that are allowed to use the @c beta channel can find this update. + + If the @c element is not present, the update item is posted to the default channel and can be found by any updater. + + You can pick any name you'd like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods. + + Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature. + This feature was added in Sparkle 2. + + @return The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior, + which means the updater will only look for updates in the default channel. + */ +- (NSSet *)allowedChannelsForUpdater:(SPUUpdater *)updater; + +/** + Returns a custom appcast URL used for checking for new updates. + + Override this to dynamically specify the feed URL. + + @param updater The updater instance. + @return An appcast feed URL to check for new updates in, or @c nil for the default behavior and if you don't want to be delegated this task. + */ +- (nullable NSString *)feedURLStringForUpdater:(SPUUpdater *)updater; + +/** + Returns additional parameters to append to the appcast URL's query string. + + This is potentially based on whether or not Sparkle will also be sending along the system profile. + + @param updater The updater instance. + @param sendingProfile Whether the system profile will also be sent. + + @return An array of dictionaries with keys: `key`, `value`, `displayKey`, `displayValue`, the latter two being specifically for display to the user. + */ +- (NSArray *> *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; + +/** + Returns whether Sparkle should prompt the user about checking for new updates automatically. + + Use this to override the default behavior. + + @param updater The updater instance. + @return @c YES if the updater should prompt for permission to check for new updates automatically, otherwise @c NO + */ +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SPUUpdater *)updater; + +/** + Returns an allowed list of system profile keys to be appended to the appcast URL's query string. + + By default all keys will be included. This method allows overriding which keys should only be allowed. + + @param updater The updater instance. + + @return An array of system profile keys to include in the appcast URL's query string. Elements must be one of the `SUSystemProfiler*Key` constants. Return @c nil for the default behavior and if you don't want to be delegated this task. + */ +- (nullable NSArray *)allowedSystemProfileKeysForUpdater:(SPUUpdater *)updater; + +/** + Called after Sparkle has downloaded the appcast from the remote server. + + Implement this if you want to do some special handling with the appcast once it finishes loading. + + @param updater The updater instance. + @param appcast The appcast that was downloaded from the remote server. + */ +- (void)updater:(SPUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +/** + Called when a new valid update is found by the update driver. + + @param updater The updater instance. + @param item The appcast item corresponding to the update that is proposed to be installed. + */ +- (void)updater:(SPUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; + +/** + Called when a valid new update is not found. + + There are various reasons a new update is unavailable and can't be installed. + + The userInfo dictionary on the error is populated with three keys: + - `SPULatestAppcastItemFoundKey`: if available, this may provide the latest `SUAppcastItem` that was found. This will be @c nil if it's unavailable. + - `SPUNoUpdateFoundReasonKey`: This will provide the `SPUNoUpdateFoundReason`. + For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version. + - `SPUNoUpdateFoundUserInitiatedKey`: A boolean that indicates if a new update was not found when the user intitiated an update check manually. + + @param updater The updater instance. + @param error An error containing information on why a new valid update was not found + */ +- (void)updaterDidNotFindUpdate:(SPUUpdater *)updater error:(NSError *)error; + +/** + Called when a valid new update is not found. + + If more information is needed on why an update was not found, use `-[SPUUpdaterDelegate updaterDidNotFindUpdate:error:]` instead. + + @param updater The updater instance. + */ +- (void)updaterDidNotFindUpdate:(SPUUpdater *)updater; + +/** + Returns the item in the appcast corresponding to the update that should be installed. + + Please consider using or migrating to other supported features before adopting this method. + Specifically: + - If you want to filter out certain tagged updates (like beta updates), consider `-[SPUUpdaterDelegate allowedChannelsForUpdater:]` instead. + - If you want to treat certain updates as informational-only, consider supplying @c with a set of affected versions users are updating from. + + If you're using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast. + + Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version + because Sparkle already has logic for determining whether or not those items should be filtered out. + + Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored. + Sparkle picks the delta item from your selection if the appropriate one is available. + + This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast. + If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version. + + This method may be called multiple times for different selections and filters. This method should be efficient. + + Return `+[SUAppcastItem emptyAppcastItem]` if no appcast item is valid. + + Return @c nil if you don't want to be delegated this task and want to let Sparkle handle picking the best valid update. + + @param appcast The appcast that was downloaded from the remote server. + @param updater The updater instance. + @return The best valid appcast item. + */ +- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SPUUpdater *)updater; + +/** + Returns whether or not the updater should proceed with the new chosen update from the appcast. + + By default, the updater will always proceed with the best selected update found in an appcast. Override this to override this behavior. + + If you return @c NO and populate the @c error, the user is not shown this @c updateItem nor is the update downloaded or installed. + + Note in Swift, this method returns Void and is marked with the throws keyword. If this method doesn't throw an error, the updater will proceed with the update. + Otherwise if an error is thrown (we recommend using an NSError), then the will not proceed with the update. + + @param updater The updater instance. + @param updateItem The selected update item to proceed with. + @param updateCheck The type of update check that would be performed if proceeded. + @param error An error object that must be populated by the delegate if the updater should not proceed with the update. The @c NSLocalizedDescriptionKey user info key should be populated indicating a description of the error. + @return @c YES if the updater should proceed with @c updateItem, otherwise @c NO if the updater should not proceed with the update with an @c error populated. + */ +- (BOOL)updater:(SPUUpdater *)updater shouldProceedWithUpdate:(SUAppcastItem *)updateItem updateCheck:(SPUUpdateCheck)updateCheck error:(NSError * __autoreleasing *)error; + +/** + Called when a user makes a choice to install, dismiss, or skip an update. + + If the @c choice is `SPUUserUpdateChoiceDismiss` and @c state.stage is `SPUUserUpdateStageDownloaded` the downloaded update is kept + around until the next time Sparkle reminds the user of the update. + + If the @c choice is `SPUUserUpdateChoiceDismiss` and @c state.stage is `SPUUserUpdateStageInstalling` the update is still set to install on application termination. + + If the @c choice is `SPUUserUpdateChoiceSkip` the user will not be reminded in the future for this update unless they initiate an update check themselves. + + If @c updateItem.isInformationOnlyUpdate is @c YES the @c choice cannot be `SPUUserUpdateChoiceInstall`. + + @param updater The updater instance. + @param choice The choice (install, dismiss, or skip) the user made for this @c updateItem + @param updateItem The appcast item corresponding to the update that the user made a choice on. + @param state The current state for the update which includes if the update has already been downloaded or already installing. + */ +- (void)updater:(SPUUpdater *)updater userDidMakeChoice:(SPUUserUpdateChoice)choice forUpdate:(SUAppcastItem *)updateItem state:(SPUUserUpdateState *)state; + +/** + Returns whether the release notes (if available) should be downloaded after an update is found and shown. + + This is specifically for the @c element in the appcast item. + + @param updater The updater instance. + @param updateItem The update item to download and show release notes from. + + @return @c YES to download and show the release notes if available, otherwise @c NO. The default behavior is @c YES. + */ +- (BOOL)updater:(SPUUpdater *)updater shouldDownloadReleaseNotesForUpdate:(SUAppcastItem *)updateItem; + +/** + Called immediately before downloading the specified update. + + @param updater The updater instance. + @param item The appcast item corresponding to the update that is proposed to be downloaded. + @param request The mutable URL request that will be used to download the update. + */ +- (void)updater:(SPUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request; + +/** + Called immediately after succesfull download of the specified update. + + @param updater The SUUpdater instance. + @param item The appcast item corresponding to the update that has been downloaded. + */ +- (void)updater:(SPUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item; + +/** + Called after the specified update failed to download. + + @param updater The updater instance. + @param item The appcast item corresponding to the update that failed to download. + @param error The error generated by the failed download. + */ +- (void)updater:(SPUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error; + +/** + Called when the user cancels an update while it is being downloaded. + + @param updater The updater instance. + */ +- (void)userDidCancelDownload:(SPUUpdater *)updater; + +/** + Called immediately before extracting the specified downloaded update. + + @param updater The SUUpdater instance. + @param item The appcast item corresponding to the update that is proposed to be extracted. + */ +- (void)updater:(SPUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item; + +/** + Called immediately after extracting the specified downloaded update. + + @param updater The SUUpdater instance. + @param item The appcast item corresponding to the update that has been extracted. + */ +- (void)updater:(SPUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item; + +/** + Called immediately before installing the specified update. + + @param updater The updater instance. + @param item The appcast item corresponding to the update that is proposed to be installed. + */ +- (void)updater:(SPUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; + +/** + Returns whether the relaunch should be delayed in order to perform other tasks. + + This is not called if the user didn't relaunch on the previous update, + in that case it will immediately restart. + + This may also not be called if the application is not going to relaunch after it terminates. + + @param updater The updater instance. + @param item The appcast item corresponding to the update that is proposed to be installed. + @param installHandler The install handler that must be completed before continuing with the relaunch. + + @return @c YES to delay the relaunch until @c installHandler is invoked. + */ +- (BOOL)updater:(SPUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvokingBlock:(void (^)(void))installHandler; + +/** + Returns whether the application should be relaunched at all. + + Some apps **cannot** be relaunched under certain circumstances. + This method can be used to explicitly prevent a relaunch. + + @param updater The updater instance. + @return @c YES if the updater should be relaunched, otherwise @c NO if it shouldn't. + */ +- (BOOL)updaterShouldRelaunchApplication:(SPUUpdater *)updater; + +/** + Called immediately before relaunching. + + @param updater The updater instance. + */ +- (void)updaterWillRelaunchApplication:(SPUUpdater *)updater; + +/** + Returns an object that compares version numbers to determine their arithmetic relation to each other. + + This method allows you to provide a custom version comparator. + If you don't implement this method or return @c nil, + the standard version comparator will be used. + + Note that the standard version comparator may be used during installation for preventing a downgrade, + even if you provide a custom comparator here. + + @param updater The updater instance. + @return The custom version comparator or @c nil if you don't want to be delegated this task. + */ +- (nullable id)versionComparatorForUpdater:(SPUUpdater *)updater; + +/** + Called when a background update will be scheduled after a delay. + + Automatic update checks need to be enabled for this to trigger. + + @param delay The delay in seconds until the next scheduled update will occur. This is an approximation and may vary due to system state. + + @param updater The updater instance. + */ +- (void)updater:(SPUUpdater *)updater willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay; + +/** + Called when no update checks will be scheduled in the future. + + This may later change if automatic update checks become enabled. + + @param updater The updater instance. + */ +- (void)updaterWillNotScheduleUpdateCheck:(SPUUpdater *)updater; + +/** + Returns the decryption password (if any) which is used to extract the update archive DMG. + + Return @c nil if no password should be used. + + @param updater The updater instance. + @return The password used for decrypting the archive, or @c nil if no password should be used. + */ +- (nullable NSString *)decryptionPasswordForUpdater:(SPUUpdater *)updater; + +/** + Called when an update is scheduled to be silently installed on quit after downloading the update automatically. + + If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time. + + Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after. + + Even if the @c immediateInstallHandler is not invoked, the installer will attempt to install the update on termination. + + @param updater The updater instance. + @param item The appcast item corresponding to the update that is proposed to be installed. + @param immediateInstallHandler The install handler for the delegate to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation. This handler can only be used if @c YES is returned and the delegate handles installing the update. For Sparkle 2.3 onwards, this handler can be invoked multiple times in case the application cancels the termination request. + @return @c YES if the delegate will handle installing the update or @c NO if the updater should be given responsibility. + */ +- (BOOL)updater:(SPUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))immediateInstallHandler; + +/** + Called after the update driver aborts due to an error. + + The update driver runs when checking for updates. This delegate method is called an error occurs during this process. + + Some special possible values of `error.code` are: + + - `SUNoUpdateError`: No new update was found. + - `SUInstallationCanceledError`: The user canceled installing the update when requested for authorization. + + @param updater The updater instance. + @param error The error that caused the update driver to abort. + */ +- (void)updater:(SPUUpdater *)updater didAbortWithError:(NSError *)error; + +/** + Called after the update driver finishes. + + The update driver runs when checking for updates. This delegate method is called when that check is finished. + + An update may be scheduled to be installed during the update cycle, or no updates may be found, or an available update may be dismissed or skipped (which is the same as no error). + + If the @c error is @c nil, no error has occurred. + + Some special possible values of `error.code` are: + + - `SUNoUpdateError`: No new update was found. + - `SUInstallationCanceledError`: The user canceled installing the update when requested for authorization. + + @param updater The updater instance. + @param updateCheck The type of update check was performed. + @param error The error that caused the update driver to abort. This is @c nil if the update driver finished normally and there is no error. + */ +- (void)updater:(SPUUpdater *)updater didFinishUpdateCycleForUpdateCheck:(SPUUpdateCheck)updateCheck error:(nullable NSError *)error; + +/* Deprecated methods */ + +- (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater __deprecated_msg("Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead."); + +- (void)updater:(SPUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item __deprecated_msg("Please use -[SPUUpdaterDelegate updater:userDidMakeChoice:forUpdate:state:] instead."); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h b/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h new file mode 100644 index 0000000..a480a42 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h @@ -0,0 +1,60 @@ +// +// SPUUpdaterSettings.h +// Sparkle +// +// Created by Mayur Pawashe on 3/27/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + This class can be used for reading certain updater settings. + + It retrieves the settings by first looking into the host's user defaults. + If the setting is not found in there, then the host's Info.plist file is looked at. + */ +SU_EXPORT @interface SPUUpdaterSettings : NSObject + +- (instancetype)initWithHostBundle:(NSBundle *)hostBundle; + +/** + * Indicates whether or not automatic update checks are enabled. + */ +@property (readonly, nonatomic) BOOL automaticallyChecksForUpdates; + +/** + * The regular update check interval. + */ +@property (readonly, nonatomic) NSTimeInterval updateCheckInterval; + +/** + * Indicates whether or not automatically downloading updates is allowed to be turned on by the user. + * If this value is nil, the developer has not explicitly specified this option. + */ +@property (readonly, nonatomic, nullable) NSNumber *allowsAutomaticUpdatesOption; + +/** + * Indicates whether or not automatically downloading updates is allowed to be turned on by the user. + */ +@property (readonly, nonatomic) BOOL allowsAutomaticUpdates; + +/** + * Indicates whether or not automatically downloading updates is enabled by the user or developer. + * + * Note this does not indicate whether or not automatic downloading of updates is allowable. + * See `-allowsAutomaticUpdates` property for that. + */ +@property (readonly, nonatomic) BOOL automaticallyDownloadsUpdates; + +/** + * Indicates whether or not anonymous system profile information is sent when checking for updates. + */ +@property (readonly, nonatomic) BOOL sendsSystemProfile; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUUserDriver.h b/Sparkle.framework/Versions/B/Headers/SPUUserDriver.h new file mode 100644 index 0000000..22cc167 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUserDriver.h @@ -0,0 +1,287 @@ +// +// SPUUserDriver.h +// Sparkle +// +// Created by Mayur Pawashe on 2/14/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class SPUUpdatePermissionRequest, SUUpdatePermissionResponse, SUAppcastItem, SPUDownloadData; + +/** + The API in Sparkle for controlling the user interaction. + + This protocol is used for implementing a user interface for the Sparkle updater. Sparkle's internal drivers tell + an object that implements this protocol what actions to take and show to the user. + + Every method in this protocol can be assumed to be called from the main thread. + */ +SU_EXPORT @protocol SPUUserDriver + +/** + * Show an updater permission request to the user + * + * Ask the user for their permission regarding update checks. + * This is typically only called once per app installation. + * + * @param request The update permission request. + * @param reply A reply with a update permission response. + */ +- (void)showUpdatePermissionRequest:(SPUUpdatePermissionRequest *)request reply:(void (^)(SUUpdatePermissionResponse *))reply; + +/** + * Show the user initating an update check + * + * Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar. + * + * @param cancellation Invoke this cancellation block to cancel the update check before the update check is completed. + */ +- (void)showUserInitiatedUpdateCheckWithCancellation:(void (^)(void))cancellation; + +/** + * Show the user a new update is found. + * + * Let the user know a new update is found and ask them what they want to do. + * Before this point, `-showUserInitiatedUpdateCheckWithCancellation:` may be called. + * + * The potential `stage`s on the updater @c state are: + * + * `SPUUpdateStateNotDownloaded` - Update has not been downloaded yet. + * + * `SPUUpdateStateDownloaded` - Update has already been downloaded but not started installing yet. + * + * `SPUUpdateStateInstalling` - Update has been downloaded and already started installing. + * + * The `userIntiated` property on the @c state indicates if the update was initiated by the user or if it was automatically scheduled in the background. + * + * Additionally, these properties on the @c appcastItem are of importance: + * + * @c appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you'll want to support this case. + * + * @c appcastItem.majorUpgrade indicates if the update is a major or paid upgrade. + * + * @c appcastItem.criticalUpdate indicates if the update is a critical update. + * + * A reply of `SPUUserUpdateChoiceInstall` begins or resumes downloading or installing the update. + * If the state.stage is `SPUUserUpdateStateInstalling`, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast "install and Relaunch"). + * Do not use this reply if @c appcastItem.informationOnlyUpdate is YES. + * + * A reply of `SPUUserUpdateChoiceDismiss` dismisses the update for the time being. The user may be reminded of the update at a later point. + * If the state.stage is `SPUUserUpdateStateDownloaded`, the downloaded update is kept after dismissing until the next time an update is shown to the user. + * If the state.stage is `SPUUserUpdateStateInstalling`, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated. + * + * A reply of `SPUUserUpdateChoiceSkip` skips this particular version and won't notify the user again, unless they initiate an update check themselves. + * If @c appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped, unless a future minor update specifies a `` requirement. + * If the state.stage is `SPUUpdateStateInstalling`, the installation is also canceled when the update is skipped. + * + * @param appcastItem The Appcast Item containing information that reflects the new update. + * @param state The current state of the user update. See above discussion for notable properties. + * @param reply The reply which indicates if the update should be installed, dismissed, or skipped. See above discussion for more details. + */ +- (void)showUpdateFoundWithAppcastItem:(SUAppcastItem *)appcastItem state:(SPUUserUpdateState *)state reply:(void (^)(SPUUserUpdateChoice))reply; + +/** + * Show the user the release notes for the new update + * + * Display the release notes to the user. This will be called after showing the new update. + * This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. + * That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil. + * + * @param downloadData The data for the release notes that was downloaded from the new update's appcast. + */ +- (void)showUpdateReleaseNotesWithDownloadData:(SPUDownloadData *)downloadData; + +/** + * Show the user that the new update's release notes could not be downloaded + * + * This will be called after showing the new update. + * This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. + * That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil. + * + * @param error The error associated with why the new update's release notes could not be downloaded. + */ +- (void)showUpdateReleaseNotesFailedToDownloadWithError:(NSError *)error; + +/** + * Show the user a new update was not found + * + * Let the user know a new update was not found after they tried initiating an update check. + * Before this point, `-showUserInitiatedUpdateCheckWithCancellation:` may be called. + * + * There are various reasons a new update is unavailable and can't be installed. + * The @c error object is populated with recovery and suggestion strings suitable to be shown in an alert. + * + * The @c userInfo dictionary on the @c error is also populated with two keys: + * + * `SPULatestAppcastItemFoundKey`: if available, this may provide the latest SUAppcastItem that was found. + * + * `SPUNoUpdateFoundReasonKey`: if available, this will provide the `SUNoUpdateFoundReason`. For example the reason could be because + * the latest version in the feed requires a newer OS version or could be because the user is already on the latest version. + * + * @param error The error associated with why a new update was not found. See above discussion for more details. + * @param acknowledgement Acknowledge to the updater that no update found error was shown. + */ +- (void)showUpdateNotFoundWithError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement; + +/** + * Show the user an update error occurred + * + * Let the user know that the updater failed with an error. This will not be invoked without the user having been + * aware that an update was in progress. + * + * Before this point, any of the non-error user driver methods may have been invoked. + * + * @param error The error associated with what update error occurred. + * @param acknowledgement Acknowledge to the updater that the error was shown. + */ +- (void)showUpdaterError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement; + +/** + * Show the user that downloading the new update initiated + * + * Let the user know that downloading the new update started. + * + * @param cancellation Invoke this cancellation block to cancel the download at any point before `-showDownloadDidStartExtractingUpdate` is invoked. + */ +- (void)showDownloadInitiatedWithCancellation:(void (^)(void))cancellation; + +/** + * Show the user the content length of the new update that will be downloaded + * + * @param expectedContentLength The expected content length of the new update being downloaded. + * An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). + * Additionally, this method may be called more than once for the same download in rare scenarios. + */ +- (void)showDownloadDidReceiveExpectedContentLength:(uint64_t)expectedContentLength; + +/** + * Show the user that the update download received more data + * + * This may be an appropriate time to advance a visible progress indicator of the download + * @param length The length of the data that was just downloaded + */ +- (void)showDownloadDidReceiveDataOfLength:(uint64_t)length; + +/** + * Show the user that the update finished downloading and started extracting + * + * Sparkle uses this to show an indeterminate progress bar. + * + * Note that an update can resume at this point after having been downloaded before, + * so this may be called without any of the download callbacks being invoked prior. + */ +- (void)showDownloadDidStartExtractingUpdate; + +/** + * Show the user that the update is extracting with progress + * + * Let the user know how far along the update extraction is. + * + * Before this point, `-showDownloadDidStartExtractingUpdate` is called. + * + * @param progress The progress of the extraction from a 0.0 to 1.0 scale + */ +- (void)showExtractionReceivedProgress:(double)progress; + +/** + * Show the user that the update is ready to install & relaunch + * + * Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. + * Note if the target application has already terminated, this method may not be invoked. + * + * A reply of `SPUUserUpdateChoiceInstall` installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update. + * + * A reply of `SPUUserUpdateChoiceDismiss` dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates. + * + * A reply of `SPUUserUpdateChoiceSkip` cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future. + * + * Before this point, `-showExtractionReceivedProgress:` or `-showUpdateFoundWithAppcastItem:state:reply:` may be called. + * + * @param reply The reply which indicates if the update should be installed, dismissed, or skipped. See above discussion for more details. + */ +- (void)showReadyToInstallAndRelaunch:(void (^)(SPUUserUpdateChoice))reply; + +/** + * Show the user that the update is installing + * + * Let the user know that the update is currently installing. + * + * Before this point, `-showReadyToInstallAndRelaunch:` or `-showUpdateFoundWithAppcastItem:state:reply:` will be called. + * + * @param applicationTerminated Indicates if the application has been terminated already. + * If the application hasn't been terminated, a quit event is sent to the running application before installing the update. + * If the application or user delays or cancels termination, there may be an indefinite period of time before the application fully quits. + * It is up to the implementor whether or not to decide to continue showing installation progress in this case. + * + * @param retryTerminatingApplication This handler gives a chance for the application to re-try sending a quit event to the running application before installing the update. + * The application may cancel or delay termination. This handler gives the user driver another chance to allow the user to try terminating the application again. + * If the application does not delay or cancel application termination, there is no need to invoke this handler. This handler may be invoked multiple times. + * Note this handler should not be invoked if @c applicationTerminated is already @c YES + */ +- (void)showInstallingUpdateWithApplicationTerminated:(BOOL)applicationTerminated retryTerminatingApplication:(void (^)(void))retryTerminatingApplication; + +/** + * Show the user that the update installation finished + * + * Let the user know that the update finished installing. + * + * This will only be invoked if the updater process is still alive, which is typically not the case if + * the updater's lifetime is tied to the application it is updating. This implementation must not try to reference + * the old bundle prior to the installation, which will no longer be around. + * + * Before this point, `-showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication:` will be called. + * + * @param relaunched Indicates if the update was relaunched. + * @param acknowledgement Acknowledge to the updater that the finished installation was shown. + */ +- (void)showUpdateInstalledAndRelaunched:(BOOL)relaunched acknowledgement:(void (^)(void))acknowledgement; + +/** + * Show the user the current presented update or its progress in utmost focus + * + * The user wishes to check for updates while the user is being shown update progress. + * Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc). + */ +- (void)showUpdateInFocus; + +/** + * Dismiss the current update installation + * + * Stop and tear down everything. + * Dismiss all update windows, alerts, progress, etc from the user. + * Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update. + */ +- (void)dismissUpdateInstallation; + +/* + * Below are deprecated methods that have been replaced by better alternatives. + * The deprecated methods will be used if the alternatives have not been implemented yet. + * In the future support for using these deprecated methods may be removed however. + */ +@optional + +// Clients should move to non-deprecated methods +// Deprecated methods are only (temporarily) kept around for compatibility reasons + +- (void)showUpdateNotFoundWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateNotFoundWithError:acknowledgement: instead"); + +- (void)showUpdateInstallationDidFinishWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead"); + +- (void)dismissUserInitiatedUpdateCheck __deprecated_msg("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs."); + +- (void)showInstallingUpdate __deprecated_msg("Implement -showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication: instead."); + +- (void)showSendingTerminationSignal __deprecated_msg("Implement -showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication: instead."); + +- (void)showInstallingUpdateWithApplicationTerminated:(BOOL)applicationTerminated __deprecated_msg("Implement -showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication: instead.");; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h b/Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h new file mode 100644 index 0000000..f7fcc1e --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h @@ -0,0 +1,77 @@ +// +// SPUUserUpdateState.h +// Sparkle +// +// Created by Mayur Pawashe on 2/29/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#ifndef SPUUserUpdateState_h +#define SPUUserUpdateState_h + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + A choice made by the user when prompted with a new update. + */ +typedef NS_ENUM(NSInteger, SPUUserUpdateChoice) { + /** + Dismisses the update and skips being notified of it in the future. + */ + SPUUserUpdateChoiceSkip, + /** + Downloads (if needed) and installs the update. + */ + SPUUserUpdateChoiceInstall, + /** + Dismisses the update until Sparkle reminds the user of it at a later time. + */ + SPUUserUpdateChoiceDismiss, +}; + +/** + Describes the current stage an update is undergoing. + */ +typedef NS_ENUM(NSInteger, SPUUserUpdateStage) { + /** + The update has not been downloaded. + */ + SPUUserUpdateStageNotDownloaded, + /** + The update has already been downloaded but not begun installing. + */ + SPUUserUpdateStageDownloaded, + /** + The update has already been downloaded and began installing in the background. + */ + SPUUserUpdateStageInstalling +}; + +/** + This represents the user's current update state. + */ +SU_EXPORT @interface SPUUserUpdateState : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/** + The current update stage. + + This stage indicates if data has been already downloaded or not, or if an update is currently being installed. + */ +@property (nonatomic, readonly) SPUUserUpdateStage stage; + +/** + Indicates whether or not the update check was initiated by the user. + */ +@property (nonatomic, readonly) BOOL userInitiated; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* SPUUserUpdateState_h */ diff --git a/Sparkle.framework/Versions/B/Headers/SUAppcast.h b/Sparkle.framework/Versions/B/Headers/SUAppcast.h new file mode 100644 index 0000000..3454b1b --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUAppcast.h @@ -0,0 +1,37 @@ +// +// SUAppcast.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCAST_H +#define SUAPPCAST_H + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class SUAppcastItem; + +/** + The appcast representing a collection of `SUAppcastItem` items in the feed. + */ +SU_EXPORT @interface SUAppcast : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/** + The collection of update items. + + These `SUAppcastItem` items are in the same order as specified in the appcast XML feed and are thus not sorted by version. + */ +@property (readonly, copy) NSArray *items; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Sparkle.framework/Versions/B/Headers/SUAppcastItem.h b/Sparkle.framework/Versions/B/Headers/SUAppcastItem.h new file mode 100644 index 0000000..c53c87c --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUAppcastItem.h @@ -0,0 +1,391 @@ +// +// SUAppcastItem.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCASTITEM_H +#define SUAPPCASTITEM_H + +#import + +#ifdef BUILDING_SPARKLE_TESTS +// Ignore incorrect warning +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" +#import "SUExport.h" +#pragma clang diagnostic pop +#else +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + The appcast item describing an update in the application's appcast feed. + + An appcast item represents a single update item in the `SUAppcast` contained within the @c element. + + Every appcast item must have a `versionString`, and either a `fileURL` or an `infoURL`. + All the remaining properties describing an update to the application are optional. + + Extended documentation and examples on using appcast item features are available at: + https://sparkle-project.org/documentation/publishing/ + */ +SU_EXPORT @interface SUAppcastItem : NSObject + +/** + The version of the update item. + + Sparkle uses this property to compare update items and determine the best available update item in the `SUAppcast`. + + This corresponds to the application update's @c CFBundleVersion + + This is extracted from the @c element, or the @c sparkle:version attribute from the @c element. + */ +@property (copy, readonly) NSString *versionString; + +/** + The human-readable display version of the update item if provided. + + This is the version string shown to the user when they are notified of a new update. + + This corresponds to the application update's @c CFBundleShortVersionString + + This is extracted from the @c element, or the @c sparkle:shortVersionString attribute from the @c element. + + If no short version string is available, this falls back to the update's `versionString`. + */ +@property (copy, readonly) NSString *displayVersionString; + +/** + The file URL to the update item if provided. + + This download contains the actual update Sparkle will attempt to install. + In cases where a download cannot be provided, an `infoURL` must be provided instead. + + A file URL should have an accompanying `contentLength` provided. + + This is extracted from the @c url attribute in the @c element. + */ +@property (readonly, nullable) NSURL *fileURL; + +/** + The content length of the download in bytes. + + This property is used as a fallback when the server doesn't report the content length of the download. + In that case, it is used to report progress of the downloading update to the user. + + A warning is outputted if this property is not equal the server's expected content length (if provided). + + This is extracted from the @c length attribute in the @c element. + It should be specified if a `fileURL` is provided. + */ +@property (nonatomic, readonly) uint64_t contentLength; + +/** + The info URL to the update item if provided. + + This informational link is used to direct the user to learn more about an update they cannot download/install directly from within the application. + The link should point to the product's web page. + + The informational link will be used if `informationOnlyUpdate` is @c YES + + This is extracted from the @c element. + */ +@property (readonly, nullable) NSURL *infoURL; + +/** + Indicates whether or not the update item is only informational and has no download. + + If `infoURL` is not present, this is @c NO + + If `fileURL` is not present, this is @c YES + + Otherwise this is determined based on the contents extracted from the @c element. + */ +@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate; + +/** + The title of the appcast item if provided. + + This is extracted from the @c element. + */ +@property (copy, readonly, nullable) NSString *title; + +/** + The date string of the appcast item if provided. + + The `date` property is constructed from this property and expects this string to comply with the following date format: + `E, dd MMM yyyy HH:mm:ss Z` + + This is extracted from the @c <pubDate> element. + */ +@property (copy, readonly, nullable) NSString *dateString; + +/** + The date constructed from the `dateString` property if provided. + + Sparkle by itself only uses this property for phased group rollouts specified via `phasedRolloutInterval`, but clients may query this property too. + + This date is constructed using the @c en_US locale. + */ +@property (copy, readonly, nullable) NSDate *date; + +/** + The release notes URL of the appcast item if provided. + + This external link points to an HTML file that Sparkle downloads and renders to show the user a new or old update item's changelog. + + An alternative to using an external release notes link is providing an embedded `itemDescription`. + + This is extracted from the @c <sparkle:releaseNotesLink> element. + */ +@property (readonly, nullable) NSURL *releaseNotesURL; + +/** + The description of the appcast item if provided. + + A description may be provided for inline/embedded release notes for new updates using @c <![CDATA[...]]> + This is an alternative to providing a `releaseNotesURL`. + + This is extracted from the @c <description> element. + */ +@property (copy, readonly, nullable) NSString *itemDescription; + +/** + The full release notes URL of the appcast item if provided. + + The link should point to the product's full changelog. + + Sparkle's standard user interface offers to show these full release notes when a user checks for a new update and no new update is available. + + This is extracted from the @c <sparkle:fullReleaseNotesLink> element. + */ +@property (readonly, nullable) NSURL *fullReleaseNotesURL; + +/** + The required minimum system operating version string for this update if provided. + + This version string should contain three period-separated components. + + Example: @c 10.13.0 + + Use `minimumOperatingSystemVersionIsOK` property to test if the current running system passes this requirement. + + This is extracted from the @c <sparkle:minimumSystemVersion> element. + */ +@property (copy, readonly, nullable) NSString *minimumSystemVersion; + +/** + Indicates whether or not the current running system passes the `minimumSystemVersion` requirement. + */ +@property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK; + +/** + The required maximum system operating version string for this update if provided. + + A maximum system operating version requirement should only be made in unusual scenarios. + + This version string should contain three period-separated components. + + Example: @c 10.14.0 + + Use `maximumOperatingSystemVersionIsOK` property to test if the current running system passes this requirement. + + This is extracted from the @c <sparkle:maximumSystemVersion> element. + */ +@property (copy, readonly, nullable) NSString *maximumSystemVersion; + +/** + Indicates whether or not the current running system passes the `maximumSystemVersion` requirement. + */ +@property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK; + +/** + The channel the update item is on if provided. + + An update item may specify a custom channel name (such as @c beta) that can only be found by updaters that filter for that channel. + If no channel is provided, the update item is assumed to be on the default channel. + + This is extracted from the @c <sparkle:channel> element. + Old applications must be using Sparkle 2 or later to interpret the channel element and to ignore unmatched channels. + */ +@property (nonatomic, readonly, nullable) NSString *channel; + +/** + The installation type of the update at `fileURL` + + This may be: + - @c application - indicates this is a regular application update. + - @c package - indicates this is a guided package installer update. + - @c interactive-package - indicates this is an interactive package installer update (deprecated; use "package" instead) + + This is extracted from the @c sparkle:installationType attribute in the @c <enclosure> element. + + If no installation type is provided in the enclosure, the installation type is inferred from the `fileURL` file extension instead. + + If the file extension is @c pkg or @c mpkg, the installation type is @c package otherwise it is @c application + + Hence, the installation type in the enclosure element only needs to be specified for package based updates distributed inside of a @c zip or other archive format. + + Old applications must be using Sparkle 1.26 or later to support downloading bare package updates (`pkg` or `mpkg`) that are not additionally archived inside of a @c zip or other archive format. + */ +@property (nonatomic, copy, readonly) NSString *installationType; + +/** + The phased rollout interval of the update item in seconds if provided. + + This is the interval between when different groups of users are notified of a new update. + + For this property to be used by Sparkle, the published `date` on the update item must be present as well. + + After each interval after the update item's `date`, a new group of users become eligible for being notified of the new update. + + This is extracted from the @c <sparkle:phasedRolloutInterval> element. + + Old applications must be using Sparkle 1.25 or later to support phased rollout intervals, otherwise they may assume updates are immediately available. + */ +@property (copy, readonly, nullable) NSNumber* phasedRolloutInterval; + +/** + The minimum bundle version string this update requires for automatically downloading and installing updates if provided. + + If an application's bundle version meets this version requirement, it can install the new update item in the background automatically. + + Otherwise if the requirement is not met, the user is always prompted to install the update. In this case, the update is assumed to be a `majorUpgrade`. + + If the update is a `majorUpgrade` and the update is skipped by the user, other future update alerts with the same `minimumAutoupdateVersion` will also be skipped automatically unless an update specifies `ignoreSkippedUpgradesBelowVersion`. + + This version string corresponds to the application's @c CFBundleVersion + + This is extracted from the @c <sparkle:minimumAutoupdateVersion> element. + */ +@property (copy, readonly, nullable) NSString *minimumAutoupdateVersion; + +/** + Indicates whether or not the update item is a major upgrade. + + An update is a major upgrade if the application's bundle version doesn't meet the `minimumAutoupdateVersion` requirement. + */ +@property (getter=isMajorUpgrade, readonly) BOOL majorUpgrade; + +/** + Previously skipped upgrades by the user will be ignored if they skipped an update whose version precedes this version. + + This can only be applied if the update is a `majorUpgrade`. + + This version string corresponds to the application's @c CFBundleVersion + + This is extracted from the @c <sparkle:ignoreSkippedUpgradesBelowVersion> element. + + Old applications must be using Sparkle 2.1 or later, otherwise this property will be ignored. + */ +@property (nonatomic, readonly, nullable) NSString *ignoreSkippedUpgradesBelowVersion; + +/** + Indicates whether or not the update item is critical. + + Critical updates are shown to the user more promptly. Sparkle's standard user interface also does not allow them to be skipped. + + This is determined and extracted from a top-level @c <sparkle:criticalUpdate> element or a @c sparkle:criticalUpdate element inside of a @c sparkle:tags element. + + Old applications must be using Sparkle 2 or later to support the top-level @c <sparkle:criticalUpdate> element. + */ +@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate; + +/** + Specifies the operating system the download update is available for if provided. + + If this property is not provided, then the supported operating system is assumed to be macOS. + + Known potential values for this string are @c macos and @c windows + + Sparkle on Mac ignores update items that are for other operating systems. + This is only useful for sharing appcasts between Sparkle on Mac and Sparkle on other operating systems. + + Use `macOsUpdate` property to test if this update item is for macOS. + + This is extracted from the @c sparkle:os attribute in the @c <enclosure> element. + */ +@property (copy, readonly, nullable) NSString *osString; + +/** + Indicates whether or not this update item is for macOS. + + This is determined from the `osString` property. + */ +@property (getter=isMacOsUpdate, readonly) BOOL macOsUpdate; + +/** + The delta updates for this update item. + + Sparkle uses these to download and apply a smaller update based on the version the user is updating from. + + The key is based on the @c sparkle:version of the update. + The value is an update item that will have `deltaUpdate` be @c YES + + Clients typically should not need to examine the contents of the delta updates. + + This is extracted from the @c <sparkle:deltas> element. + */ +@property (copy, readonly, nullable) NSDictionary<NSString *, SUAppcastItem *> *deltaUpdates; + +/** + The expected size of the Sparkle executable file before applying this delta update. + + This attribute is used to test if the delta item can still be applied. If Sparkle's executable file has changed (e.g. from having an architecture stripped), + then the delta item cannot be applied. + + This is extracted from the @c sparkle:deltaFromSparkleExecutableSize attribute from the @c <enclosure> element of a @c sparkle:deltas item. + This attribute is optional for delta update items. + */ +@property (nonatomic, readonly, nullable) NSNumber *deltaFromSparkleExecutableSize; + +/** + An expected set of Sparkle's locales present on disk before applying this delta update. + + This attribute is used to test if the delta item can still be applied. If Sparkle's list of locales present on disk (.lproj directories) do not contain any items from this set, + (e.g. from having localization files stripped) then the delta item cannot be applied. This set does not need to be a complete list of locales. Sparkle may even decide + to not process all them. 1-10 should be a decent amount. + + This is extracted from the @c sparkle:deltaFromSparkleLocales attribute from the @c <enclosure> element of a @c sparkle:deltas item. + The locales extracted from this attribute are delimited by a comma (e.g. "en,ca,fr,hr,hu"). This attribute is optional for delta update items. + */ +@property (nonatomic, readonly, nullable) NSSet<NSString *> *deltaFromSparkleLocales; + +/** + Indicates whether or not the update item is a delta update. + + An update item is a delta update if it is in the `deltaUpdates` of another update item. + */ +@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate; + +/** + The dictionary representing the entire appcast item. + + This is useful for querying custom extensions or elements from the appcast item. + */ +@property (readonly, copy) NSDictionary *propertiesDictionary; + +- (instancetype)init NS_UNAVAILABLE; + +/** + An empty appcast item. + + This may be used as a potential return value in `-[SPUUpdaterDelegate bestValidUpdateInAppcast:forUpdater:]` + */ ++ (instancetype)emptyAppcastItem; + +// Deprecated initializers +- (nullable instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case."); +- (nullable instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case."); +- (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case."); + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Sparkle.framework/Versions/B/Headers/SUErrors.h b/Sparkle.framework/Versions/B/Headers/SUErrors.h new file mode 100644 index 0000000..22bf606 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUErrors.h @@ -0,0 +1,106 @@ +// +// SUErrors.h +// Sparkle +// +// Created by C.W. Betts on 10/13/14. +// Copyright (c) 2014 Sparkle Project. All rights reserved. +// + +#ifndef SUERRORS_H +#define SUERRORS_H + +#import <Foundation/Foundation.h> + +#if defined(BUILDING_SPARKLE_TOOL) || defined(BUILDING_SPARKLE_TESTS) +// Ignore incorrect warning +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" +#import "SUExport.h" +#pragma clang diagnostic pop +#else +#import <Sparkle/SUExport.h> +#endif + +/** + * Error domain used by Sparkle + */ +SU_EXPORT extern NSString *const SUSparkleErrorDomain; + +typedef NS_ENUM(OSStatus, SUError) { + // Configuration phase errors + SUNoPublicDSAFoundError = 0001, + SUInsufficientSigningError = 0002, + SUInsecureFeedURLError = 0003, + SUInvalidFeedURLError = 0004, + SUInvalidUpdaterError = 0005, + SUInvalidHostBundleIdentifierError = 0006, + SUInvalidHostVersionError = 0007, + + // Appcast phase errors. + SUAppcastParseError = 1000, + SUNoUpdateError = 1001, + SUAppcastError = 1002, + SURunningFromDiskImageError = 1003, + SUResumeAppcastError = 1004, + SURunningTranslocated = 1005, + SUWebKitTerminationError = 1006, + + // Download phase errors. + SUTemporaryDirectoryError = 2000, + SUDownloadError = 2001, + + // Extraction phase errors. + SUUnarchivingError = 3000, + SUSignatureError = 3001, + SUValidationError = 3002, + + // Installation phase errors. + SUFileCopyFailure = 4000, + SUAuthenticationFailure = 4001, + SUMissingUpdateError = 4002, + SUMissingInstallerToolError = 4003, + SURelaunchError = 4004, + SUInstallationError = 4005, + SUDowngradeError = 4006, + SUInstallationCanceledError = 4007, + SUInstallationAuthorizeLaterError = 4008, + SUNotValidUpdateError = 4009, + SUAgentInvalidationError = 4010, + SUInstallationRootInteractiveError = 4011, + SUInstallationWriteNoPermissionError = 4012, + + // API misuse errors. + SUIncorrectAPIUsageError = 5000 +}; + +/** + The reason why a new update is not available. + */ +typedef NS_ENUM(OSStatus, SPUNoUpdateFoundReason) { + /** + A new update is unavailable for an unknown reason. + */ + SPUNoUpdateFoundReasonUnknown, + /** + A new update is unavailable because the user is on the latest known version in the appcast feed. + */ + SPUNoUpdateFoundReasonOnLatestVersion, + /** + A new update is unavailable because the user is on a version newer than the latest known version in the appcast feed. + */ + SPUNoUpdateFoundReasonOnNewerThanLatestVersion, + /** + A new update is unavailable because the user's operating system version is too old for the update. + */ + SPUNoUpdateFoundReasonSystemIsTooOld, + /** + A new update is unavailable because the user's operating system version is too new for the update. + */ + SPUNoUpdateFoundReasonSystemIsTooNew +}; + +SU_EXPORT extern NSString *const SPUNoUpdateFoundReasonKey; +SU_EXPORT extern NSString *const SPULatestAppcastItemFoundKey; +SU_EXPORT extern NSString *const SPUNoUpdateFoundUserInitiatedKey; + +#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUExport.h b/Sparkle.framework/Versions/B/Headers/SUExport.h similarity index 100% rename from Sparkle.framework/Versions/A/Headers/SUExport.h rename to Sparkle.framework/Versions/B/Headers/SUExport.h diff --git a/Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h b/Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h new file mode 100644 index 0000000..b9cfae6 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h @@ -0,0 +1,63 @@ +// +// SUStandardVersionComparator.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUSTANDARDVERSIONCOMPARATOR_H +#define SUSTANDARDVERSIONCOMPARATOR_H + +#import <Foundation/Foundation.h> + +#ifdef BUILDING_SPARKLE_TOOL +// Ignore incorrect warning +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" +#import "SUExport.h" +#import "SUVersionComparisonProtocol.h" +#pragma clang diagnostic pop +#else +#import <Sparkle/SUExport.h> +#import <Sparkle/SUVersionComparisonProtocol.h> +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + Sparkle's default version comparator. + + This comparator is adapted from MacPAD, by Kevin Ballard. + It's "dumb" in that it does essentially string comparison, + in components split by character type. +*/ +SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison> + +/** + Initializes a new instance of the standard version comparator. +*/ +- (instancetype)init; + +/** + A singleton instance of the comparator. + */ +@property (nonatomic, class, readonly) SUStandardVersionComparator *defaultComparator; + +/** + Compares two version strings through textual analysis. + + These version strings should be in the format of x, x.y, or x.y.z where each component is a number. + For example, valid version strings include "1.5.3", "500", or "4000.1" + These versions that are compared correspond to the @c CFBundleVersion values of the updates. + + @param versionA The first version string to compare. + @param versionB The second version string to compare. + @return A comparison result between @c versionA and @c versionB +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +NS_ASSUME_NONNULL_END +#endif diff --git a/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h b/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h new file mode 100644 index 0000000..770d754 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h @@ -0,0 +1,40 @@ +// +// SUUpdatePermissionResponse.h +// Sparkle +// +// Created by Mayur Pawashe on 2/8/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <Sparkle/SUExport.h> + +/** + This class represents a response for permission to check updates. +*/ +SU_EXPORT @interface SUUpdatePermissionResponse : NSObject<NSSecureCoding> + +/** + Initializes a new update permission response instance. + + @param automaticUpdateChecks Flag for whether to allow automatic update checks. + @param sendSystemProfile Flag for if system profile information should be sent to the server hosting the appcast. + */ +- (instancetype)initWithAutomaticUpdateChecks:(BOOL)automaticUpdateChecks sendSystemProfile:(BOOL)sendSystemProfile; + +/* + Use -initWithAutomaticUpdateChecks:sendSystemProfile: instead. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + A read-only property indicating whether automatic update checks are allowed or not. + */ +@property (nonatomic, readonly) BOOL automaticUpdateChecks; + +/** + A read-only property indicating if system profile should be sent or not. + */ +@property (nonatomic, readonly) BOOL sendSystemProfile; + +@end diff --git a/Sparkle.framework/Versions/B/Headers/SUUpdater.h b/Sparkle.framework/Versions/B/Headers/SUUpdater.h new file mode 100644 index 0000000..f268324 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUUpdater.h @@ -0,0 +1,200 @@ +// +// SUUpdater.h +// Sparkle +// +// Created by Andy Matuschak on 1/4/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUUPDATER_H +#define SUUPDATER_H + +#import <Foundation/Foundation.h> +#import <Sparkle/SUExport.h> +#import <Sparkle/SUVersionComparisonProtocol.h> +#import <Sparkle/SUVersionDisplayProtocol.h> +#import <Sparkle/SUUpdaterDelegate.h> + +@class SUAppcastItem, SUAppcast, NSMenuItem; + +@protocol SUUpdaterDelegate; + +/** + The legacy API in Sparkle for controlling the update mechanism. + + This class is now deprecated and acts as a thin wrapper around `SPUUpdater` and `SPUStandardUserDriver`. + + If you are migrating to Sparkle 2, use `SPUStandardUpdaterController` instead, or `SPUUpdater` if you need more control. + */ +__deprecated_msg("Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.") +SU_EXPORT @interface SUUpdater : NSObject + +@property (unsafe_unretained, nonatomic) IBOutlet id<SUUpdaterDelegate> delegate; + +/*! + The shared updater for the main bundle. + + This is equivalent to passing [NSBundle mainBundle] to SUUpdater::updaterForBundle: + */ ++ (SUUpdater *)sharedUpdater; + +/*! + The shared updater for a specified bundle. + If an updater has already been initialized for the provided bundle, that shared instance will be returned. + */ ++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; + +/*! + Designated initializer for SUUpdater. + + If an updater has already been initialized for the provided bundle, that shared instance will be returned. + */ +- (instancetype)initForBundle:(NSBundle *)bundle; + +/*! + Explicitly checks for updates and displays a progress dialog while doing so. + + This method is meant for a main menu item. + Connect any menu item to this action in Interface Builder, + and Sparkle will check for updates and report back its findings verbosely + when it is invoked. + + This will find updates that the user has opted into skipping. + */ +- (IBAction)checkForUpdates:(id)sender; + +/*! + The menu item validation used for the -checkForUpdates: action + */ +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem; + +/*! + Checks for updates, but does not display any UI unless an update is found. + + This is meant for programmatically initating a check for updates. That is, + it will display no UI unless it actually finds an update, in which case it + proceeds as usual. + + If automatic downloading of updates it turned on and allowed, however, + this will invoke that behavior, and if an update is found, it will be downloaded + in the background silently and will be prepped for installation. + + This will not find updates that the user has opted into skipping. + */ +- (void)checkForUpdatesInBackground; + +/*! + A property indicating whether or not to check for updates automatically. + + Setting this property will persist in the host bundle's user defaults. + The update schedule cycle will be reset in a short delay after the property's new value is set. + This is to allow reverting this property without kicking off a schedule change immediately + */ +@property (nonatomic) BOOL automaticallyChecksForUpdates; + +/*! + A property indicating whether or not updates can be automatically downloaded in the background. + + Note that automatic downloading of updates can be disallowed by the developer. + In this case, -automaticallyDownloadsUpdates will return NO regardless of how this property is set. + + Setting this property will persist in the host bundle's user defaults. + */ +@property (nonatomic) BOOL automaticallyDownloadsUpdates; + +/*! + A property indicating the current automatic update check interval. + + Setting this property will persist in the host bundle's user defaults. + The update schedule cycle will be reset in a short delay after the property's new value is set. + This is to allow reverting this property without kicking off a schedule change immediately + */ +@property (nonatomic) NSTimeInterval updateCheckInterval; + +/*! + Begins a "probing" check for updates which will not actually offer to + update to that version. + + However, the delegate methods + SUUpdaterDelegate::updater:didFindValidUpdate: and + SUUpdaterDelegate::updaterDidNotFindUpdate: will be called, + so you can use that information in your UI. + + Updates that have been skipped by the user will not be found. + */ +- (void)checkForUpdateInformation; + +/*! + The URL of the appcast used to download update information. + + Setting this property will persist in the host bundle's user defaults. + If you don't want persistence, you may want to consider instead implementing + SUUpdaterDelegate::feedURLStringForUpdater: or SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile: + + This property must be called on the main thread. + */ +@property (nonatomic, copy) NSURL *feedURL; + +/*! + The host bundle that is being updated. + */ +@property (readonly, nonatomic) NSBundle *hostBundle; + +/*! + The bundle this class (SUUpdater) is loaded into. + */ +@property (nonatomic, readonly) NSBundle *sparkleBundle; + +/*! + The user agent used when checking for and downloading updates. + + The default implementation can be overrided. + */ +@property (nonatomic, copy) NSString *userAgentString; + +/*! + The HTTP headers used when checking for and downloading updates. + + The keys of this dictionary are HTTP header fields (NSString) and values are corresponding values (NSString) + */ +@property (copy) NSDictionary<NSString *, NSString *> *httpHeaders; + +/*! + A property indicating whether or not the user's system profile information is sent when checking for updates. + + Setting this property will persist in the host bundle's user defaults. + */ +@property (nonatomic) BOOL sendsSystemProfile; + +/*! + A property indicating the decryption password used for extracting updates shipped as Apple Disk Images (dmg) + */ +@property (nonatomic, copy) NSString *decryptionPassword; + +/*! + Returns the date of last update check. + + \returns \c nil if no check has been performed. + */ +@property (nonatomic, readonly, copy) NSDate *lastUpdateCheckDate; + +/*! + Appropriately schedules or cancels the update checking timer according to + the preferences for time interval and automatic checks. + + This call does not change the date of the next check, + but only the internal NSTimer. + */ +- (void)resetUpdateCycle; + +/*! + A property indicating whether or not an update is in progress. + + Note this property is not indicative of whether or not user initiated updates can be performed. + Use SUUpdater::validateMenuItem: for that instead. + */ +@property (nonatomic, readonly) BOOL updateInProgress; + +@end + +#endif diff --git a/Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h b/Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h new file mode 100644 index 0000000..466a92a --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h @@ -0,0 +1,354 @@ +// +// SUUpdaterDelegate.h +// Sparkle +// +// Created by Mayur Pawashe on 3/12/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <Sparkle/SUExport.h> + +@protocol SUVersionComparison, SUVersionDisplay; +@class SUUpdater, SUAppcast, SUAppcastItem; + +NS_ASSUME_NONNULL_BEGIN + +// ----------------------------------------------------------------------------- +// SUUpdater Notifications for events that might be interesting to more than just the delegate +// The updater will be the notification object +// ----------------------------------------------------------------------------- +SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification; +SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification; +SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification; +SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification; +#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification; +#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification; + +// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo +SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey; +// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo +SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey; + +// ----------------------------------------------------------------------------- +// SUUpdater Delegate: +// ----------------------------------------------------------------------------- + +/*! + Provides methods to control the behavior of an SUUpdater object. + */ +__deprecated_msg("Deprecated in Sparkle 2. See SPUUpdaterDelegate instead") +@protocol SUUpdaterDelegate <NSObject> +@optional + +/*! + Returns whether to allow Sparkle to pop up. + + For example, this may be used to prevent Sparkle from interrupting a setup assistant. + + \param updater The SUUpdater instance. + */ +- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater; + +/*! + Returns additional parameters to append to the appcast URL's query string. + + This is potentially based on whether or not Sparkle will also be sending along the system profile. + + \param updater The SUUpdater instance. + \param sendingProfile Whether the system profile will also be sent. + + \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. + */ +- (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; + +/*! + Returns a custom appcast URL. + + Override this to dynamically specify the entire URL. + + An alternative may be to use SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile: + and let the server handle what kind of feed to provide. + + \param updater The SUUpdater instance. + */ +- (nullable NSString *)feedURLStringForUpdater:(SUUpdater *)updater; + +/*! + Returns whether Sparkle should prompt the user about automatic update checks. + + Use this to override the default behavior. + + \param updater The SUUpdater instance. + */ +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater; + +/*! + Called after Sparkle has downloaded the appcast from the remote server. + + Implement this if you want to do some special handling with the appcast once it finishes loading. + + \param updater The SUUpdater instance. + \param appcast The appcast that was downloaded from the remote server. + */ +- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +/*! + Returns the item in the appcast corresponding to the update that should be installed. + + If you're using special logic or extensions in your appcast, + implement this to use your own logic for finding a valid update, if any, + in the given appcast. + + \param appcast The appcast that was downloaded from the remote server. + \param updater The SUUpdater instance. + */ +- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater; + +/*! + Called when a valid update is found by the update driver. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + */ +- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; + +/*! + Called when a valid update is not found. + + \param updater The SUUpdater instance. + */ +- (void)updaterDidNotFindUpdate:(SUUpdater *)updater; + +/*! + Called just before the scheduled update driver prompts the user to install an update. + + \param updater The SUUpdater instance. + + \return YES to allow the update prompt to be shown (the default behavior), or NO to suppress it. + */ + - (BOOL)updaterShouldShowUpdateAlertForScheduledUpdate:(SUUpdater *)updater forItem:(SUAppcastItem *)item; + + /*! + Called after the user dismisses the update alert. + + \param updater The SUUpdater instance. + \param permanently YES if the alert will not appear again for this update; NO if it may reappear. + */ + - (void)updater:(SUUpdater *)updater didDismissUpdateAlertPermanently:(BOOL)permanently forItem:(SUAppcastItem *)item; + +/*! + Called immediately before downloading the specified update. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be downloaded. + \param request The mutable URL request that will be used to download the update. + */ +- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request; + +/*! + Called immediately after succesfull download of the specified update. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that has been downloaded. + */ +- (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item; + +/*! + Called after the specified update failed to download. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that failed to download. + \param error The error generated by the failed download. + */ +- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error; + +/*! + Called when the user clicks the cancel button while and update is being downloaded. + + \param updater The SUUpdater instance. + */ +- (void)userDidCancelDownload:(SUUpdater *)updater; + +/*! + Called immediately before extracting the specified downloaded update. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be extracted. + */ +- (void)updater:(SUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item; + +/*! + Called immediately after extracting the specified downloaded update. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that has been extracted. + */ +- (void)updater:(SUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item; + +/*! + Called immediately before installing the specified update. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + */ +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; + +/*! + Called when an update is skipped by the user. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that the user skipped. + */ +- (void)updater:(SUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item; + +/*! + Returns whether the relaunch should be delayed in order to perform other tasks. + + This is not called if the user didn't relaunch on the previous update, + in that case it will immediately restart. + + This may also not be called if the application is not going to relaunch after it terminates. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + \param invocation The invocation that must be completed with `[invocation invoke]` before continuing with the relaunch. + + \return \c YES to delay the relaunch until \p invocation is invoked. + */ +- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation; + +/*! + Returns whether the relaunch should be delayed in order to perform other tasks. + + This is not called if the user didn't relaunch on the previous update, + in that case it will immediately restart. + + This method acts as a simpler alternative to SUUpdaterDelegate::updater:shouldPostponeRelaunchForUpdate:untilInvoking: avoiding usage of NSInvocation, which is not available in Swift environments. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + + \return \c YES to delay the relaunch. + */ +- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item; + +/*! + Returns whether the application should be relaunched at all. + + Some apps \b cannot be relaunched under certain circumstances. + This method can be used to explicitly prevent a relaunch. + + \param updater The SUUpdater instance. + */ +- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater; + +/*! + Called immediately before relaunching. + + \param updater The SUUpdater instance. + */ +- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; + +/*! + Called immediately after relaunching. SUUpdater delegate must be set before applicationDidFinishLaunching: to catch this event. + + \param updater The SUUpdater instance. + */ +- (void)updaterDidRelaunchApplication:(SUUpdater *)updater; + +/*! + Returns an object that compares version numbers to determine their arithmetic relation to each other. + + This method allows you to provide a custom version comparator. + If you don't implement this method or return \c nil, + the standard version comparator will be used. Note that the + standard version comparator may be used during installation for preventing + a downgrade, even if you provide a custom comparator here. + + \sa SUStandardVersionComparator + + \param updater The SUUpdater instance. + */ +- (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater; + +/*! + Returns an object that formats version numbers for display to the user. + If you don't implement this method or return \c nil, the standard version formatter will be used. + + \sa SUUpdateAlert + \param updater The SUUpdater instance. + */ +- (nullable id <SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater; + +/*! + Returns the path to the application which is used to relaunch after the update is installed. + + The installer also waits for the termination of the application at this path. + + The default is the path of the host bundle. + + \param updater The SUUpdater instance. + */ +- (nullable NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; + +/*! + Called before an updater shows a modal alert window, + to give the host the opportunity to hide attached windows that may get in the way. + + \param updater The SUUpdater instance. + */ +- (void)updaterWillShowModalAlert:(SUUpdater *)updater; + +/*! + Called after an updater shows a modal alert window, + to give the host the opportunity to hide attached windows that may get in the way. + + \param updater The SUUpdater instance. + */ +- (void)updaterDidShowModalAlert:(SUUpdater *)updater; + +/*! + Called when an update is scheduled to be silently installed on quit. + + This is after an update has been automatically downloaded in the background. + (i.e. SUUpdater::automaticallyDownloadsUpdates is YES) + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + \param invocation Can be used to trigger an immediate silent install and relaunch. + */ +- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation; + +/*! + Called when an update is scheduled to be silently installed on quit. + This is after an update has been automatically downloaded in the background. + (i.e. SUUpdater::automaticallyDownloadsUpdates is YES) + This method acts as a more modern alternative to SUUpdaterDelegate::updater:willInstallUpdateOnQuit:immediateInstallationInvocation: using a block instead of NSInvocation, which is not available in Swift environments. + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + \param installationBlock Can be used to trigger an immediate silent install and relaunch. + */ +- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))installationBlock; + +/*! + Calls after an update that was scheduled to be silently installed on quit has been canceled. + + \param updater The SUUpdater instance. + \param item The appcast item corresponding to the update that was proposed to be installed. + + \deprecated This method is no longer invoked. The installer will try to its best ability to install the update. + */ +- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item __deprecated; + +/*! + Called after an update is aborted due to an error. + + \param updater The SUUpdater instance. + \param error The error that caused the abort + */ +- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h b/Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h similarity index 67% rename from Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h rename to Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h index 10c4266..b21e90d 100644 --- a/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h +++ b/Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h @@ -9,15 +9,26 @@ #ifndef SUVERSIONCOMPARISONPROTOCOL_H #define SUVERSIONCOMPARISONPROTOCOL_H -#import <Cocoa/Cocoa.h> +#import <Foundation/Foundation.h> + +#ifdef BUILDING_SPARKLE_TOOL +// Ignore incorrect warning +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" #import "SUExport.h" +#pragma clang diagnostic pop +#else +#import <Sparkle/SUExport.h> +#endif + +NS_ASSUME_NONNULL_BEGIN -/*! +/** Provides version comparison facilities for Sparkle. */ @protocol SUVersionComparison -/*! +/** An abstract method to compare two version strings. Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, @@ -27,4 +38,5 @@ @end +NS_ASSUME_NONNULL_END #endif diff --git a/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h b/Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h similarity index 64% rename from Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h rename to Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h index 97fae4c..736a28a 100644 --- a/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h +++ b/Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h @@ -6,20 +6,20 @@ // Copyright 2009 Elgato Systems GmbH. All rights reserved. // -#import <Cocoa/Cocoa.h> -#import "SUExport.h" +#import <Foundation/Foundation.h> +#import <Sparkle/SUExport.h> -/*! +/** Applies special display formatting to version numbers. */ -@protocol SUVersionDisplay +SU_EXPORT @protocol SUVersionDisplay -/*! +/** Formats two version strings. Both versions are provided so that important distinguishing information can be displayed while also leaving out unnecessary/confusing parts. */ -- (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB; +- (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB; @end diff --git a/Sparkle.framework/Versions/B/Headers/Sparkle.h b/Sparkle.framework/Versions/B/Headers/Sparkle.h new file mode 100644 index 0000000..a048d26 --- /dev/null +++ b/Sparkle.framework/Versions/B/Headers/Sparkle.h @@ -0,0 +1,39 @@ +// +// Sparkle.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SPARKLE_H +#define SPARKLE_H + +// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless +// there are name-space collisions) so we can list all of them to start with: + +#import <Sparkle/SUExport.h> +#import <Sparkle/SUAppcast.h> +#import <Sparkle/SUAppcastItem.h> +#import <Sparkle/SUStandardVersionComparator.h> +#import <Sparkle/SPUUpdater.h> +#import <Sparkle/SPUUpdaterDelegate.h> +#import <Sparkle/SPUUpdaterSettings.h> +#import <Sparkle/SUVersionComparisonProtocol.h> +#import <Sparkle/SUVersionDisplayProtocol.h> +#import <Sparkle/SUErrors.h> +#import <Sparkle/SPUUpdatePermissionRequest.h> +#import <Sparkle/SUUpdatePermissionResponse.h> +#import <Sparkle/SPUUserDriver.h> +#import <Sparkle/SPUDownloadData.h> + +// UI bits +#import <Sparkle/SPUStandardUpdaterController.h> +#import <Sparkle/SPUStandardUserDriver.h> +#import <Sparkle/SPUStandardUserDriverDelegate.h> + +// Deprecated bits +#import <Sparkle/SUUpdater.h> +#import <Sparkle/SUUpdaterDelegate.h> + +#endif diff --git a/Sparkle.framework/Versions/A/Modules/module.modulemap b/Sparkle.framework/Versions/B/Modules/module.modulemap similarity index 100% rename from Sparkle.framework/Versions/A/Modules/module.modulemap rename to Sparkle.framework/Versions/B/Modules/module.modulemap diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SPUAppcastItemStateResolver.h b/Sparkle.framework/Versions/B/PrivateHeaders/SPUAppcastItemStateResolver.h new file mode 100644 index 0000000..825a5e2 --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SPUAppcastItemStateResolver.h @@ -0,0 +1,30 @@ +// +// SPUAppcastItemStateResolver.h +// Sparkle +// +// Created by Mayur Pawashe on 5/31/21. +// Copyright © 2021 Sparkle Project. All rights reserved. +// + +#import <Foundation/Foundation.h> + +#import <Sparkle/SUExport.h> + +NS_ASSUME_NONNULL_BEGIN + +@class SUStandardVersionComparator, SPUAppcastItemState; +@protocol SUVersionComparison; + +/** + Private exposed class used to resolve Appcast Item properties that rely on external factors such as a host. + This resolver is used for constructing appcast items. + */ +SU_EXPORT @interface SPUAppcastItemStateResolver : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithHostVersion:(NSString *)hostVersion applicationVersionComparator:(id<SUVersionComparison>)applicationVersionComparator standardVersionComparator:(SUStandardVersionComparator *)standardVersionComparator; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SPUGentleUserDriverReminders.h b/Sparkle.framework/Versions/B/PrivateHeaders/SPUGentleUserDriverReminders.h new file mode 100644 index 0000000..a509e0e --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SPUGentleUserDriverReminders.h @@ -0,0 +1,22 @@ +// +// SPUGentleUserDriverReminders.h +// Sparkle +// +// Copyright © 2022 Sparkle Project. All rights reserved. +// + +#ifndef SPUGentleUserDriverReminders_h +#define SPUGentleUserDriverReminders_h + +/** + A private protocol for user drivers implementing gentle scheduled reminders + */ +@protocol SPUGentleUserDriverReminders + +- (void)logGentleScheduledUpdateReminderWarningIfNeeded; + +- (void)resetTimeSinceOpportuneUpdateNotice; + +@end + +#endif /* SPUGentleUserDriverReminders_h */ diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SPUInstallationType.h b/Sparkle.framework/Versions/B/PrivateHeaders/SPUInstallationType.h new file mode 100644 index 0000000..2c6e556 --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SPUInstallationType.h @@ -0,0 +1,19 @@ +// +// SPUInstallationType.h +// Sparkle +// +// Created by Mayur Pawashe on 7/24/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#ifndef SPUInstallationType_h +#define SPUInstallationType_h + +#define SPUInstallationTypeApplication @"application" // the default installation type for ordinary application updates +#define SPUInstallationTypeGuidedPackage @"package" // the preferred installation type for package installations +#define SPUInstallationTypeInteractivePackage @"interactive-package" // the deprecated installation type; use guided package instead + +#define SPUInstallationTypesArray (@[SPUInstallationTypeApplication, SPUInstallationTypeGuidedPackage, SPUInstallationTypeInteractivePackage]) +#define SPUValidInstallationType(x) ((x != nil) && [SPUInstallationTypesArray containsObject:(NSString * _Nonnull)x]) + +#endif /* SPUInstallationType_h */ diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SPUStandardUserDriver+Private.h b/Sparkle.framework/Versions/B/PrivateHeaders/SPUStandardUserDriver+Private.h new file mode 100644 index 0000000..877cadf --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SPUStandardUserDriver+Private.h @@ -0,0 +1,31 @@ +// +// SPUStandardUserDriver+Private.h +// Sparkle +// +// Copyright © 2022 Sparkle Project. All rights reserved. +// + +#ifndef SPUStandardUserDriver_Private_h +#define SPUStandardUserDriver_Private_h + +#import <Sparkle/SPUStandardUserDriver.h> +#import <Sparkle/SUExport.h> + +@class NSWindowController; + +NS_ASSUME_NONNULL_BEGIN + +SU_EXPORT @interface SPUStandardUserDriver (Private) + +/** + Private API for accessing the active update alert's window controller. + This is the window controller that shows the update's release notes and install choices. + This can be accessed in -[SPUStandardUserDriverDelegate standardUserDriverWillHandleShowingUpdate:forUpdate:state:] + */ +@property (nonatomic, readonly, nullable) NSWindowController *activeUpdateAlert; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* SPUStandardUserDriver_Private_h */ diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SPUUserAgent+Private.h b/Sparkle.framework/Versions/B/PrivateHeaders/SPUUserAgent+Private.h new file mode 100644 index 0000000..0b3c3c7 --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SPUUserAgent+Private.h @@ -0,0 +1,20 @@ +// +// SPUUserAgent+Private.h +// Sparkle +// +// Created by Mayur Pawashe on 11/12/21. +// Copyright © 2021 Sparkle Project. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <Sparkle/SUExport.h> + +NS_ASSUME_NONNULL_BEGIN + +@class SUHost; + +SU_EXPORT NSString *SPUMakeUserAgentWithHost(SUHost *responsibleHost, NSString * _Nullable displayNameSuffix); + +SU_EXPORT NSString *SPUMakeUserAgentWithBundle(NSBundle *responsibleBundle, NSString * _Nullable displayNameSuffix); + +NS_ASSUME_NONNULL_END diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SUAppcastItem+Private.h b/Sparkle.framework/Versions/B/PrivateHeaders/SUAppcastItem+Private.h new file mode 100644 index 0000000..7527a8f --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SUAppcastItem+Private.h @@ -0,0 +1,39 @@ +// +// SUAppcastItem+Private.h +// Sparkle +// +// Created by Mayur Pawashe on 4/30/21. +// Copyright © 2021 Sparkle Project. All rights reserved. +// + +#ifndef SUAppcastItem_Private_h +#define SUAppcastItem_Private_h + +#import <Foundation/Foundation.h> + +NS_ASSUME_NONNULL_BEGIN + +// Available in SPUAppcastItemStateResolver.h (a private exposed header) +@class SPUAppcastItemStateResolver; +@class SUSignatures; + +@interface SUAppcastItem (Private) <NSSecureCoding> + +/** + Initializes with data from a dictionary provided by the RSS class and state resolver + + This initializer method is intended to be marked "private" and discouraged from public usage. + This method is available however. Talk to us to describe your use case and if you need to construct appcast items yourself. + */ +- (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL stateResolver:(SPUAppcastItemStateResolver *)stateResolver failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error; + +/** + The DSA and EdDSA signatures along with their statuses. + */ +@property (readonly, nullable) SUSignatures *signatures; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* SUAppcastItem_Private_h */ diff --git a/Sparkle.framework/Versions/B/PrivateHeaders/SUInstallerLauncher+Private.h b/Sparkle.framework/Versions/B/PrivateHeaders/SUInstallerLauncher+Private.h new file mode 100644 index 0000000..f8e0410 --- /dev/null +++ b/Sparkle.framework/Versions/B/PrivateHeaders/SUInstallerLauncher+Private.h @@ -0,0 +1,29 @@ +// +// SUInstallerLauncher+Private.h +// SUInstallerLauncher+Private +// +// Created by Mayur Pawashe on 8/21/21. +// Copyright © 2021 Sparkle Project. All rights reserved. +// + +#ifndef SUInstallerLauncher_Private_h +#define SUInstallerLauncher_Private_h + +#import <Sparkle/SUExport.h> + +// Chances are clients will need this too +#import <Sparkle/SPUInstallationType.h> + +@class NSString; + +/** + Private API for determining if the system needs authorization access to update a bundle path + + This API is not supported when used directly from a Sandboxed applications and will always return @c YES in that case. + + @param bundlePath The bundle path to test if authorization is needed when performing an update that replaces this bundle. + @return @c YES if Sparkle thinks authorization is needed to update the @c bundlePath, otherwise @c NO. + */ +SU_EXPORT BOOL SPUSystemNeedsAuthorizationAccessForBundlePath(NSString *bundlePath); + +#endif /* SUInstallerLauncher_Private_h */ diff --git a/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdateAlert.nib b/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdateAlert.nib new file mode 100644 index 0000000..b06f35e Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdateAlert.nib differ diff --git a/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib b/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib new file mode 100644 index 0000000..8774156 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib differ diff --git a/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib b/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib new file mode 100644 index 0000000..a95f6a7 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib differ diff --git a/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings new file mode 100644 index 0000000..3901514 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/Info.plist b/Sparkle.framework/Versions/B/Resources/Info.plist similarity index 75% rename from Sparkle.framework/Versions/A/Resources/Info.plist rename to Sparkle.framework/Versions/B/Resources/Info.plist index 64d696e..5c521c2 100644 --- a/Sparkle.framework/Versions/A/Resources/Info.plist +++ b/Sparkle.framework/Versions/B/Resources/Info.plist @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>BuildMachineOSBuild</key> - <string>15E49a</string> + <string>21G115</string> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleExecutable</key> @@ -17,7 +17,7 @@ <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleShortVersionString</key> - <string>1.14.0</string> + <string>2.3.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleSupportedPlatforms</key> @@ -25,20 +25,24 @@ <string>MacOSX</string> </array> <key>CFBundleVersion</key> - <string>1.14.0</string> + <string>2021</string> <key>DTCompiler</key> <string>com.apple.compilers.llvm.clang.1_0</string> <key>DTPlatformBuild</key> - <string>7C1002</string> + <string>13F100</string> + <key>DTPlatformName</key> + <string>macosx</string> <key>DTPlatformVersion</key> - <string>GM</string> + <string>12.3</string> <key>DTSDKBuild</key> - <string>15C43</string> + <string>21E226</string> <key>DTSDKName</key> - <string>macosx10.11</string> + <string>macosx12.3</string> <key>DTXcode</key> - <string>0721</string> + <string>1341</string> <key>DTXcodeBuild</key> - <string>7C1002</string> + <string>13F100</string> + <key>LSMinimumSystemVersion</key> + <string>10.13</string> </dict> </plist> diff --git a/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css b/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css new file mode 100644 index 0000000..bcd84a2 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css @@ -0,0 +1,13 @@ +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + color: white; + background: transparent; + } + :link { + color: #419CFF; + } + :link:active { + color: #FF1919; + } +} diff --git a/Sparkle.framework/Versions/B/Resources/SUStatus.nib b/Sparkle.framework/Versions/B/Resources/SUStatus.nib new file mode 100644 index 0000000..6d471ce Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/SUStatus.nib differ diff --git a/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..55b0230 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "محدث البرنامج"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "معلومات عن الإصدار:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "تذكيري لاحقًا"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "تخطي هذا الإصدار"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "تثبيت التحديث"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "تنزيل التحديثات وتثبيتها تلقائيًا في المستقبل"; diff --git a/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..a75b589 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "عدم التحقق"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "هل تريد أن يتم التحقق من وجود تحديثات تلقائيًا؟"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "تضمين تقرير عن النظام دون ذكر معلومات عن المستخدم"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "التحقق تلقائيًا"; diff --git a/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings new file mode 100644 index 0000000..7ba248a Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/ca.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/ca.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..284cf6d --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ca.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Actualització del programari"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Notes d'aquesta versió:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Recorda-m'ho més tard"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Omet aquesta versió"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instal·la l'actualització"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Descarrega i instal·la les actualitzacions automàticament en el futur"; diff --git a/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings new file mode 100644 index 0000000..d6bae32 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..ff7d56f --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Aktualizace aplikace"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Poznámky k vydání:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Připomenout později"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Přeskočit tuto verzi"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instalovat aktualizaci"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "V budoucnu stahovat a instalovat aktualizace automaticky"; diff --git a/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..72489c9 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Informace z anonymního systémového profilu pomáhají vývojářům lépe plánovat budoucí vývoj aplikace.\nBudete-li mít nějaký dotaz, obraťte se na nás.\n\nToto jsou informace, které budou odeslány:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Nevyhledávat"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Vyhledávat aktualizace automaticky?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Odeslat anonymní systémový profil"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Automaticky vyhledávat"; diff --git a/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings new file mode 100644 index 0000000..aae40c5 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..271ae30 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Software Update"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Om denne udgivelse:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Påmind mig senere"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Spring over"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installer"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Hent og installer opdateringer automatisk i fremtiden"; diff --git a/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..d31f377 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Søg ikke"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Søg efter opdateringer automatisk?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Vedhæft anonym systemprofil"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Søg automatisk"; diff --git a/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings new file mode 100644 index 0000000..2c717b2 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..93e067a --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Softwareupdate"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Versionshinweise:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Später erinnern"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Diese Version überspringen"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installieren"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Updates in Zukunft automatisch laden und installieren"; diff --git a/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..b4e78e1 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Das anonymisierte Systemprofil unterstützt uns bei der zukünftigen Entwicklung. Bitte kontaktiere uns, wenn du Fragen hierzu hast.\n\nDiese Informationen würden an uns gesendet werden:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Nicht suchen"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Automatisch nach Updates suchen?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Anonymisiertes Systemprofil übertragen"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Automatisch suchen"; diff --git a/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings new file mode 100644 index 0000000..04b27fd Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..fc8679d --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Ενημέρωση προγράμματος"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Σημειώσεις Έκδοσης:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Υπενθύμιση Αργότερα"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Παράλειψη Έκδοσης"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Εγκατάσταση Ενημέρωσης"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Αυτόματη λήψη και εγκατάσταση ενημερώσεων στο μέλλον"; diff --git a/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..3fa256d --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Οι ανώνυμες πληροφορίες του προφίλ του συστήματός σας, μας βοηθούν στο σχεδιασμό της μελλοντικής ανάπτυξης του προγράμματος. Παρακαλώ επικοινωνήστε μαζί μας άν έχετε ερωτήσεις.\n\nΑυτές είναι οι πληροφορίες που θα σταλούν σε εμάς:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Κανένας έλεγχος"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Αυτόματος έλεγχος για ενημερώσεις;"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Συμπερίληψη του ανώνυμου προφίλ του συστήματός σας"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Αυτόματος Ελεγχος"; diff --git a/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings new file mode 100644 index 0000000..f1c015e Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..45a4cfc --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdateAlert.strings @@ -0,0 +1,18 @@ + +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Software Update"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Release Notes:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Remind Me Later"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Skip This Version"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Install Update"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Automatically download and install updates in the future"; diff --git a/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..e9c01f3 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,24 @@ + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "176"; */ +"OhZ-1K-DmA.title" = "Check Automatically"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "177"; */ +"cCJ-V0-aTi.title" = "Don’t Check"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "178"; */ +"gmh-T4-BO0.title" = "Check for updates automatically?"; + +/* Class = "NSTextFieldCell"; title = "DO NOT LOCALIZE"; ObjectID = "179"; */ +"179.title" = "DO NOT LOCALIZE"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "180"; */ +"gz7-LM-gNf.title" = "Include anonymous system profile"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; diff --git a/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..ab59ec2 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Actualización de software"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Notas de la versión:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Recordármelo"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "No instalar esta versión"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instalar actualización"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Descargar e instalar actualizaciones automáticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..a0ae2e0 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "La información de perfil de sistema anónimo se usa para ayudarnos a planear el trabajo de desarrollo futuro. Por favor, póngase en contacto con nosotros si tiene preguntas sobre esto.\n\nEsta es la información que nos enviaría:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "No comprobar"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "¿Comprobar si hay actualizaciones automáticamente?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Incluir perfil de sistema anónimo"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Comprobar automáticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings new file mode 100644 index 0000000..679caf3 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings new file mode 100644 index 0000000..0323587 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..dca6e2e --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Ohjelmiston pävitys"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Tietoa päivityksestä:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Muistuta myöhemmin"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Ohita tämä versio"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Asenna päivitys"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Hae ja asenna päivitykset jatkossa automaattisesti"; diff --git a/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..0421274 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Älä tarkista"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Tarkista päivityksiä käynnistyksen yhteydessä?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Sisällytä nimetön järjestelmäprofiili"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Tarkista automaattisesti"; diff --git a/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings new file mode 100644 index 0000000..a8ba03d Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..fd8042e --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Mise à jour logiciel"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Notes de version :"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Pas maintenant"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Ignorer cette version"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installer"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Télécharger et installer automatiquement les mises à jour"; diff --git a/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..463337c --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Les informations anonymes de profil système nous aident à planifier les futurs développements. Contactez-nous pour toute question à ce sujet.\n\nCi-dessous figurent les informations qui seront transmises :"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Ne pas vérifier"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Rechercher automatiquement les mises à jour ?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Avec transmission anonyme de mon profil système"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Vérifier automatiquement"; diff --git a/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings new file mode 100644 index 0000000..042724d Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/he.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/he.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..dc8fa21 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/he.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "עדכון תכנה"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "פרטי גרסה:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "הזכר לי מאוחר יותר"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "דלג על גרסה זו"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "התקן עדכון"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "הורד והתקן עדכונים אוטומטית גם בעתיד"; diff --git a/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings new file mode 100644 index 0000000..bef3475 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..60525af --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Aktualiziranje softvera"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Napomene uz izdanje:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Podsjeti me kasnije"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Zanemari ovu verziju"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instaliraj nadogradnju"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Ubuduće preuzmi i instaliraj nadogradnje automatski"; diff --git a/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..8bff38e --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonimizirani podaci profila susatava pomažu nam planirati budući razvoj. Kontaktiraj nas, ako imaš pitanja o tome.\n\nŠalju se sljedeći podaci:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Nemoj provjeravati"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Automatski provjeriti nadogradnje?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Uključi anonimizirane podatke o profilu sustava"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Provjeri automatski"; diff --git a/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings new file mode 100644 index 0000000..b9d3a64 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..841a542 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Szoftverfrissítés"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Változások az előző verzióhoz képest:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Emlékeztessen később"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Verzió kihagyása"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Telepítés"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "A jövőben automatikusan töltse le és telepítse a frissítéseket"; diff --git a/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..d1a121f --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Manuális keresés"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Keresse automatikusan a frissítéseket?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Anonim rendszerinformáció küldése"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Automatikus keresés"; diff --git a/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings new file mode 100644 index 0000000..6b397d4 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..314a8ca --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Hugbúnaðaruppfærsla"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Útgáfupunktar:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Áminntu mig síðar"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Sleppa þessari útgáfu"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Innsetja"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Sækja og innsetja uppfærslur sjálfkrafa framvegis"; diff --git a/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..f21466e --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Upplýsingar úr nafnlausum kerfisskýrslum eru notaðar til að hjálpa okkur við framtíðarþróun hugbúnaðarins. Ekki hika við að hafa samband ef spurningar vakna um þetta.\n\nÞetta eru upplýsingarnar sem yrðu sendar:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Ekki kanna"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Athuga sjálfkrafa með uppfærslur?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Innifela nafnlausa kerfisskýrslu"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Kanna sjálfkrafa"; diff --git a/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings new file mode 100644 index 0000000..070979c Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..cc0d7c3 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Aggiornamento Software"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Note di rilascio:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Ricordamelo più tardi"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Ignora questa versione"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installa"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "In futuro scarica e installa automaticamente gli aggiornamenti"; diff --git a/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..4ddfda7 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Le informazioni del profilo di sistema anomino sono utilizzate per aiutarci in futuri lavori di sviluppo. Contattaci se hai dei quesiti sull’argomento.\n\nQueste sono le informazioni che verrebbero inviate:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Non controllare"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Controllo automaticamente gli aggiornamenti?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Include profilo di sistema anonimo"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Controlla Automaticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings new file mode 100644 index 0000000..cc0e4ef Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..6ac6410 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "ソフトウェア・アップデート"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "リリースノート:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "後で通知"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "このバージョンはスキップ"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "アップデートをインストール"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "今後はアップデートのダウンロードとインストールを自動で行う"; diff --git a/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..cff48a2 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "匿名のシステムプロファイル情報は、今後の開発の参考にさせていただきます。この件に関してご質問があればご連絡下さい。\n\n以下の情報が送信されます:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "確認しない"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "アップデートを自動で確認しますか?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "匿名のシステム情報を含める"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "自動で確認"; diff --git a/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings new file mode 100644 index 0000000..3a06f46 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..ee92bf2 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Software Update"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "배포 정보:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "나중에"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "이 버전 건너뛰기"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "업데이트 설치"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "나중에 업데이트 자동으로 다운로드 및 설치"; diff --git a/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..472ef43 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "익명으로 보내지는 시스템 정보로 차후 프로그램 개발에 도움이 될 수 있습니다. 질문이 있으시면 연락 주십시오.\n\n아래 정보가 전송될 것입니다."; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "취소"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "자동으로 업데이트 확인할까요?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "익명 시스템 정보 포함"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "자동으로 확인"; diff --git a/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings new file mode 100644 index 0000000..7cd7462 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..bd58fbb --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdateAlert.strings @@ -0,0 +1,18 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Programoppdatering"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Om oppdateringen:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Utsett"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Hopp over"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installer"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Last ned og installer automatisk i fremtiden"; + diff --git a/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..1b2d8bd --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,21 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Den anonyme systemprofilen hjelper oss med å planlegge fremtidig utviklingsarbeid. Ta gjerne kontakt med oss hvis du har spørsmål om dette.
\nFølgende innhold vil bli sendt:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Ikke søk"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Søk etter oppdateringer automatisk?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Inkluder anonym systemprofil"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Søk automatisk"; + diff --git a/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings new file mode 100644 index 0000000..c36e8d9 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..3edac36 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Software-update"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Versiegegevens:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Herinner mij later"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Sla deze versie over"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installeer update"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Download en installeer updates voortaan automatisch"; diff --git a/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..af9d1b2 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,14 @@ +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Aan de hand van anonieme informatie over het systeemprofiel kunnen wij toekomstige ontwikkelingswerkzaamheden beter plannen. Neem contact met ons op als je hierover vragen hebt.\n\nDit is de informatie die wordt verzonden:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Zoek niet"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Automatisch zoeken naar updates?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Voeg anoniem systeemprofiel bij"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Zoek automatisch"; diff --git a/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings new file mode 100644 index 0000000..5ab394b Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..4092fd0 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Uaktualnienie oprogramowania"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Szczegóły wydania:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Przypomnij później"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Pomiń tę wersję"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Zainstaluj teraz"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Automatycznie pobierz i zainstaluj przyszłe uaktualnienia"; diff --git a/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..029b447 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Nie sprawdzaj"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Sprawdzać automatycznie uaktualnienia?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Załącz anonimowe informacje o systemie"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Sprawdzaj automatycznie"; diff --git a/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings new file mode 100644 index 0000000..38d03de Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..65aab08 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Atualização de Software"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Notas do Lançamento:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Mais Tarde"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Ignorar Esta Versão"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instalar Atualização"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Baixar e instalar atualizações futuras automaticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..028f40e --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,23 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "As informações anônimas do sistema são usadas para nos ajudar a planejar o desenvolvimento futuro do aplicativo. Contate-nos caso tenha dúvidas sobre este procedimento.\n\nAs seguintes informações seriam enviadas:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Não Buscar"; + +/* Class = "NSTextFieldCell"; title = "DO NOT LOCALIZE"; ObjectID = "cfa-j0-Ya4"; */ +"cfa-j0-Ya4.title" = ""; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Buscar atualizações automaticamente?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Incluir perfil anônimo do sistema"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Buscar Automaticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings new file mode 100644 index 0000000..fae0456 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..ae805c4 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Actualização de Software"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Notas de lançamento:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Lembrar mais tarde"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Saltar esta versão"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instalar actualização"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "No futuro, transferir e instalar actualizações automaticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..ef9ae46 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "A informação anónima do perfil de sistema é usada para no futuro nos ajudar a planear o trabalho de desenvolvimento. Por favor contacte-nos se tiver alguma questão acerca deste assunto.\n\nEsta é a informação que seria enviada:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Não procurar"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Procurar actualizações automaticamente?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Incluir perfil de sistema anónimo"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Procurar automaticamente"; diff --git a/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings new file mode 100644 index 0000000..e7ed98d Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..37e9bc7 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Actualizarea aplicației"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Note de ediție:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Amintește-mi mai târziu"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Sari peste…"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Instalează actualizarea"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "În viitor descarcă și instalează în automat actualizările"; diff --git a/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..8746a83 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Nu verifica"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Verifică pentru actualizări în mod automat?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Include profil anomin de sistem"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Verifică în mod automat"; diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings similarity index 53% rename from Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings rename to Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings index 28a407b..1ee78cb 100644 Binary files a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings and b/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..137fd57 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Обновление программного обеспечения"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Заметки о выпуске:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Напоминать позже"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Пропустить эту версию"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Установить обновление"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Автоматически загружать и устанавливать обновления в будущем"; diff --git a/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..79ab608 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Использование анонимного профиля системы помогает нам в планировании будущей работы по разработке. Если у вас есть какие-либо вопросы по этой теме, обращайтесь к нам.\n\nЭто информация, предназначенная для отправления:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Не проверять"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Выполнять автоматическую проверку наличия обновлений?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Включить анонимный профиль системы"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Проверять автоматически"; diff --git a/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings new file mode 100644 index 0000000..777f637 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..266f0fb --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Aktualizácia softvéru"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Poznámky k vydaniu:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Pripomenúť neskôr"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Vynechať túto verziu"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Nainštalovať"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "V budúcnosti aktualizácie preberať a inštalovať automaticky"; diff --git a/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..25c836d --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonymný profil systému nám umožní zlepšiť plánovanie budúceho vývoja aplikácie. Ak máte ohľadom tohto akékoľvek otázky, neváhajte a kontaktujte nás.\n\nOdosielané budú nasledujúce informácie:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Nekontrolovať"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Kontrolovať aktualizácie automaticky?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Zahrnúť anonymný profil systému"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Kontrolovať automaticky"; diff --git a/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings new file mode 100644 index 0000000..157f6b9 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..d106021 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Posodabljanje programske opreme"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Opombe ob izdaji:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Spomni me kasneje"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Preskoči to verzijo"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Namesti posodobitev"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "V prihodnje samodejno nameščaj posodobitve"; diff --git a/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..514d885 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonimni profil sistema se uporablja za načrtovanje nadaljnega razvoja programa. V primeru vprašanj nas lahko kontaktirate.\n\nPošljejo se sledeče informacije:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Ne preverjaj"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Naj občasno preverjam, če so na voljo posodobitve?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Vključi anonimni profil sistema"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Samodejno preverjaj"; diff --git a/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings new file mode 100644 index 0000000..ee72d78 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..382b634 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Programuppdatering"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Versionsinformation:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Påminn mig senare"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Hoppa över denna version"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Installera uppdatering"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Hämta och installera nya uppdateringar automatiskt i framtiden."; diff --git a/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..b7ff87c --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Textcell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Textcell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Anonym systemprofilinformation används för att hjälpa oss att planera framtida utvecklingsarbete. Vänligen kontakta oss ifall du har några frågot om detta.\n\nDetta är informationen som skulle sändas:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Kontrollera inte"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Leta efter uppdateringar automatiskt?\n"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Inkludera anonym systemprofil"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Kontrollera automatiskt"; diff --git a/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings new file mode 100644 index 0000000..c17d538 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..c57e3d3 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "อัพเดทซอฟต์แวร์"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Release Notes:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "เตือนในภายหลัง"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "ข้ามเวอร์ชั่นนี้"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "ติดตั้งอัพเดท"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "ดาวน์โหลดและติดตั้งอัพเดทโดยอัตโนมัติในอนาคต"; diff --git a/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..d87f2cf --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "ข้อมูลระบบแบบนิรนามช่วยในการวางแผนพัฒนาแอปพลิเคชันของเราในอนาคต กรุณาติดต่อเราถ้าคุณมีข้อสงสัยในเรื่องนี้\n\nนี่คือข้อมูลที่จะถูกส่งไป:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "ไม่ต้องตรวจสอบ"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "ตรวจสอบอัพเดทอัตโนมัติ?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "ส่งข้อมูลระบบแบบนิรนาม"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "ตรวจสอบโดยอัตโนมัติ"; diff --git a/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings new file mode 100644 index 0000000..1491bf0 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..7f67ed6 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Software-Aktualisierung"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Sürüm Hakkında:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Sonra Hatırlat"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Bu Sürümü Geç"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Kur"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Bundan sonra güncellemeleri kendiliğinden indir ve kur"; diff --git a/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..9378b6c --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Gönderdiğiniz anonim sistem bilgileri bu yazılımın geliştirilmesi için kullanılacaktır. Konu ile ilgili ayrıntılı bilgi için lütfen bizimle bağlantıya geçiniz. Göndereceğiniz Bilgiler:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Arama"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Güncellemeler otomatik olarak aransın mı?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Sistem bilgilerini kimlik gizlenmiş olarak gönder"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Otomatik Olarak Ara"; diff --git a/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings new file mode 100644 index 0000000..324dba3 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..ece6670 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "Оновлення програмного забезпечення"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "Примітки про нову версію:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "Нагадати пізніше"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "Пропустити цю версію"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "Встановити оновлення"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "Автоматично завантажувати та встановлювати оновлення у майбутньому"; diff --git a/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..36d56b0 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "Використання анонімного профілю системи допомагає нам у планування майбутньої розробки. Якщо у вас виникли питання щодо цього, звертайтесь до нас.\n\nІнформація, що буде надіслано:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "Не перервіряти"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "Виконувати автоматичну перевірку оновлень?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "Автоматично надсилати профіль системи"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "Перевіряти автоматично"; diff --git a/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings new file mode 100644 index 0000000..42370e9 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..5772fc6 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "软件更新"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "更新信息:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "稍后提示我"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "跳过这个版本"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "安装更新"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "以后自动下载并安装更新"; diff --git a/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..51cd7fe --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "无记名系统概况信息被用于帮助我们安排将来的开发工作。如果对此存在疑问请联系我们。\n\n这是将要被发送的信息::"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "不核查"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "自动核查更新?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "包括无记名系统概况"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "自动核查"; diff --git a/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings new file mode 100644 index 0000000..9942f1c Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdateAlert.strings b/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdateAlert.strings new file mode 100644 index 0000000..d53374d --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdateAlert.strings @@ -0,0 +1,17 @@ +/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ +"5.title" = "軟體更新"; + +/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ +"170.title" = "更新事項:"; + +/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ +"171.title" = "暫緩提醒"; + +/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ +"172.title" = "跳過此版本"; + +/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ +"173.title" = "安裝更新項目"; + +/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ +"175.title" = "自動下載並安裝未來的更新項目"; diff --git a/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings b/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings new file mode 100644 index 0000000..6173332 --- /dev/null +++ b/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings @@ -0,0 +1,20 @@ +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ +"43.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ +"45.title" = "Text Cell"; + +/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ +"183.title" = "匿名系統描述資訊可用來協助我們計畫未來的開發工作。若您有任何相關問題,請與我們聯繫。\n\n以下是會傳送的資訊:"; + +/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ +"cCJ-V0-aTi.title" = "不要檢查"; + +/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ +"gmh-T4-BO0.title" = "自動檢查更新項目?"; + +/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ +"gz7-LM-gNf.title" = "包含匿名的系統描述資料"; + +/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ +"OhZ-1K-DmA.title" = "自動檢查"; diff --git a/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings new file mode 100644 index 0000000..e53d6d1 Binary files /dev/null and b/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Sparkle b/Sparkle.framework/Versions/B/Sparkle new file mode 100755 index 0000000..9547a65 Binary files /dev/null and b/Sparkle.framework/Versions/B/Sparkle differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist b/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist similarity index 65% rename from Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist rename to Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist index 5cb9c8d..334e0a6 100644 --- a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist +++ b/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist @@ -3,21 +3,21 @@ <plist version="1.0"> <dict> <key>BuildMachineOSBuild</key> - <string>15E49a</string> + <string>21G115</string> <key>CFBundleDevelopmentRegion</key> - <string>English</string> + <string>en</string> <key>CFBundleExecutable</key> - <string>Autoupdate</string> - <key>CFBundleIconFile</key> - <string>AppIcon</string> + <string>Updater</string> <key>CFBundleIdentifier</key> - <string>org.sparkle-project.Sparkle.Autoupdate</string> + <string>org.sparkle-project.Sparkle.Updater</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> + <key>CFBundleName</key> + <string>Updater</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>1.14.0</string> + <string>2.3.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleSupportedPlatforms</key> @@ -25,29 +25,29 @@ <string>MacOSX</string> </array> <key>CFBundleVersion</key> - <string>1.14.0</string> + <string>2021</string> <key>DTCompiler</key> <string>com.apple.compilers.llvm.clang.1_0</string> <key>DTPlatformBuild</key> - <string>7C1002</string> + <string>13F100</string> + <key>DTPlatformName</key> + <string>macosx</string> <key>DTPlatformVersion</key> - <string>GM</string> + <string>12.3</string> <key>DTSDKBuild</key> - <string>15C43</string> + <string>21E226</string> <key>DTSDKName</key> - <string>macosx10.11</string> + <string>macosx12.3</string> <key>DTXcode</key> - <string>0721</string> + <string>1341</string> <key>DTXcodeBuild</key> - <string>7C1002</string> - <key>LSBackgroundOnly</key> - <string>1</string> + <string>13F100</string> + <key>LSApplicationCategoryType</key> + <string>public.app-category.utilities</string> <key>LSMinimumSystemVersion</key> - <string>10.7</string> + <string>10.13</string> <key>LSUIElement</key> <string>1</string> - <key>NSMainNibFile</key> - <string>MainMenu</string> <key>NSPrincipalClass</key> <string>NSApplication</string> </dict> diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater b/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater new file mode 100755 index 0000000..410847d Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater differ diff --git a/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo b/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo similarity index 100% rename from Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo rename to Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings new file mode 100644 index 0000000..3901514 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib new file mode 100644 index 0000000..6d471ce Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ar.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ar.lproj/Sparkle.strings new file mode 100644 index 0000000..7ba248a Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ar.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings new file mode 100644 index 0000000..d6bae32 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings new file mode 100644 index 0000000..aae40c5 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/da.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/da.lproj/Sparkle.strings new file mode 100644 index 0000000..2c717b2 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/da.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/de.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/de.lproj/Sparkle.strings new file mode 100644 index 0000000..04b27fd Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/de.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/el.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/el.lproj/Sparkle.strings new file mode 100644 index 0000000..f1c015e Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/el.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/es.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/es.lproj/Sparkle.strings new file mode 100644 index 0000000..679caf3 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/es.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fa.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fa.lproj/Sparkle.strings new file mode 100644 index 0000000..0323587 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fa.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings new file mode 100644 index 0000000..a8ba03d Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings new file mode 100644 index 0000000..042724d Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/he.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/he.lproj/Sparkle.strings new file mode 100644 index 0000000..bef3475 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/he.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings new file mode 100644 index 0000000..b9d3a64 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hu.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hu.lproj/Sparkle.strings new file mode 100644 index 0000000..6b397d4 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hu.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/is.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/is.lproj/Sparkle.strings new file mode 100644 index 0000000..070979c Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/is.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/it.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/it.lproj/Sparkle.strings new file mode 100644 index 0000000..cc0e4ef Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/it.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings new file mode 100644 index 0000000..3a06f46 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings new file mode 100644 index 0000000..7cd7462 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings new file mode 100644 index 0000000..c36e8d9 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings new file mode 100644 index 0000000..5ab394b Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings new file mode 100644 index 0000000..38d03de Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-BR.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-BR.lproj/Sparkle.strings new file mode 100644 index 0000000..fae0456 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-BR.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-PT.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-PT.lproj/Sparkle.strings new file mode 100644 index 0000000..e7ed98d Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-PT.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings similarity index 53% rename from Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings rename to Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings index 28a407b..1ee78cb 100644 Binary files a/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings new file mode 100644 index 0000000..777f637 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings new file mode 100644 index 0000000..157f6b9 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings new file mode 100644 index 0000000..ee72d78 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings new file mode 100644 index 0000000..c17d538 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/th.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/th.lproj/Sparkle.strings new file mode 100644 index 0000000..1491bf0 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/th.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings new file mode 100644 index 0000000..324dba3 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings new file mode 100644 index 0000000..42370e9 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings new file mode 100644 index 0000000..9942f1c Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings new file mode 100644 index 0000000..e53d6d1 Binary files /dev/null and b/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources b/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..02e5857 --- /dev/null +++ b/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources @@ -0,0 +1,715 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Resources/Base.lproj/Sparkle.strings</key> + <data> + XSU5ujIHVj0VrcaL7/1PMjP8QWE= + </data> + <key>Resources/SUStatus.nib</key> + <data> + MMoEZd95HH2wagHtE7tdRXWDz2Y= + </data> + <key>Resources/ar.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5Ukin0TnIF0ot6Daz8OSgIoDZJ0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ca.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + SM9Ssbq+EA6SD88oCZx9K6nLvic= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + hIXy3nCBtLeY6/3v3pWwYRJl+sA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + CkbYzkpwfT37juYfJP25giiTUo4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + /1A+Sg5wG2SW+Q5Q7rGwtU2aVk0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + Hh2GQMfVkK/dapsekwiVZz9cakg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + fucEKrOlh81Wj9EqCtUl6sQVg1k= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fa.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + vI1JRqMnuuewEX52rjBZ/TDrrXk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + +T4u6wvinBvx2z6vcAQKz32lvvE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + fPB1Vk+1a7xRIMKxQ3/F1bxGirA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/he.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + bG2Mhx67XieRw+jRYm1/n2PIGnI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + S2g3qlSPK1msOuuvB2dU9UoInq4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5CCN2xKgiom6y3+mcWd48RVdX48= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + RO7D/40UgCd+DPSZg5LlrOBdmfY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + W/h9EbnuDfXU4nxRzIF7Dv8ckks= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + RYRC4Vmp6utNAtLodS/PTyi4yIM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + lmXDaCFjaOlD2OSN7WeCYPUkiAc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + n42iYGYF5rusi8bu9cZKBXVwwXE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + t++79qkzwHo15l2gbAGPNIoYsJc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + Z2RTzAW/+3ZV5g9/DyNv+YFZNQE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + HLX0cX6CzMOMpZ7eff4JZYu+KQY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + cyq/clJHyLGamebBp/NK6YzPUNM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + kYCbmI7ssPYVnQQ3uDHF6PgOBjw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 3yWhlgxQS7Hhh481yH9qttWea0U= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5I5OyTLppz6aT5r3kKOmRcrDfXg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5fscQshoMtSnO4kj3Ts2Nw4xqkc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + AlR6NnM+kipd4A8PFhs0S0Rccbk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + UrzLYtjSwKdvxlSQJa/xe5IqqVo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + fKCgCsGuwlJJnukTgKv+0tfNjSg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + kATRxVYhY1dX+dY1bQ+V+TvmXNk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + PFAuCvFxcO/y7l7c9FyaMKNhLfQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + G/kIaADnb5wlgQMaCX6Gfa48OY8= + </data> + <key>optional</key> + <true/> + </dict> + </dict> + <key>files2</key> + <dict> + <key>Resources/Base.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 7DQi4XIdmNDFEuet0a26l/2qsTHrLKlDT4/zp6XA97w= + </data> + </dict> + <key>Resources/SUStatus.nib</key> + <dict> + <key>hash2</key> + <data> + xaemKA5RnHBgTuwB81z6r5d+f2CaMcz74K9Tv+bY4BM= + </data> + </dict> + <key>Resources/ar.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + yx9tkKjj3aOHvgdYCWXM89uhlyVeNb4oqcAenJxibwI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ca.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + DQhUnYhSgufw5NRY162lt2GGM83U38tQvNF1qotGYzE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + yJXcgwDV0GC2yZWVdhf9UQirDu1yLWTaa+x0vVpYkfo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + qgYKiHiodd+q/4U1lIEIUSS9PX9ENx0isGUKLSWmKe4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + uxoRq90TmDirUKRbCW1lKy/k1tZvFz4EbxQPhVf+Mhs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + GvP3asj8JbFMZdNtcFo0MWdmrCB+z6k66kmleaGlmow= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + RYqWb4D0ylosWigPpdVjMlaCWiXNrRIvzIwwVbXpaSs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fa.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + hiHofXML8/Ej+t2dTRuvVL3vkS/6jW6b/wvx/3quM10= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + a70/+B90B44V8vfbEZUJjfFl7uva424DcaTZOvwCEs8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 47e3tLN5HipnOK5BV6nhmhttV0iZRHEYtGRTh56Pp6M= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/he.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + RYs+L0NAew70ya8KrCKYYJPkdzTVckZY7TLwVay0ubQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + xyEyZ8ezqdbPQQ/b6RSpnULrjnL08GWQ3wd+AasW2KQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 0UBqgjXjtRG51lEacNaLTmNvj5aFUeJ7oo1J4WYkrCw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + n1w40GWVeQM6/1d+krnNoL0XutbF3HNv2qjFaMErsuY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + TgEXGRRCYffwGHAa78wO2btMh/B5TluqOiVpvsy7yYY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 6b23nyneGkjP1x+wd00PTqF9PPujhu9g0TS4+3cBywo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + PIYd2jHiJYoXmHfGbXu4sWialdDeBEyHWgMzu8Yd2H8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + oVMa0iTjxWVrd4HFHRrUvKxqnk+YFHk2CxOu43+wO2Q= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 2tCuekmOs0JtuIM7hm/+jt5s4OJGocWANizpTH8a58k= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + /qcXx+RijYb31wahT1y3K+QX0NCxCnGFDX9dWzAc56o= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + cExBbBN/cbmRWOsrqKbEBHJOo7FtTr3ZavW9slfCsVc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + WGgYHgAMqsDwSkDIWMFg5XBJnvRCbvM59I1pqJgmhgM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + o6GEyuuMFsBOFOONmS2V2x+bv11kkMT3xHEoelaxJv8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + uqN6dwLmCFJJQmbURrhDJv9wDJSGWqRqyqgeKTNUHZ0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + iZvCvn22+4feRZso6kzggSUbr1p4Z5zyDU7qniyWqE8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + eq+yTsmwGRXUHYRVC4w06YmUPnsYuuc4OjUfo7feieE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + ZoKH8cwKHH2VaZEkGsmRKevFaLdLxlAICRnrceNdsuw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + HT9jsdOsSvc+Orcce27NpaRxKmDCzIwkq+/wUGI3JQM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 756/lMgBfXOE5IDG5Ei94/iIP40obn9ZEROHo01+SRY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 90+2Bfu2sI863NKWVBCjCtNi5gbrwPr82sRRfR6DOGM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 50IP7eJ9NgEFLDIKBJXnmRRzcGT7MmW08hHJr4alKLQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + Ugk6n5077n97AZzPovvogEt/4FCL8ByB9WvIx7QOsqI= + </data> + <key>optional</key> + <true/> + </dict> + </dict> + <key>rules</key> + <dict> + <key>^Resources/</key> + <true/> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist b/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist new file mode 100644 index 0000000..dfd2226 --- /dev/null +++ b/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>BuildMachineOSBuild</key> + <string>21G115</string> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>Downloader</string> + <key>CFBundleIdentifier</key> + <string>org.sparkle-project.Downloader</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>Downloader</string> + <key>CFBundlePackageType</key> + <string>XPC!</string> + <key>CFBundleShortVersionString</key> + <string>2.3.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleSupportedPlatforms</key> + <array> + <string>MacOSX</string> + </array> + <key>CFBundleVersion</key> + <string>2021</string> + <key>DTCompiler</key> + <string>com.apple.compilers.llvm.clang.1_0</string> + <key>DTPlatformBuild</key> + <string>13F100</string> + <key>DTPlatformName</key> + <string>macosx</string> + <key>DTPlatformVersion</key> + <string>12.3</string> + <key>DTSDKBuild</key> + <string>21E226</string> + <key>DTSDKName</key> + <string>macosx12.3</string> + <key>DTXcode</key> + <string>1341</string> + <key>DTXcodeBuild</key> + <string>13F100</string> + <key>LSMinimumSystemVersion</key> + <string>10.13</string> + <key>NSAppTransportSecurity</key> + <dict> + <key>NSAllowsArbitraryLoads</key> + <false/> + </dict> + <key>NSHumanReadableCopyright</key> + <string>Copyright © 2016 Sparkle Project. All rights reserved.</string> + <key>XPCService</key> + <dict> + <key>RunLoopType</key> + <string>NSRunLoop</string> + <key>ServiceType</key> + <string>Application</string> + </dict> +</dict> +</plist> diff --git a/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader b/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader new file mode 100755 index 0000000..cf04396 Binary files /dev/null and b/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader differ diff --git a/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources b/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..d5d0fd7 --- /dev/null +++ b/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict/> + <key>files2</key> + <dict/> + <key>rules</key> + <dict> + <key>^Resources/</key> + <true/> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist b/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist new file mode 100644 index 0000000..a8fc661 --- /dev/null +++ b/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>BuildMachineOSBuild</key> + <string>21G115</string> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>Installer</string> + <key>CFBundleIdentifier</key> + <string>org.sparkle-project.InstallerLauncher</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>Installer</string> + <key>CFBundlePackageType</key> + <string>XPC!</string> + <key>CFBundleShortVersionString</key> + <string>2.3.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleSupportedPlatforms</key> + <array> + <string>MacOSX</string> + </array> + <key>CFBundleVersion</key> + <string>2021</string> + <key>DTCompiler</key> + <string>com.apple.compilers.llvm.clang.1_0</string> + <key>DTPlatformBuild</key> + <string>13F100</string> + <key>DTPlatformName</key> + <string>macosx</string> + <key>DTPlatformVersion</key> + <string>12.3</string> + <key>DTSDKBuild</key> + <string>21E226</string> + <key>DTSDKName</key> + <string>macosx12.3</string> + <key>DTXcode</key> + <string>1341</string> + <key>DTXcodeBuild</key> + <string>13F100</string> + <key>LSMinimumSystemVersion</key> + <string>10.13</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright © 2016 Sparkle Project. All rights reserved.</string> + <key>XPCService</key> + <dict> + <key>JoinExistingSession</key> + <true/> + <key>ServiceType</key> + <string>Application</string> + </dict> +</dict> +</plist> diff --git a/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer b/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer new file mode 100755 index 0000000..31b45a6 Binary files /dev/null and b/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer differ diff --git a/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources b/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..d5d0fd7 --- /dev/null +++ b/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict/> + <key>files2</key> + <dict/> + <key>rules</key> + <dict> + <key>^Resources/</key> + <true/> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/Sparkle.framework/Versions/B/_CodeSignature/CodeResources b/Sparkle.framework/Versions/B/_CodeSignature/CodeResources new file mode 100644 index 0000000..3678103 --- /dev/null +++ b/Sparkle.framework/Versions/B/_CodeSignature/CodeResources @@ -0,0 +1,2132 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Resources/Base.lproj/SUUpdateAlert.nib</key> + <data> + lTs68EHEuBNChZ0HaUfc6a2qJus= + </data> + <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib</key> + <data> + rP8JtvaANGmgYMHZZYqXixYGclg= + </data> + <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib</key> + <data> + GspzsCPMWa1nV05fEmLIp6zro0I= + </data> + <key>Resources/Base.lproj/Sparkle.strings</key> + <data> + XSU5ujIHVj0VrcaL7/1PMjP8QWE= + </data> + <key>Resources/Info.plist</key> + <data> + 80XtoE5bjZ67gFtb+CfYJ9InCV4= + </data> + <key>Resources/ReleaseNotesColorStyle.css</key> + <data> + NjIvb1z7eJuLCKf9HS15O5heg50= + </data> + <key>Resources/SUStatus.nib</key> + <data> + MMoEZd95HH2wagHtE7tdRXWDz2Y= + </data> + <key>Resources/ar.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + qTOMJ1P/HhCcJQi4qSJV9l/b7q0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ar.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + chEDY/Vh2Vh+3oo4r0XF7krQ7c4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ar.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5Ukin0TnIF0ot6Daz8OSgIoDZJ0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ca.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + l9CaCmAXFcs+Z+8rRt7PX9onkf8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ca.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + SM9Ssbq+EA6SD88oCZx9K6nLvic= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + G9Wgf14zMhU2alRSZvqclMmlTCA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + Wh57u912k8KoumveRiDRmINy170= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + hIXy3nCBtLeY6/3v3pWwYRJl+sA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + NEt5JVKz+OoMSynKxJC18KXMGaA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + 0FkWF1ciwhmhK0CunKhpfDGMZnk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + CkbYzkpwfT37juYfJP25giiTUo4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + YLQxXHDo3e3Udzaj8LHDIjotWzE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + YfY6kTIXAj9sipxrJBGc7eKEOHY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + /1A+Sg5wG2SW+Q5Q7rGwtU2aVk0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + BS+NpAFPK7X/XzX+n99gJLhlNKU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + H7jL3j77eZ1egMEj+Nj6LXnSHHc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + Hh2GQMfVkK/dapsekwiVZz9cakg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/en.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + FSez7jCd0gDTFFGHiWL1QXY8OUU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/en.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + NzxxRDATRj41eOLu03OYPRaKa1k= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + Q36SuanjGk70efU6liei3uz+Uds= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + 3UK3h3oTqvHtCsr1LJvTMphItJU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + fucEKrOlh81Wj9EqCtUl6sQVg1k= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fa.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + vI1JRqMnuuewEX52rjBZ/TDrrXk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + My5YiAuNV+4oR1vPL1np+nMMMOI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + jtobMUE88GHRVFEG2A28n2ZyHeA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + +T4u6wvinBvx2z6vcAQKz32lvvE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + ffz6ccHMgxcBdH6by1YAYX1jpOQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + 1OWrzot/72Uej/eeBpnZknMeyYs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + fPB1Vk+1a7xRIMKxQ3/F1bxGirA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/he.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + nZXhvxaoacIflCBRrHxQ4NDkeKg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/he.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + bG2Mhx67XieRw+jRYm1/n2PIGnI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + b/ru54Y0QwvH9Kz9sfRPEoP5z5k= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + AAiVUXPoJYgeG5yLdH5XaFKLXcc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + S2g3qlSPK1msOuuvB2dU9UoInq4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + VD/QPXFfEHRW7ksDLYiiO1xl1LQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + PMarJZpNhDysjzZuBuyKv8KBTXQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5CCN2xKgiom6y3+mcWd48RVdX48= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + bQiB5tUCaD24QKubEYeBTXsAF1g= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + 8LPYds94rtFaRsGn0VDNXjxk6T0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + RO7D/40UgCd+DPSZg5LlrOBdmfY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + Yev0Ro2PsLfgCLoY7JNED63PnqM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + pVInM2cpSCq7zmpffx7ytVY6shU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + W/h9EbnuDfXU4nxRzIF7Dv8ckks= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + vl6gP7QCeuFYsNYdgVYYUcm0S/4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + vmA8scrUnfvMygrsa76QF557nDU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + RYRC4Vmp6utNAtLodS/PTyi4yIM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + xZjyKASZdwg70f4m29uGtJjFUgQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + d+ifBccX26E56rM7eOY72BKC5aY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + lmXDaCFjaOlD2OSN7WeCYPUkiAc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + fck+vL9Sgcx19X7HthrjizRGhu8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + xds/kfSxmdLFOMffSREoZC9yQFM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + n42iYGYF5rusi8bu9cZKBXVwwXE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + 5ZpTsHPgV4inhhYiISGjC03BMG4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + 1OahTTjmwc6xGVrnfJ4jQAlczNg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + t++79qkzwHo15l2gbAGPNIoYsJc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + HX2RXVrN+fpwO4I60/UDyNuGj5Y= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + UwRkyzAvs+mt3UXwTadtNXNrClE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + Z2RTzAW/+3ZV5g9/DyNv+YFZNQE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + YFXY6v+45ptf8TuBq2MsKKdhfQ8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + V0pfsICkDi0t8PHF4+dGW9p9c8s= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + HLX0cX6CzMOMpZ7eff4JZYu+KQY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + pWRHcAJRvjUt7BOLr/gd+IupcGA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + Bn6gYNr9F1tKpTd3trapLKKg1bw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + cyq/clJHyLGamebBp/NK6YzPUNM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + a/RNqEdkehva+SwGWz11MktFGWA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + Ssaz0Z2Bvovi+gexkx+C1o46MQM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + kYCbmI7ssPYVnQQ3uDHF6PgOBjw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + Lmn0e5MDPfan55gnani1dQbR10Q= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + p3zkSrOy/L6GcSH9jCj2Y/uDmLE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 3yWhlgxQS7Hhh481yH9qttWea0U= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + 8o3l6mjHafwy5sLMMO2rZIe7xiQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + s3Cllq+eYT+urMLfXvnwsMkboWQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5I5OyTLppz6aT5r3kKOmRcrDfXg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + Ny5EoZGpd5UK5c3eMIUKLR8x4/I= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + jUZer0aLckRt7dLPlNB5I7dAV+s= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + 5fscQshoMtSnO4kj3Ts2Nw4xqkc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + YWicg3ZZLCEoiJ9WOUUZ6WoTZJY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + K5RsmL5IV2dSBTaN6i/cLYRGJ3U= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + AlR6NnM+kipd4A8PFhs0S0Rccbk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + Cd6guArNrSoJO3e2ntd1Eys3bok= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + oy0B8M6u8AjjwSepIoL324YKsWk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + UrzLYtjSwKdvxlSQJa/xe5IqqVo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + wl9JoCOsqKgCSgMpFzhwObUUdh8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + pt6ThapYF8lNn28yLG7xW11onFg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + fKCgCsGuwlJJnukTgKv+0tfNjSg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + 6/WdcAg1mJs1/HT5krHhOxqyMWk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + HnKx/WpiOkat6j6EgFC4CCjcaVA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + kATRxVYhY1dX+dY1bQ+V+TvmXNk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + DjCjxSor6wnKAz8bFLcPCnW1Kw0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + DMhyvu1ywGudTYBfSXV5xoAHYhA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + PFAuCvFxcO/y7l7c9FyaMKNhLfQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash</key> + <data> + 167IbTfOhYu699bxXBhaGehjrco= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash</key> + <data> + YI4W+mUo+t840O84rzq2Ffdzm5o= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/Sparkle.strings</key> + <dict> + <key>hash</key> + <data> + G/kIaADnb5wlgQMaCX6Gfa48OY8= + </data> + <key>optional</key> + <true/> + </dict> + </dict> + <key>files2</key> + <dict> + <key>Autoupdate</key> + <dict> + <key>cdhash</key> + <data> + wjKYHW+iIqcNcuW+TXroPSuZJ4w= + </data> + <key>requirement</key> + <string>cdhash H"c232981d6fa222a70d72e5be4d7ae83d2b99278c" or cdhash H"48e6a2c240dff7117024bd5aa0391af280423730"</string> + </dict> + <key>Headers/SPUDownloadData.h</key> + <dict> + <key>hash2</key> + <data> + gsNEzLxb/w73quG4B8FDTObuCtckYFt7DKEIamBp2zU= + </data> + </dict> + <key>Headers/SPUStandardUpdaterController.h</key> + <dict> + <key>hash2</key> + <data> + GGqsgqKsWmdDkOTzCogsg35Z/rf6xGzHGoBrr4FFEm8= + </data> + </dict> + <key>Headers/SPUStandardUserDriver.h</key> + <dict> + <key>hash2</key> + <data> + nJAdi7PFjYFLmL6Nel5VtcsOGW0/wqrRCZ5RHMkNLkc= + </data> + </dict> + <key>Headers/SPUStandardUserDriverDelegate.h</key> + <dict> + <key>hash2</key> + <data> + BfZlHA+8hNs/Rq6hq3E97PRzyUgOTDowTBEJMvODnks= + </data> + </dict> + <key>Headers/SPUUpdateCheck.h</key> + <dict> + <key>hash2</key> + <data> + H30F2i5GYmOu/j4JEw5WsuZbiGJXnge5gpyb9e2SHAM= + </data> + </dict> + <key>Headers/SPUUpdatePermissionRequest.h</key> + <dict> + <key>hash2</key> + <data> + gc+ohsCgvzpHoQdUTcdiCT6weg66V3X//QkCUHTgUss= + </data> + </dict> + <key>Headers/SPUUpdater.h</key> + <dict> + <key>hash2</key> + <data> + 3KTijnCBw7D9doymRvwS2fxFP3KVVbvTQQOQarE8YbI= + </data> + </dict> + <key>Headers/SPUUpdaterDelegate.h</key> + <dict> + <key>hash2</key> + <data> + YSM2f1EtcHlJEo+gIatOa+N4Q5kJltHMFBvUeQfF95Q= + </data> + </dict> + <key>Headers/SPUUpdaterSettings.h</key> + <dict> + <key>hash2</key> + <data> + mxcAPbTuvCvtyq/+gQWGQgJGD8V0ByC4gCekPPa/Gjs= + </data> + </dict> + <key>Headers/SPUUserDriver.h</key> + <dict> + <key>hash2</key> + <data> + CsyeYijfrBcC4CgzS/DkmkanCboVqwq5zRHSgNRoEes= + </data> + </dict> + <key>Headers/SPUUserUpdateState.h</key> + <dict> + <key>hash2</key> + <data> + UvjyIpnBxaZdOPRKweTXGASm9uvNDyy78TgxmUplxys= + </data> + </dict> + <key>Headers/SUAppcast.h</key> + <dict> + <key>hash2</key> + <data> + e4/9nLfLxgixHXPPusCnelTLkGePoeUhmHu0Fu8fUbg= + </data> + </dict> + <key>Headers/SUAppcastItem.h</key> + <dict> + <key>hash2</key> + <data> + 2fyiwr4izcLQX6wA0wQQWHK4ncY3HuEBnCWfkxq3gQk= + </data> + </dict> + <key>Headers/SUErrors.h</key> + <dict> + <key>hash2</key> + <data> + fSRNpTjFOOtljWaiRSnjDxN54JS1BkiGpQneIip6sA8= + </data> + </dict> + <key>Headers/SUExport.h</key> + <dict> + <key>hash2</key> + <data> + XO8CQmbFThLbYg949NEGhg3g+iouIw3/3+BCCLtEdFE= + </data> + </dict> + <key>Headers/SUStandardVersionComparator.h</key> + <dict> + <key>hash2</key> + <data> + walPrXy07HqVX3JWuGPS02olWF59BjueVW1UoLwCv/g= + </data> + </dict> + <key>Headers/SUUpdatePermissionResponse.h</key> + <dict> + <key>hash2</key> + <data> + rXiDhQpt6r+9NOERnvdPFEr4rcUx9cMlnPLUamM1HLM= + </data> + </dict> + <key>Headers/SUUpdater.h</key> + <dict> + <key>hash2</key> + <data> + QenIKuHPtOmx2KG6r78Qr/2ULbw+HX/5JohFy5pdE/k= + </data> + </dict> + <key>Headers/SUUpdaterDelegate.h</key> + <dict> + <key>hash2</key> + <data> + hQVZhCFOVREGIafIiuf8GM49Ib4hEGaOsczKMhtggXI= + </data> + </dict> + <key>Headers/SUVersionComparisonProtocol.h</key> + <dict> + <key>hash2</key> + <data> + +ZNs7VCVpeYztnmVTNwQOWNDu6q8tv9CCNwqfhHiocI= + </data> + </dict> + <key>Headers/SUVersionDisplayProtocol.h</key> + <dict> + <key>hash2</key> + <data> + GOSHZhsDKrrKy8L3PkySoT90dC1Y/bYfITIsE6XyCGE= + </data> + </dict> + <key>Headers/Sparkle.h</key> + <dict> + <key>hash2</key> + <data> + OkQqMusip3u1oI5hrGeNr/32xpfTMCC4Kmg7r0Aijgw= + </data> + </dict> + <key>Modules/module.modulemap</key> + <dict> + <key>hash2</key> + <data> + 1TF+JZkzFr6n8oH4WItto+C5Vf3K12f0H9KjqD0A5QU= + </data> + </dict> + <key>PrivateHeaders/SPUAppcastItemStateResolver.h</key> + <dict> + <key>hash2</key> + <data> + uadB6ogg0HfIDtHd/Uc+JBuKuRjvAWUj8zWMqWhfJkg= + </data> + </dict> + <key>PrivateHeaders/SPUGentleUserDriverReminders.h</key> + <dict> + <key>hash2</key> + <data> + 9W2dJ38WQX151mpIS0r8/EfCqZV6jEh621xwna2JVAI= + </data> + </dict> + <key>PrivateHeaders/SPUInstallationType.h</key> + <dict> + <key>hash2</key> + <data> + hj9Br7Gf1Y8X1dqNvSUHMP70K+Q+S9xZAyPYMqKthFQ= + </data> + </dict> + <key>PrivateHeaders/SPUStandardUserDriver+Private.h</key> + <dict> + <key>hash2</key> + <data> + Y3+lm+u0IcRfOZ83REg4sB6t6Gt9zNvfoc36rDGqErw= + </data> + </dict> + <key>PrivateHeaders/SPUUserAgent+Private.h</key> + <dict> + <key>hash2</key> + <data> + 7oKxx32I6Y1OQh8mFj4fpLqcfat6wuEyXt7D4oZ4Vec= + </data> + </dict> + <key>PrivateHeaders/SUAppcastItem+Private.h</key> + <dict> + <key>hash2</key> + <data> + lD64eho6Q/ue23yAnMMiVK3Ma3wgI6wH1AzsCNek6Eg= + </data> + </dict> + <key>PrivateHeaders/SUInstallerLauncher+Private.h</key> + <dict> + <key>hash2</key> + <data> + 9igX5fnwg2PfKMmhEabcLvBsNhtWTQD1NsfXfCmQJp8= + </data> + </dict> + <key>Resources/Base.lproj/SUUpdateAlert.nib</key> + <dict> + <key>hash2</key> + <data> + 6GuEAoNdrDn6x7caEH4yQUf1Nl9w+NDANF0Ze40/Whw= + </data> + </dict> + <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib</key> + <dict> + <key>hash2</key> + <data> + pL+GKmbdcxP9FeynHxxQn4LiULgbgbtLjeBYQQpBPys= + </data> + </dict> + <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib</key> + <dict> + <key>hash2</key> + <data> + ngBPulWqKTt+DrJFiZicSyfUiNyQq34nvTHBaXDsqCA= + </data> + </dict> + <key>Resources/Base.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 7DQi4XIdmNDFEuet0a26l/2qsTHrLKlDT4/zp6XA97w= + </data> + </dict> + <key>Resources/Info.plist</key> + <dict> + <key>hash2</key> + <data> + 7zndEsjUTz7MY6n66ce3jzeRAKrWgV6ziaBczCMVWsM= + </data> + </dict> + <key>Resources/ReleaseNotesColorStyle.css</key> + <dict> + <key>hash2</key> + <data> + dr1pmXWP2OUdF+a0gttDT5tHaMArA3r2vS46AAzoy8E= + </data> + </dict> + <key>Resources/SUStatus.nib</key> + <dict> + <key>hash2</key> + <data> + xaemKA5RnHBgTuwB81z6r5d+f2CaMcz74K9Tv+bY4BM= + </data> + </dict> + <key>Resources/ar.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + 33nOBJb6OPaZt3PKT2iUJ3RfF/c59DAGmt9TCQVn74A= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ar.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + T7jmmlpE0sLNULv3afiWTodnuCFQgWJobzgcUjYOqLE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ar.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + yx9tkKjj3aOHvgdYCWXM89uhlyVeNb4oqcAenJxibwI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ca.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + 18qLsTRnJfi0wDf6A85XbiMXGORSmuo9Ul3IK4m5gq0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ca.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + DQhUnYhSgufw5NRY162lt2GGM83U38tQvNF1qotGYzE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + qSoDl0PIYv+OrSxtJfUYk9xeQihmzfaxAf+egKyw4y4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + CVcpEvgI5PQ1NFmIg3Z3rmqCpPDyVHRAtfmMWzW8xUE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/cs.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + yJXcgwDV0GC2yZWVdhf9UQirDu1yLWTaa+x0vVpYkfo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + aKNcPadrNnf7wuYmBAxoRzES9XhxXRHMrW/+9MtZBQs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + S375hGDUzaAJ0lfz41FIA5w56+Ws5PemLC/1KBRvhFc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/da.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + qgYKiHiodd+q/4U1lIEIUSS9PX9ENx0isGUKLSWmKe4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + A6JiLH5c4UX2iobAPXPHv7TLiBInrdHvtvqnnsTBxLI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + peRkazz0dsfYJDb3gPQ69Yyz9ZQ392Wpl9aKbPx52r4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/de.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + uxoRq90TmDirUKRbCW1lKy/k1tZvFz4EbxQPhVf+Mhs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + utAXO7a8Od4ICYV3R0WQBa8ncUQ30SfruZACTuvyDxk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + Ht2j5NyBIuVeI8cvtadQCMnAmv2pEX2/D2xssc0ks6E= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/el.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + GvP3asj8JbFMZdNtcFo0MWdmrCB+z6k66kmleaGlmow= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/en.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + EBVS8ZfEIJxGSghO17emwoHQo0LVWWzBJMFs8RwvKWg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/en.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + dtCxuHMLMU87LdmyOxxclj/bOGkoLz6sOZtmOQ4pjXg= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + 8KSmmlZHYEiMGUwXQRV+ZDxs07XmaeH4XIYI+di1ono= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + VK5FfxN+4wUvATUvyh9tQPkfMIY/r7/4mGBCqtWXYKI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/es.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + RYqWb4D0ylosWigPpdVjMlaCWiXNrRIvzIwwVbXpaSs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fa.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + hiHofXML8/Ej+t2dTRuvVL3vkS/6jW6b/wvx/3quM10= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + O+ja0EMKj5RxMmW3TRALc9XTpMJ7Y7dwXm706E33rUA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + vMvJgiGd2enOq2N6xcVfAIRCww8rgqjzeBKKQNINs7E= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fi.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + a70/+B90B44V8vfbEZUJjfFl7uva424DcaTZOvwCEs8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + Avyaxx14FRXq/CTIDvvF7uww42SRhYgNSc960h7MCfc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + yeck7eQs0FVk/UGgsjBUN59wJqOtzQenx9aM6Z13kKI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/fr.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 47e3tLN5HipnOK5BV6nhmhttV0iZRHEYtGRTh56Pp6M= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/he.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + SmfKGCNVK9M61LCNGqWk4/FZInlcKG2U9uD5ajPVobw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/he.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + RYs+L0NAew70ya8KrCKYYJPkdzTVckZY7TLwVay0ubQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + L7shRNgdZIfbt5y5pioLEIo+A9I7VtgIUFpzoCFkB1I= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + 997BslAfLieaezvoE7sMbvK8UeHB6cPZLCC7Mr36E/E= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hr.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + xyEyZ8ezqdbPQQ/b6RSpnULrjnL08GWQ3wd+AasW2KQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + 8LbsWTkMSczHFa4Rh9XZDRo0uCOyrV9VXUYEiEvnG7I= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + twHi8JXysxao7MlTGr178ZpB8yz1mXkij2V5n8NJWSQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/hu.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 0UBqgjXjtRG51lEacNaLTmNvj5aFUeJ7oo1J4WYkrCw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + 04Q9PpqtuYz6kfVhf6eI9XBxJn0LQB9Ck/ceBq1ztGU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + VTXP5MNyLB5x8ivTThsM02bVaHJiDEI3qu3+S1ZQJCw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/is.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + n1w40GWVeQM6/1d+krnNoL0XutbF3HNv2qjFaMErsuY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + 1zxkJlohqYtSJb0pj93fJXlPkedYm2IllbilGRDFo90= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + i2gXWKIvcXKpPvnw29Nyp4/CwAhAiZdn3LGMeDHwm0o= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/it.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + TgEXGRRCYffwGHAa78wO2btMh/B5TluqOiVpvsy7yYY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + vFagmq7Xdp80v7/plWY/m3PBNbxFsCeu0x8wDzZQRT4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + zYuOp6owctTI6zIFWac7yKqGLEglaXnTlNOnh/n7mow= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ja.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 6b23nyneGkjP1x+wd00PTqF9PPujhu9g0TS4+3cBywo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + shkQwYfF0rI+GzhWoVLqI7A1hKTnRr/o4wnUFb3Vhik= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + lqPQJYKtJlVGV2/UpetCpxTEpb4u5aUUU9CjmZO2OaI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ko.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + PIYd2jHiJYoXmHfGbXu4sWialdDeBEyHWgMzu8Yd2H8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + RQbKlvLGnVjjVMP5eHHNUCv5kLJl4EA6zNGdDKatbH0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + fUXd7difLY77ZuS/SSvoYhf8PkFK9QDsJSO8or9i0xs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nb.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + oVMa0iTjxWVrd4HFHRrUvKxqnk+YFHk2CxOu43+wO2Q= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + tp3fY8ogv+xcQOFkz5BkDNTZHIaRrhGgT9uKfCjDB70= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + AnDExckS661tfAK+Boog4+sXuC5AkiTU7aNG62I8Pmk= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/nl.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 2tCuekmOs0JtuIM7hm/+jt5s4OJGocWANizpTH8a58k= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + oB2rGM/SPnJLdvhUz2CJfm8TS6XhrhmHD2gFyrVSq8U= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + 6wJzRSZnXz5LE2nE67bE6tnreEDCcpWZAsZdNGUmkMY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pl.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + /qcXx+RijYb31wahT1y3K+QX0NCxCnGFDX9dWzAc56o= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + hDN04zbJliR6KRqEv4lEuAVNTjbkmyYUpKjCbWKaKdU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + ORwVRY5Z5fnlWEKiFLcVc7Z7hJueiew9nBlzgX0dve0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-BR.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + cExBbBN/cbmRWOsrqKbEBHJOo7FtTr3ZavW9slfCsVc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + gto4ribWYRWZl0Eez6/7XZg3EesExPlGb5Nz1YVTuzE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + YfyCM23JKSt8X663Xe3gds6gHqq5Q+AnLpDFUAHM2BE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/pt-PT.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + WGgYHgAMqsDwSkDIWMFg5XBJnvRCbvM59I1pqJgmhgM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + PZZnueQNOLmQuEtkELhzxhnG+MDu7RyeOaySHSoHmYU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + ou6KdrTUzEKBrcCjBNtxZIZP9HuuJ8zirlEPslAq10Y= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ro.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + o6GEyuuMFsBOFOONmS2V2x+bv11kkMT3xHEoelaxJv8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + wdiMmOcek4MJvdl1u2OoccWD56zCu2lKDGUd40bnMb8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + 8OxiHFrqm2Kj33QZV8qXIaVimaF1Zcvtmks+/riocE0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/ru.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + uqN6dwLmCFJJQmbURrhDJv9wDJSGWqRqyqgeKTNUHZ0= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + FDJ/dTwG5X34BF9lDDkFVGJUwpLeKi1MUbF072nYass= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + xa+UPXIC+og1IpGE6bA/+51E2uR9ZG+HGWKFA83tTNU= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sk.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + iZvCvn22+4feRZso6kzggSUbr1p4Z5zyDU7qniyWqE8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + OAq7ojI6K/xR4nFEK1OBTiJeNaHqgb8xCgzZ5Y3P7Uo= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + fsDgHLZ/sucjdSCWTX5d16OnZjoRzcwYcFxhiqRs9QE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sl.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + eq+yTsmwGRXUHYRVC4w06YmUPnsYuuc4OjUfo7feieE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + LYXEBB7MF82Ig5MgIM9pTtJJAYJL51nzYzbVW1kdSGI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + 7cRrvSRjQl6vS+7I590mYMrXl264dBgJRgZ1orZvRSs= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/sv.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + ZoKH8cwKHH2VaZEkGsmRKevFaLdLxlAICRnrceNdsuw= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + dvWO9t2NYZ+cQoe/9B3Tib+EPOdPp4wgatHaVVhu8gQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + B38kLdAzztjjmbp+peEpxUJU+gVWTGiloPXhiVbRGD8= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/th.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + HT9jsdOsSvc+Orcce27NpaRxKmDCzIwkq+/wUGI3JQM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + Eas+RUaJ03H05UVqHIhONcr5aa06Oj3g21RnNac5od4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + EQ3vP20926+t1dfuYY2lCK4J1gu58mK2DMIqlVx67eE= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/tr.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 756/lMgBfXOE5IDG5Ei94/iIP40obn9ZEROHo01+SRY= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + lR6DOvFkMHpmbtXQJNE1aXtRXgBbd0siVMoq01D4dhM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + IK5drPScu8Mq49o8cg5TcT/cC7CWJ105vdDLIaxDWJc= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/uk.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 90+2Bfu2sI863NKWVBCjCtNi5gbrwPr82sRRfR6DOGM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + NXEAoNAKcjI5GBtGxYcUXmtz+rP06ocJSSVlaR/lnMA= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + BM6BTCrnXIEZ+HEAtMk2P2Wali7DXxm3BUqaeSfwLRM= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_CN.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + 50IP7eJ9NgEFLDIKBJXnmRRzcGT7MmW08hHJr4alKLQ= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/SUUpdateAlert.strings</key> + <dict> + <key>hash2</key> + <data> + jdmB9inrJUf1OmYmVnORSMfdz5z1SWmBtdv39I776K4= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings</key> + <dict> + <key>hash2</key> + <data> + oEil3Q+GFFDEltcMZkVmRiVhGov3bZwifIFtP3zVm0A= + </data> + <key>optional</key> + <true/> + </dict> + <key>Resources/zh_TW.lproj/Sparkle.strings</key> + <dict> + <key>hash2</key> + <data> + Ugk6n5077n97AZzPovvogEt/4FCL8ByB9WvIx7QOsqI= + </data> + <key>optional</key> + <true/> + </dict> + <key>Updater.app</key> + <dict> + <key>cdhash</key> + <data> + CYp/QdoH4tFTfZZh+jGOPaczLm4= + </data> + <key>requirement</key> + <string>cdhash H"098a7f41da07e2d1537d9661fa318e3da7332e6e" or cdhash H"f229e3e86b98cda3735011b07bc93069302163a6"</string> + </dict> + <key>XPCServices/Downloader.xpc</key> + <dict> + <key>cdhash</key> + <data> + jOdIknmp+LDXHx8bMWqlx9Syt7U= + </data> + <key>requirement</key> + <string>cdhash H"8ce7489279a9f8b0d71f1f1b316aa5c7d4b2b7b5" or cdhash H"61387845638f386cbbdc2e3880c8b5824178db93"</string> + </dict> + <key>XPCServices/Installer.xpc</key> + <dict> + <key>cdhash</key> + <data> + XGsMkUjxG/PynRRe3I/CkaNHg+A= + </data> + <key>requirement</key> + <string>cdhash H"5c6b0c9148f11bf3f29d145edc8fc291a34783e0" or cdhash H"762d06af3a103981b55a3cb8de16d76ab651e255"</string> + </dict> + </dict> + <key>rules</key> + <dict> + <key>^Resources/</key> + <true/> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^Resources/.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^Resources/.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Resources/Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/Sparkle.framework/Versions/Current b/Sparkle.framework/Versions/Current index 8c7e5a6..7371f47 120000 --- a/Sparkle.framework/Versions/Current +++ b/Sparkle.framework/Versions/Current @@ -1 +1 @@ -A \ No newline at end of file +B \ No newline at end of file diff --git a/Sparkle.framework/XPCServices b/Sparkle.framework/XPCServices new file mode 120000 index 0000000..99c46ea --- /dev/null +++ b/Sparkle.framework/XPCServices @@ -0,0 +1 @@ +Versions/Current/XPCServices \ No newline at end of file diff --git a/smcFanControl.xcodeproj/project.pbxproj b/smcFanControl.xcodeproj/project.pbxproj index b6be402..0b8b701 100644 --- a/smcFanControl.xcodeproj/project.pbxproj +++ b/smcFanControl.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ 892A7F450B10B7700041B493 /* MachineDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 892A7F440B10B7700041B493 /* MachineDefaults.m */; }; 8932CF2413D08551008BC447 /* SystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8932CF2313D08551008BC447 /* SystemVersion.m */; }; 893355FF1CA02F1A00388D5D /* smc.c in Sources */ = {isa = PBXBuildFile; fileRef = 89C053BC0ADAB7630037CA16 /* smc.c */; }; - 893356001CA0328900388D5D /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 895BDA390B8F8F42003CD894 /* Sparkle.framework */; }; 893506180B440255001BFBA5 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 893506170B440255001BFBA5 /* Localizable.strings */; }; 894A46610ADBD6CF008785F3 /* FanControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 894A46600ADBD6CF008785F3 /* FanControl.m */; }; 894A494B0ADBEEF4008785F3 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 894A494A0ADBEEF4008785F3 /* IOKit.framework */; }; @@ -27,13 +26,15 @@ 8987FBD20B878B3900A5ED8E /* smc.png in Resources */ = {isa = PBXBuildFile; fileRef = 8987FBD00B878B3900A5ED8E /* smc.png */; }; 89949E8D0AEEA37700077E93 /* Power.m in Sources */ = {isa = PBXBuildFile; fileRef = 89949E8C0AEEA37700077E93 /* Power.m */; }; 899D59DC15E1CF60003E322D /* smc in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8924ECEE15AC96E70031730C /* smc */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 899D59DD15E1CFFF003E322D /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 895BDA390B8F8F42003CD894 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 89B243200B7E351000CAD103 /* smcfancontrol_v2.icns in Resources */ = {isa = PBXBuildFile; fileRef = 89B2431F0B7E351000CAD103 /* smcfancontrol_v2.icns */; }; 89E7D3650ADE819B000F67AB /* Machines.plist in Resources */ = {isa = PBXBuildFile; fileRef = 89E7D3640ADE819B000F67AB /* Machines.plist */; }; 89FE24230B7F4CD300D2713C /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 89FE24210B7F4CD300D2713C /* MainMenu.nib */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + B5A4D43B293A62F90084C50B /* IOHIDSensor.m in Sources */ = {isa = PBXBuildFile; fileRef = B5A4D43A293A62F90084C50B /* IOHIDSensor.m */; }; + B5F20EE127FBCC78002EFD11 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 895BDA390B8F8F42003CD894 /* Sparkle.framework */; }; + B5F20EE227FBCC78002EFD11 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 895BDA390B8F8F42003CD894 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -56,13 +57,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 89B156840BA411BF002A258A /* CopyFiles */ = { + B5F20EE327FBCC78002EFD11 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 899D59DD15E1CFFF003E322D /* Sparkle.framework in CopyFiles */, + B5F20EE227FBCC78002EFD11 /* Sparkle.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -121,6 +122,8 @@ 89FE24280B7F4CE900D2713C /* German */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = German; path = German.lproj/MainMenu.nib; sourceTree = "<group>"; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 8D1107320486CEB800E47090 /* smcFanControl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = smcFanControl.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B5A4D43A293A62F90084C50B /* IOHIDSensor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IOHIDSensor.m; sourceTree = "<group>"; }; + B5E84C88293A65840067AEC2 /* IOHIDSensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IOHIDSensor.h; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -136,7 +139,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 893356001CA0328900388D5D /* Sparkle.framework in Frameworks */, + B5F20EE127FBCC78002EFD11 /* Sparkle.framework in Frameworks */, 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, 894A494B0ADBEEF4008785F3 /* IOKit.framework in Frameworks */, 8985F1590ADD0B5500F9EC46 /* Security.framework in Frameworks */, @@ -165,6 +168,8 @@ 892A7F440B10B7700041B493 /* MachineDefaults.m */, 8932CF2213D0850F008BC447 /* SystemVersion.h */, 8932CF2313D08551008BC447 /* SystemVersion.m */, + B5E84C88293A65840067AEC2 /* IOHIDSensor.h */, + B5A4D43A293A62F90084C50B /* IOHIDSensor.m */, ); path = Classes; sourceTree = "<group>"; @@ -287,7 +292,7 @@ 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, 895BDA550B8F90D3003CD894 /* CopyFiles */, - 89B156840BA411BF002A258A /* CopyFiles */, + B5F20EE327FBCC78002EFD11 /* CopyFiles */, ); buildRules = ( ); @@ -383,6 +388,7 @@ 892A7F450B10B7700041B493 /* MachineDefaults.m in Sources */, 8932CF2413D08551008BC447 /* SystemVersion.m in Sources */, 89148EA315E2543D00A073EE /* NSFileManager+DirectoryLocations.m in Sources */, + B5A4D43B293A62F90084C50B /* IOHIDSensor.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -566,7 +572,7 @@ PROVISIONING_PROFILE = ""; SDKROOT = macosx; SYMROOT = "$(HOME)/builds"; - VALID_ARCHS = "i386 x86_64"; + VALID_ARCHS = "arm64e arm64 i386 x86_64"; WRAPPER_EXTENSION = app; }; name = Release; @@ -585,7 +591,7 @@ OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; SDKROOT = macosx; - VALID_ARCHS = "i386 x86_64"; + VALID_ARCHS = "arm64e arm64 i386 x86_64"; }; name = Debug; }; @@ -603,7 +609,7 @@ OTHER_LDFLAGS = ""; SDKROOT = macosx; SYMROOT = "~/builds"; - VALID_ARCHS = "i386 x86_64"; + VALID_ARCHS = "arm64e arm64 i386 x86_64"; }; name = Release; };