-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathffv.sh
More file actions
executable file
·133 lines (119 loc) · 5.16 KB
/
ffv.sh
File metadata and controls
executable file
·133 lines (119 loc) · 5.16 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env bash
versions=('3.6.9' '4.0.1' '5.0.1' '6.0.2' '7.0.1' '8.0.1' '9.0.1' '10.0.1' '11.0' '12.0' '13.0' '14.0' '15.0' '16.0' '17.0')
uninstall=${UNINSTALL:-false}
clean=${CLEAN:-false}
force=${FORCE:-false}
while getopts ":u :c :f" opt; do
case $opt in
u)
uninstall=true
;;
c)
clean=true
;;
f)
force=true
;;
\?)
echo "Invalid option: -$OPTARG"
;;
esac
done
if $uninstall
then
echo "### Uninstalling FFV ###"
echo " # Removing FFV Cache #"
rm -rf ~/.ffv
echo " # Removing FFV Firefox Applications #"
rm -rf /Applications/Firefox-Versions
echo " # Removing FFV profiles"
for i in "${versions[@]}"; do
rm -rf ~/Library/Application\ Support/Firefox/Profiles/*.Firefox-$i-FFV
done
echo "### FFV Uninstall complete ###"
exit
fi
if $clean
then
echo "Enabling -Clean mode, will download fresh copies of the installers"
fi
if $force
then
echo "Enabling -Force mode, will overwrite applications and profiles"
fi
mkdir -p /Applications/Firefox-Versions
mkdir -p ~/.ffv && cd ~/.ffv
for i in "${versions[@]}"; do
echo ""
echo "### INSTALLING FIREFOX $i ###"
if ! $clean && [ -f ./Firefox-$i.dmg ]
then
echo " # Skipping download Firefox $i #"
else
echo " # Downloading Firefox $i #"
curl -L ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$i/mac/en-GB/Firefox%20$i.dmg -o ./Firefox-$i.dmg
fi
if ! $force && [ -d /Applications/Firefox-Versions/Firefox-$i.app ]
then
echo " # Skipping copying application #"
else
echo " # Copying application to /Applications/Firefox-Versions/Firefox-$i #"
if [ -d /Volumes/Firefox ]
then
echo " # Unmounting existing Firefox Installer"
hdiutil unmount /Volumes/Firefox/
fi
hdiutil mount ./Firefox-$i.dmg
if [ -d /Applications/Firefox-Versions/Firefox-$i.app ]
then
rm -rf /Applications/Firefox-Versions/Firefox-$i.app
fi
cp -R /Volumes/Firefox/Firefox.app/ /Applications/Firefox-Versions/Firefox-$i.app
hdiutil unmount /Volumes/Firefox/
fi
if ! $force && [ -f ~/Library/Application\ Support/Firefox/Profiles/*.Firefox-$i-FFV/prefs.js ]
then
echo " # Skipping profile creation #"
else
if [ -d ~/Library/Application\ Support/Firefox/Profiles/*.Firefox-$i-FFV ]
then
echo " # Deleting existing profile Firefox-$i #"
rm -rf ~/Library/Application\ Support/Firefox/Profiles/*.Firefox-$i-FFV
fi
echo " # Creating profile for Firefox-$i #"
if [ -f /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin-orig ]
then
/Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin-orig -CreateProfile Firefox-$i-FFV
else
/Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin -CreateProfile Firefox-$i-FFV
fi
echo ""
echo " # Disabling auto update and default browser check for Firefox-$i #"
find ~/Library/Application\ Support/Firefox/Profiles/*.Firefox-$i-FFV -name prefs.js -print0 -exec sh -c 'echo "
user_pref(\"app.update.auto\", false);
user_pref(\"app.update.disable_button.showUpdateHistory\", false);
user_pref(\"app.update.enabled\", false);
user_pref(\"browser.shell.checkDefaultBrowser\", false);
user_pref(\"browser.rights.3.shown\", true);" >> $1' -- {} \;
echo ""
fi
if ! $force && [ -f /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin-orig ]
then
echo " # Skipping profile binding #"
else
echo " # Binding profile for Firefox-$i #"
mv /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin-orig
echo "#!/bin/bash
exec \"/Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin-orig\" -P Firefox-$i-FFV" > /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin
chmod +x /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin
if [ -f /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox ]
# Newer versions of Firefox use firefox not firefox-bin
then
mv /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-orig
ln -s /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox-bin /Applications/Firefox-Versions/Firefox-$i.app/Contents/MacOS/firefox
fi
fi
echo "### FINISHED INSTALLING FIREFOX $i ###"
echo ""
done
echo "### FINISHED INSTALLING ALL THE FIREFOXES ###"