macOS Mojave安装iTunes 12.6.x

Contents [隐藏]

  • 1 关闭SIP
  • 2 下载旧版iTunes安装包
  • 3 复制脚本至脚本编辑器并运行
    • 3.1 这个脚本做的事情是:
  • 4 后记
  • 5 10.14.4之后的解决办法
  • 6 macOS Catalina 之后的解决办法
  • 7 如何升级回较新版本
Spread the love

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/Distributionsed -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


参考文章:

MacRumors bogdanw的回答

确定您的 Mac 使用的是哪个 macOS 版本

打赏赞(2)微海报分享
(0)

相关推荐