在mac分发app中,根据MDM官方文档这个地方的指令描述及MDM Protocol Extensions模块中的macOS Extensions,可以发现iOS设备和OSX设备在mdm上的区别,个人整理了一下:
1.iOS系统
对于iOS设备来说,一个设备就是一个唯一标示,所有的指令及描述文件,针对的都是这台设备,基本上可以理解为一台设备就是一个用户,单一用户===单一设备,因为我们的设备不同于OSX,可以创建多个用户,这是前提
2.OSX系统
单一设备 != 单一用户,可能多个设备存在多个用户,所以我们在mac安装checkin的描述文件时, 设备checkin上报token的时候,会上报对此,分别对应设备的token和用户的token,对于我们的一些指令,用户token是不支持的,一旦下发,会显示指令受限制,错误如下提示:
<dict>
<key>ErrorCode</key>
<integer>71</integer>
<key>ErrorDomain</key>
<string>MDMClientError</string>
<key>LocalizedDescription</key>
<string><![CDATA[Command received for: <User: 501> but restricted to: <Device> <MDMClientError:71>]]></string>
</dict>
3.分发app
在分发app的指令中,iOS系统正常使用,但是对于OSX,OSX文档描述的方法 在实践中未成功,其中文档中提到了将App格式转化为pkg格式,并且签名取md5值的过程中,官方文档推荐的命令为:
//先将app文件转化为分发使用的pkg文件
sudo pkgbuild —component ~/Desktop/MyApp.app —install-location /Applications
—sign myserver.myenterprise.com /tmp/myPackage.pkg
//将pkg文件按照10M大小转换
$ split -b 10485760 myPackage.pkg myPackage.pkg.
//对所有的10M文件块取md5值
$ md5 -r myPackage.pkg.*
但是我们安装文档的要求,处理失败,然后进行了查询其他命令,并且安装了苹果自身的OS Server使用对比文件,最终发现的成功的方式及使用的命令为:
使用命令productbuild而不是命令pkgbuild,对比2个命令处理完的pkg包,其中productbuild的安装包,
//解压方式1:
xar -xf Setup.pkg
cat qdskyDrive.pkg/Payload | cpio -i
//解压方式2 2选1
pkgutil --expand qdskyDrive.pkg ~/Desktop/12(此文件夹名自己写一个不存在的 系统会给创建一个)
使用pkgbuild命令解压结果:
三个文件,分别是
1.Bom文件
2.PackageInfo文件
3.Payload文件
具体作用还没分分析
-
使用productBuild命令解压如下:
具体区别再分析一下,尝试对立面的pkg再次解压,解压失败(Could not open package for expansion:///***.pkg),然后就可以安装到设备上