Развертывание обновлений Бета-версии программного обеспечения и Блеска

Это - вероятно, стилистическое предпочтение больше, чем что-нибудь. Я просто проверил PEP 8 и не видел упоминания о сингле по сравнению с двойными кавычками.

я предпочитаю одинарные кавычки потому что его единственное одно нажатие клавиши вместо два. Таким образом, я не должен делать пюре из клавиши Shift для создания одинарной кавычки.

12
задан Steve McLeod 18 July 2009 в 15:32
поделиться

3 ответа

Вероятно, лучший способ - полностью отключите вашу CFBundleVersion (которая должна содержать только. и числа, и используется для сравнения версий Sparkle и ОС) и CFBundleShortVersionString (что может делать что угодно, и это то, что видят пользователи).

Затем вам просто нужно сделать убедитесь, что ваш CFBundleVersion всегда увеличивается с течением времени, но в противном случае может быть любым [*], в то время как вы используете 1.2.4b и 1.2.4 в качестве CFBundleStortVersionString для бета-версии и финальной версии соответственно.Пока CFBundleVersion для бета-версии выше, чем ваша текущая CFBundleVersion, а CFBundleVersion конечной небета-версии выше, чем для бета-версии, все будет работать так, как вы хотите.

[*] Просто имейте в виду, что, несмотря на то, что в документации Apple это не упоминается, 9999.99.99 - это в значительной степени самая высокая версия, которую распознает LaunchServices, и она будет игнорировать любые числовые блоки, кроме третьего, поэтому планируйте использовать схему, которая даже выше этого не пойдет; Обновления Sparkle по-прежнему будут работать, но ОС не поймет, какая копия является последней версией.

8
ответ дан 2 December 2019 в 06:26
поделиться

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).

7
ответ дан 2 December 2019 в 06:26
поделиться

Я недавно тоже занимался этим. Настройка разработки для моего приложения - 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 что угодно.

9
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: