forked from ProgramYazar/MacBundleCreator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAppBundleCreator
119 lines (93 loc) · 3.72 KB
/
AppBundleCreator
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
#/bin/bash
# This code written by ILTER ENGIN KIZILGUN
# date Fri Apr 7 04:20:22 +03 2017
# You can modify, change or eat this code
# i hope this piece can help you
function createIconSet() {
tmp_folder=`mktemp -d`
tmp_file=`mktemp`.icns
icon_name=$1
touch $tmp_file
mkdir $tmp_folder/icon.iconset
sips -z 16 16 $icon_name --out $tmp_folder/icon.iconset/icon_16x16.png
sips -z 32 32 $icon_name --out $tmp_folder/icon.iconset/[email protected]
sips -z 32 32 $icon_name --out $tmp_folder/icon.iconset/icon_32x32.png
sips -z 64 64 $icon_name --out $tmp_folder/icon.iconset/[email protected]
sips -z 128 128 $icon_name --out $tmp_folder/icon.iconset/icon_128x128.png
sips -z 256 256 $icon_name --out $tmp_folder/icon.iconset/[email protected]
sips -z 256 256 $icon_name --out $tmp_folder/icon.iconset/icon_256x256.png
sips -z 512 512 $icon_name --out $tmp_folder/icon.iconset/[email protected]
sips -z 512 512 $icon_name --out $tmp_folder/icon.iconset/icon_512x512.png
cp $icon_name $tmp_folder/icon.iconset/[email protected]
iconutil -c icns $tmp_folder/icon.iconset
mv $tmp_folder/icon.icns $tmp_file
rm -R $tmp_folder/icon.iconset
echo $tmp_file
}
tmp_folder=`mktemp -d`
# create project template
mkdir $tmp_folder/Contents
mkdir $tmp_folder/Contents/MacOS
mkdir $tmp_folder/Contents/Resources
touch $tmp_folder/Contents/Info.plist
touch $tmp_folder/Contents/PkgInfo
touch $tmp_folder/Contents/MacOS/RunIT
PLIST_FILE=$tmp_folder/Contents/Info.plist
echo -n "Application Name: "
read APP_NAME
echo -n "Application Identifier: "
read APP_IDENT
echo -n "CopyRight/Left: "
read APP_CR
echo -n "Icon File Path: "
read APP_ICON
echo -n "Project Root Folder: "
read APP_PROJ_ROOT
echo -n "Executable Name: "
read APP_EXEC_NAME
if [ -f "$APP_ICON" ]
then
ICNS_NAME=$(createIconSet "$APP_ICON" | tail -n 1)
mv $ICNS_NAME $tmp_folder/Contents/Resources/icon.icns
fi
if [[ -d "$APP_PROJ_ROOT" && -f "$APP_PROJ_ROOT/$APP_EXEC_NAME" ]]
then
cp -a "$APP_PROJ_ROOT" $tmp_folder/Contents/MacOS/
echo "#!/bin/sh" >> $tmp_folder/Contents/MacOS/RunIT
echo "/usr/bin/open $APP_EXEC_NAME \"\$@\"" >> $tmp_folder/Contents/MacOS/RunIT
echo "exit 0" >> $tmp_folder/Contents/MacOS/RunIT
chmod +x $tmp_folder/Contents/MacOS/RunIT
else
echo "Project Folder: $APP_PROJ_ROOT"
echo "Executable Folder: $APP_PROJ_ROOT/$APP_EXEC_NAME"
echo "Project folder or executable broken"
exit 1
fi
# create plist file
echo '<?xml version="1.0" encoding="UTF-8"?>' >> $PLIST_FILE
echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> $PLIST_FILE
echo '<plist version="1.0">' >> $PLIST_FILE
echo ' <dict>' >> $PLIST_FILE
echo ' <key>CFBundleDisplayName</key>' >> $PLIST_FILE
echo " <string>$APP_NAME</string>" >> $PLIST_FILE
echo ' <key>NSHumanReadableCopyright</key>' >> $PLIST_FILE
echo " <string>$APP_CR</string>" >> $PLIST_FILE
echo ' <key>CFBundleExecutable</key>' >> $PLIST_FILE
echo " <string>RunIT</string>" >> $PLIST_FILE
echo " <key>CFBundleIconFile</key>" >> $PLIST_FILE
echo ' <string>icon.icns</string>' >> $PLIST_FILE
echo " <key>CFBundleIdentifier</key>" >> $PLIST_FILE
echo " <string>$APP_IDENT</string>" >> $PLIST_FILE
echo ' <key>CFBundleDocumentTypes</key>' >> $PLIST_FILE
echo " <array></array>" >> $PLIST_FILE
echo ' <key>CFBundlePackageType</key>' >> $PLIST_FILE
echo " <string>APPL</string>" >> $PLIST_FILE
echo ' <key>IFMajorVersion</key>' >> $PLIST_FILE
echo " <integer>0</integer>" >> $PLIST_FILE
echo ' <key>IFMinorVersion</key>' >> $PLIST_FILE
echo " <integer>1</integer>" >> $PLIST_FILE
echo ' </dict>' >> $PLIST_FILE
echo '</plist>' >> $PLIST_FILE
# create PkgInfo
echo "APPL$APP_NAME" >> $tmp_folder/Contents/PkgInfo
mv $tmp_folder "$APP_NAME.app"