如何升级Mac OSX应用程序

时间:2014-02-25 11:30:10

标签: macos auto-update

我在客户端工作。我们有一个守护进程运行,它检查服务器上的新版本可用性,并且只要它可用,它就会下载新的.dmg文件。

现在我想静默升级现有应用程序而不显示安装窗口。

我想知道自动升级任何mac osx应用程序的方法是什么。

1 个答案:

答案 0 :(得分:2)

Sparkle在内部做了几件事

  1. 它会检查服务器上是否提供新版本。
  2. 如果可用,请下载并升级现有的应用程序 重新启动相同的应用程序。
  3. 我对第二部分更感兴趣,所以这就是它的作用。

    NSString *installerPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.apple.installer"];
        installerPath = [installerPath stringByAppendingString:@"/Contents/MacOS/Installer"];
        if (![[NSFileManager defaultManager] fileExistsAtPath:installerPath])
        {
            error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUMissingInstallerToolError userInfo:[NSDictionary dictionaryWithObject:@"Couldn't find Apple's installer tool!" forKey:NSLocalizedDescriptionKey]];
            result = NO;
        }
        NSTask *installer = [NSTask launchedTaskWithLaunchPath:installerPath arguments:[NSArray arrayWithObjects:path, nil]];
        [installer waitUntilExit];
    

    现在,您可以看到它找到Installer.app并将pkg作为命令行参数传递给它。

    安装程序应用程序负责升级应用程序。

    还有一种方法可以使用终端命令行可执行文件/usr/sbin/installer以静默方式执行此操作 - 有关wiki的更多信息 - Installer(Mac OS X)

    如果您不想启动安装程序GUI,则可以使用上述命令并提供pkg文件路径和卷信息以供安装。

    以下是样本。

    installer -pkg InstallMe.pkg -target CurrentUserHomeDirectory
    installer -pkg InstallMe.pkg -target '/Volumes/Macintosh HD2' -lang ja
    installer -volinfo -pkg InstallMe.pkg
    installer -pkginfo -pkg InstallMe.pkg
    installer -query RestartAction -pkg InstallMe.pkg
    installer -pkg InstallMe.pkg -target / -showChoices