2014-02-25 184 views
0

我正在客户端工作。我们有一个守护进程运行,它检查服务器上的新版本可用性,并在它可用时下载新的.dmg文件。如何升级Mac OSX应用程序

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

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

+0

也许一个愚蠢的问题,但没有任何特殊原因不使用默认具有此功能的商店? –

+0

我正在研究AppStore中不可用的企业应用程序。该应用程序将由管理员安装在客户机上。现在,每当有新版本可用时,我们都希望自动升级客户端应用程序。 – Omkar

+1

你见过[Sparkle](http://sparkle.andymatuschak.org)吗?它可能会做你需要的。 – Volker

回答

2

耀做几件事情内部

  1. 它检查服务器上的或不可用的新版本。
  2. 如果可用,请下载并升级现有应用程序,并重新启动相同的应用程序。

我对第二部分更感兴趣,所以就是这样。

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的另一种方式 - 更多信息,关于维基 - 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