-
-
Notifications
You must be signed in to change notification settings - Fork 410
/
create-dmg.sh
executable file
·146 lines (121 loc) · 4.18 KB
/
create-dmg.sh
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/bin/sh
#
# creating the QOwnNotes.dmg with Applications link
#
# we will get the $QTDIR from Travis CI
#QTDIR="/usr/local/opt/qt5"
APP=QOwnNotes
# this directory name will also be shown in the title when the DMG is mounted
TEMPDIR=$APP
SIGNATURE="Patrizio Bekerle"
NAME=`uname`
PLIST=$APP.app/Contents/Info.plist
if [ "$NAME" != "Darwin" ]; then
echo "This is not a Mac"
exit 1
fi
echo "Changing bundle identifier"
sed -i -e 's/com.yourcompany.QOwnNotes/com.PBE.QOwnNotes/g' $PLIST
# adding version number
/usr/libexec/PlistBuddy -c "Add :CFBundleVersion string $VERSION_NUMBER" $PLIST
/usr/libexec/PlistBuddy -c "Add :CFBundleShortVersionString string $VERSION_NUMBER" $PLIST
# removing CFBundleGetInfoString
/usr/libexec/PlistBuddy -c "Delete :CFBundleGetInfoString" $PLIST
# removing backup plist
rm -f ${PLIST}-e
# copy translation files to app
cp languages/*.qm $APP.app/Contents/Resources
# copy updater script to app
#chmod a+x ../travis/osx/update.command
#cp ../travis/osx/update.command $APP.app/Contents/MacOS
echo "Adding keys"
# add the keys for OSX code signing
security create-keychain -p travis osx-build.keychain
security import ../travis/osx/apple.cer -k ~/Library/Keychains/osx-build.keychain -T /usr/bin/codesign
security import ../travis/osx/dist.cer -k ~/Library/Keychains/osx-build.keychain -T /usr/bin/codesign
security import ../travis/osx/dist.p12 -k ~/Library/Keychains/osx-build.keychain -P $KEY_PASSWORD -T /usr/bin/codesign
security default-keychain -s osx-build.keychain
security unlock-keychain -p travis osx-build.keychain
# use macdeployqt to deploy the application
#echo "Calling macdeployqt and code signing application"
#$QTDIR/bin/macdeployqt ./$APP.app -codesign="$DEVELOPER_NAME"
echo "Calling macdeployqt"
$QTDIR/bin/macdeployqt ./$APP.app
if [ "$?" -ne "0" ]; then
echo "Failed to run macdeployqt"
# remove keys
security delete-keychain osx-build.keychain
exit 1
fi
# trying to fix the macdeployqt problem with making the binary use the Qt
# library files from /usr/local instead of the bundle
# see: https://github.com/Homebrew/homebrew-core/issues/6161
# example: https://github.com/iltommi/neutrino/blob/master/.travis.yml
echo "Cloning macdeployqtfix"
git clone --depth=1 https://github.com/aurelien-rainone/macdeployqtfix.git
echo "Calling macdeployqtfix"
python macdeployqtfix/macdeployqtfix.py $APP.app/Contents/MacOS/$APP /usr/local
echo "Verifying code signed app"
codesign --verify --verbose=4 ./$APP.app
spctl --assess --verbose=4 --raw ./$APP.app
echo "Create $TEMPDIR"
#Create a temporary directory if one doesn't exist
mkdir -p $TEMPDIR
if [ "$?" -ne "0" ]; then
echo "Failed to create temporary folder"
exit 1
fi
echo "Clean $TEMPDIR"
#Delete the contents of any previous builds
rm -Rf ./$TEMPDIR/*
if [ "$?" -ne "0" ]; then
echo "Failed to clean temporary folder"
exit 1
fi
echo "Move application bundle"
#Move the application to the temporary directory
mv ./$APP.app ./$TEMPDIR
if [ "$?" -ne "0" ]; then
echo "Failed to move application bundle"
exit 1
fi
#echo "Sign the code"
##This signs the code
#echo "Sign Code with $SIGNATURE"
#codesign -s "$SIGNATURE" -f ./$TEMPDIR/$APP.app
#if [ "$?" -ne "0" ]; then
# echo "Failed to sign app bundle"
# exit 1
#fi
echo "Create symbolic link"
#Create a symbolic link to the applications folder
ln -s /Applications ./$TEMPDIR/Applications
if [ "$?" -ne "0" ]; then
echo "Failed to create link to /Applications"
exit 1
fi
echo "Create new disk image"
#Create the disk image
rm -f ./$APP.dmg
hdiutil create -srcfolder ./$TEMPDIR -ov -format UDBZ -fs HFS+ ./$APP.dmg
if [ "$?" -ne "0" ]; then
echo "Failed to create disk image"
exit 1
fi
#echo "Code signing disk image"
#codesign --force --verify --verbose --sign "$DEVELOPER_NAME" ./$APP.dmg
echo "Verifying code signed disk image"
codesign --verify --verbose=4 ./$APP.dmg
spctl --assess --verbose=4 --raw ./$APP.dmg
echo "moving $APP.dmg to $APP-$VERSION_NUMBER.dmg"
mv $APP.dmg $APP-$VERSION_NUMBER.dmg
echo "Removing keys"
# remove keys
security delete-keychain osx-build.keychain
# delete the temporary directory
rm -Rf ./$TEMPDIR/*
if [ "$?" -ne "0" ]; then
echo "Failed to clean temporary folder"
exit 1
fi
exit 0