Это - вероятно, стилистическое предпочтение больше, чем что-нибудь. Я просто проверил PEP 8 и не видел упоминания о сингле по сравнению с двойными кавычками.
я предпочитаю одинарные кавычки потому что его единственное одно нажатие клавиши вместо два. Таким образом, я не должен делать пюре из клавиши Shift для создания одинарной кавычки.
Вероятно, лучший способ - полностью отключите вашу CFBundleVersion (которая должна содержать только. и числа, и используется для сравнения версий Sparkle и ОС) и CFBundleShortVersionString (что может делать что угодно, и это то, что видят пользователи).
Затем вам просто нужно сделать убедитесь, что ваш CFBundleVersion всегда увеличивается с течением времени, но в противном случае может быть любым [*], в то время как вы используете 1.2.4b и 1.2.4 в качестве CFBundleStortVersionString для бета-версии и финальной версии соответственно.Пока CFBundleVersion для бета-версии выше, чем ваша текущая CFBundleVersion, а CFBundleVersion конечной небета-версии выше, чем для бета-версии, все будет работать так, как вы хотите.
[*] Просто имейте в виду, что, несмотря на то, что в документации Apple это не упоминается, 9999.99.99 - это в значительной степени самая высокая версия, которую распознает LaunchServices, и она будет игнорировать любые числовые блоки, кроме третьего, поэтому планируйте использовать схему, которая даже выше этого не пойдет; Обновления Sparkle по-прежнему будут работать, но ОС не поймет, какая копия является последней версией.
I like to use the Apple versioning tool included with Xcode. It maintains a parallel build number (e.g. 12345) that is distinct from your marketing version number (1.2.3). You invoke it using the command line tool agvtool
.
What's more, if you're using Subversion or CVS as your versioning system, this tool has built-in support. For example, which I want to increment my build number, I just enter this in the terminal:
agvtool -usesvn bump -all
This increments the build number of every target in my application, updates the Info.plist
files, and then commits the whole thing to SVN automatically. There's also a new-marketing-version
verb you can use to set the CFBundleShortVersionString
across all your project's targets. Take a look at the man page for agvtool
(i.e. type man agvtool
at the terminal) for more details.
So what does this have to do with Sparkle? I use the build number as my sparkle:version
number. Using the build number makes it dead simple for Sparkle to figure out whether it's the current version or not. For the users' benefit, I like to put the build number right in the marketing version number. So my beta version numbers look something like this: 1.2.3 (456)
. Apple does something very similar with Safari. If I go Safari > About Safari right now, I see version 4.0.2 (5530.19).
Я недавно тоже занимался этим. Настройка разработки для моего приложения - Xcode (очевидно) с Sparkle, и я храню свой код в репозитории Mercurial. В процессе сборки я запрашиваю Mercurial, используя "hg id" для заполнения Info.plit. Это делается в сценарии сборки для моей цели Xcode. Это сценарий:
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion `/usr/local/bin/hg id -in`" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString `/usr/local/bin/hg id -t`" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
Итак, для бета-версий я могу просто пометить свой набор изменений как «0.29b» или что-то в этом роде. Чтобы сделать так, чтобы пользователи, которые хотят получать бета-версии, я реализую метод делегирования SUUpdater:
#pragma mark -
#pragma mark SUUpdate Delegate methods
- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile {
if([[NSUserDefaults standardUserDefaults] boolForKey:BSEnableBetaUpdates]) {
return [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"beta", @"key", [NSNumber numberWithBool:YES], @"value", @"Enable beta updates", @"displayKey", @"Yes", @"displayValue", nil], nil];
} else {
return nil;
}
}
Где BSEnableBetaUpdates - это константа, которая устанавливается пользователем в моем окне настроек. Это нужно для того, чтобы убедиться, что запрос GET к URL-адресу вашего фида содержит beta = 1. На сервере вы можете интерпретировать это и предоставить приложение для бета-версий или, если не существует, обычных выпусков. Я не буду объяснять, как это можно сделать, используя php или .htaccess что угодно.