OSX捆绑架构

时间:2012-05-03 15:20:39

标签: objective-c macos architecture bundle

我需要比较捆绑包的体系结构,并将其与安装程序中的计算机体系结构进行比较;如果它们匹配,安装将继续,否则它将中止。 使用宏可以轻松获得架构;我想知道是否有办法检查要安装的软件包的体系结构。

2 个答案:

答案 0 :(得分:1)

从shell中,你可以做到

otool -hv <path to mach-o image>

图片通常位于应用程序中的Contents/MacOS或框架中的Versions/Current

答案 1 :(得分:0)

这将确定当前应用程序(或任何确定为mainBundle的包)是否与目标包共享一个公共体系结构。对于NSBundle的executableArchitectures方法,需要Mac OS X 10.5。

NSArray *targetArch = p[NSBundle bundleWithPath:@"/path/to/bundle.bundle"] executableArchitectures];
NSArray *thisArch = [[NSBundle mainBundle] executableArchitectures];

if ([targetArch firstObjectInCommonWithArray:thisArch])
{
    // target bundle has architecture which matches current application
}