cocoa - 部署 Beta 软件更新和 Sparkle

标签 cocoa frameworks beta

我的应用程序使用 Cocoa Framework Sparkle 来部署更新。我通常不会部署软件的测试版,但对于下一次更新,我觉得我需要这样做。 我的问题是使用 Sparkle 部署测试版的最佳编号策略是什么。对于测试我的测试版的任何人,我希望在发布下一个正式版本时能够无缝更新,但对于其他用户,我希望整个系统完全不可见。我目前使用 1.2.3 等编号系统进行更新。

最佳答案

我最近也考虑这样做。我的应用程序的开发设置是 Xcode(显然)和 Sparkle,我在 Mercurial 存储库中维护我的代码。作为构建过程的一部分,我使用“hg id”查询 Mercurial 来填充 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”或其他任何名称。为了让想要获得 Beta 版本的用户实现 SUUpdater 委托(delegate)方法:

#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 是用户在我的首选项窗口中设置的常量。其作用是确保对 feed url 的 GET 请求包含 beta=1。在服务器上,您可以解释这一点并提供测试版本的应用广播,或者如果正常版本不存在的话。我不会解释你如何做到这一点,无论是使用 php、.htaccess 等等。

关于cocoa - 部署 Beta 软件更新和 Sparkle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1146954/

相关文章:

java - 使用 HTML 开发桌面应用程序 View ,作为 Web 应用程序

cocoa - 从 NSMenu 打开 NSWindowController

cocoa - 如何编写一个即使在不活动的情况下也能实现更改(自定义光标、绘制图像)的 OS X 应用程序?

java - 玩!框架 2.0 crud 模块

firebase - 使用 firebase/auth 从本地获取当前用户(beta 9)

swift - 在 Xcode11 beta 4 中工作但在 beta 5 中停止工作的代码有问题

ios - 为什么在 SceneKit 中不调用 Contact Delegate?

objective-c - 在 os x 应用程序中进入全屏模式时自定义 View 动画

swift - 为什么具有透明背景的 NSImage 得到的 RGB 值为 (0,0,0)?

php - 如何跟上 PHP 框架的发展?