macOS Mojave安装iTunes 12.6.x
Contents [隐藏]
- 1 关闭SIP
- 2 下载旧版iTunes安装包
- 3 复制脚本至脚本编辑器并运行
- 3.1 这个脚本做的事情是:
- 4 后记
- 5 10.14.4之后的解决办法
- 6 macOS Catalina 之后的解决办法
- 7 如何升级回较新版本
19.10.9更新:
在苹果释出了 macOS Catalina 正式版后,我随即展开了研究并找到了在 Catalina 安装带 APP Store 的 iTunes 的方法,此方法可以拓展运用到「macOS Catalin 安装 iTunes」,详见:macOS Catalina之后的解决办法
19.4.5更新:
有朋友反馈说在10.14及以后的版本可以顺利安装,但是打开之后提示「应用程序“iTunes”的这个版本不能与此版本的 macOS 配合使用。您使用的是“iTunes”12.6.x」,我经过虚拟机的测试之后给出了最新的解决办法:10.14.4之后的解决办法
降级之前请务必备份好此时macOS系统版本对应的iTunes.app
,以免以后有重新升级的需求,升级请参考:如何升级回较新版本
交流群:Newlearnerの水群
之前写过一篇抓取旧版本ipa包的教程利用Charles抓取旧版 iOS App,后来有朋友反映说他是最新的macOS Mojave系统,直接安装iTunes 12.6.x企业版的办法在他那里并不适用,该方法只适用于10.13.6及以下的系统。
后来我查阅了网上的资料,发现水果对系统和系统内置软件版本有着严格的要求,比如你一旦升级到Mojave,系统会捆绑一个与系统相对应的、更高版本的iTunes。经验证,Mojava用普通安装软件的方式并不能向下兼容iTunes12.6.x,似乎广大Mojava用户要和iTunes里面的商店说拜拜了(大雾
这期就来给大家讲讲如何在Mojava上面安装低版本的iTunes以实现我们抓包的要求,现附上一张安装失败的图片:
我目前没有可测试环境,本期所有图片来自于TG群友,TG压缩图片(指photo非file)水平一流,如有不适请ctrl(command)+w
关闭SIP
首先要关闭mac的系统完整性保护,目的是可以删除之前新版本的iTunes并替换成旧版本,否则会报permission denied
。首先将电脑关机,按住组合键command+r
开机进入macOS的恢复模式(Recovery HD)。
进入的时候读条可能很慢,请耐心等待。之后找到顶部菜单栏的实用工具
–终端
,打开它。输入:
1 2 3 4 5 6 7 8 9 |
csrutil disable #之后确认一次即可成功关闭 csrutil status #检查系统完整性保护状态,应显示“System Integrity Protection status: disabled.” #完成所有iTunes旧版安装步骤后,可回到这里输入csrutil enable即可成功开启系统完整性保护 |
下载旧版iTunes安装包
iTunes 12.6.3(Mac):传送门
iTunes 12.6.4(Mac):传送门
iTunes 12.6.5(Mac):传送门
复制脚本至脚本编辑器并运行
最后在知名苹果社区MacRumors找到了一位朋友的脚本,网上全部是使用该脚本的讲解,今天我来讲讲其原理以及引申出新的免脚本方法。如果觉得脚本操作对你有难度,请直接看后记我总结的方法。先上脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
set question to display dialog "Delete iTtunes?" buttons {"Yes", "No"} default button 1 set answer to button returned of question if answer is equal to "Yes" then do shell script "rm -rf /Applications/iTunes.app" with administrator privileges display dialog "iTunes was deleted" buttons {"Ok"} set theDMG to choose file with prompt "Please select iTunes 12.6 dmg file:" of type {"dmg"} do shell script "hdiutil mount " & quoted form of POSIX path of theDMG do shell script "pkgutil --expand /Volumes/iTunes/Install\\ iTunes.pkg ~/tmp" do shell script "sed -i '' 's/18A1/14F2511/g' ~/tmp/Distribution" do shell script "sed -i '' 's/gt/lt/g' ~/tmp/Distribution" do shell script "pkgutil --flatten ~/tmp ~/Desktop/iTunes.pkg" do shell script "hdiutil unmount /Volumes/iTunes/" do shell script "rm -rf ~/tmp" end if if answer is equal to "No" then display dialog "iTunes was not deleted" buttons {"Ok"} return end if set question to display dialog "Install iTtunes?" buttons {"Yes", "No"} default button 1 set answer to button returned of question if answer is equal to "Yes" then do shell script "open ~/Desktop/iTunes.pkg" return end if if answer is equal to "No" then display dialog "Modified iTunes.pkg saved on desktop" buttons {"Ok"} return end if |
这个脚本做的事情是:
①用rm -rf指令删除现有的iTunes.app
②请用户选择将要被安装的旧版iTunes的DMG安装包(内含pkg)
③将pkg中所有内容复制到一个新建文件夹/tmp
④修改该文件夹下的Distribution
文件(该文件内容限制了安装系统版本)
⑤重新生成一个修改好的,可在Mojava上安装的pkg安装包并将其放在桌面
⑥删除临时创建的/tmp文件夹
那么Distribution文件又写了什么呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function InstallationCheck(prefix) { if (system.compareVersions(system.version.ProductVersion, '10.10.5') < 0) { my.result.message = system.localizedStringWithFormat('ERROR_B85E600482', '10.10.5'); my.result.type = 'Fatal'; return false; } if (compareBuildVersions(system.version.ProductBuildVersion, '14F2511') < 0) { my.result.message = system.localizedString('ERROR_3491501876'); my.result.type = 'Fatal'; return false; } if (compareBuildVersions(system.version.ProductBuildVersion, '18A1') > 0) { my.result.message = system.localizedString('ERROR_3491501876'); my.result.type = 'Fatal'; return false; } return true; } |
我找到这样的一段,可见这个pkg确实有着安装环境的要求,14F2511
指的是10.10.5,18A1
指的是10.13.6以上系统。因此该脚本用sed -i '' 's/18A1/14F2511/g' ~/tmp/Distribution
和sed -i '' 's/gt/lt/g' ~/tmp/Distribution
这两个命令将18A1
改掉是完全ojbk的,这样安装包就可以在Mojava上面安装了,否则会看到开头图片的报错。这也反映了很多人单单用rm -rf还是解决不了无法安装问题的原因。
原理说的差不多了,下面按照顺序排出安装流程的图片:
根据原理,到这一步已经可以在桌面找到iTunes.pkg
了,双击安装即可。
后记
1、如果打开 iTunes 12.6 提示无法读取文件“iTunes Library.itl”,因为它是由更高版本的 iTunes 所创建。点击“退出”按钮,打开文件夹/Users/管理员名称/Music/iTunes,删除 “iTunes Library.itl” 文件即可。
或者直接sudo rm -rf ~/Music/iTunes/iTunes Library.itl
一步到位、
2、还可以通过Pacifist这个app直接访问DMG、pkg中的资源,是一款很不错的软件。
3、中文圈论坛、博客始终围绕「脚本编辑器脚本」方法。其实明白了原理,用terminal也是一样的,命令如下:
1 2 3 4 5 6 7 8 9 10 |
#首先需要双击DMG镜像以挂载,这是执行以下终端的前提 #临时文件夹我以 ~/Desktop/iTunes为例,届时自动生成 sudo rm -rf /Applications/iTunes.app sudo pkgutil --expand /Volumes/iTunes/Install\ iTunes.pkg ~/Desktop/iTunes sudo sed -i '' 's/18A1/14F2511/g' ~/Desktop/iTunes/Distribution sudo sed -i '' 's/gt/lt/g' ~/Desktop/iTunes/Distribution sudo pkgutil --flatten ~/Desktop/iTunes ~/Desktop/iTunes.pkg hdiutil unmount /Volumes/iTunes/ sudo rm -rf ~/Desktop/iTunes |
4、有朋友可能会说说,人家是复制粘贴一键式,and you?不要急,我也想到了另外一样好东西:workflow(自动操作),并且编写了.workflow和.app两种格式的一键操作程序。
使用方法:首先关闭SIP,下载旧版DMG文件并双击装载,接着点开Mojava安装iTunes12.6.x.app
,会在桌面自动生成可安装的pkg文件。如果你心存疑虑,不妨下载Mojava安装iTunes12.6.x.workflow
,看完命令放心后手动点击运行。
下载地址(密码:newlearner):Mojava安装iTunes12.6.x.app Mojava安装iTunes12.6.x.workflow
⚠️今天和网友聊天的时候他跟我说了很有趣的一段话:“我是电脑小白,怕对电脑不安全,还是用标准方法吧”
为啥有意思呢?因为他们宁可复制一大长串自己都看不懂的的命令,到脚本编辑器粘贴,也不愿意相信你用相同原理得到的容易上手的「自动操作」,生怕里面有什么洪水猛兽。
他这么做有错吗?我觉得没有错,防人之心不可无,何况是一个主动找你并请你测试的陌生人。他盲目相信脚本编辑器方法为标准答案真的好吗?我觉得这么做可能真的是很稳妥的一个办法,既不会走弯路,最后又能解决问题。
但是,这也造成了国内大片文章复制粘贴的现象,没有人去深究它的原理,有了更容易上手的办法,大家也此方法流传开来之前也不轻易去尝试。
以上是无用的抱怨与感叹,该app已经被@merlin
朋友检验通过了,大家可以放心食用!
10.14.4之后的解决办法
报错:应用程序“iTunes”的这个版本不能与此版本的 macOS 配合使用。您使用的是“iTunes”12.6.x。
据我的测试表明,10.14.4及之前的beta版要求itunes的最低版本为12.9,也就是说即使我们安装成功12.6.x系统也会报错从而无法进入itunes应用。
解决办法:在运行上面的脚本之前,复制「访达」—「应用程序」—「itunes.app」—「显示包内容」中的version.plist和Info.plist两个文件并保存备用。安装好旧版本的itunes之后,将这两个文件覆盖掉旧版本相对应的两个旧版文件即可运行。
美中不足的是貌似图标还是禁止的样子,但是实测可以打开并使用了,测试环境:10.14.4 虚拟机
19.5.15更新:感谢评论提供的解决图标斜杠方法
在iTunes.app上右键,显示简介,先不要关闭简介窗口。然后还在iTunes.app上右键,显示包内容,找到Contents/Resources/iTunes.icns, 把这个文件拖入刚才的简介的窗口的左上角图标处,重新打开iTunes就不会是禁止图标了。
⚠️这里强调两点:先替换文件再替换图标,替换图标时只能拖入,不能用CMD+V。
如果你已经删除新版itunes并无法重新安装,也可以直接下载使用我从itunes 12.9.2提取的两个文件:传送门
Talk is cheap,show you the picture:
macOS Catalina 之后的解决办法
首先按照上面的方法获取 PKG 安装包,双击之后会出现「该软件包与此版本的macOS不兼容」的报错,目前暂未弄清除问题所在。接着下载Pacifist这个app,并访问该 PKG。在「软件包内容」-「iTunesX.pkg的内容」-「Applications」中找到我们想要的 iTunes.app并右键选择「安装到默认位置」,此时就可以进入应用程序寻找我们的软件了。
双击打开,发现依然报错。按照老思路,依然是替换「显示包内容」中的 version.plist和Info.plist 这两个文件,这次将版本号改为 13.x.x 即可。我这里依然准备了两个改好的文件供给大家替换:传送门
关于图标斜杠或者无法显示等问题,上文已经阐述过,不再啰嗦了,最后上一张图:
如何升级回较新版本
本版块针对10.14.6及之前的系统。很多人降级之后想要升级,还有一些朋友升级macOS系统版本之后,iTunes也随之升级了,并且出现如下错误:
初步估计是因为10.14.4之后修改了contents的文件导致和version不符了,有的朋友因此重装了系统,个人感觉是不必要的。只要你在降级之前做了备份,在一定范围内的macOS版本都是可以兼容的(换句话说macOS版本和iTunes版本并不是一一对应关系)
解决办法:关闭SIP,打开终端,输入sudo rm -rf /Applications/iTunes.app
删除打不开的iTunes,将之前备份好的iTunes.app
拖入application即可(此处不能覆盖)
如果你没有备份,这里也准备了一个macOS 10.14.5上面的iTunes 12.9.5备用:
https://share.newlearner.site/%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%BA%90/iTunes.app.7z
密码:newlearner
参考文章: