-
-
Save mathiasbynens/674099 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
if [ "$1" = "-h" -o "$1" = "--help" -o -z "$1" ]; then cat <<EOF | |
appify v3.0.1 for Mac OS X - http://mths.be/appify | |
Creates the simplest possible Mac app from a shell script. | |
Appify takes a shell script as its first argument: | |
`basename "$0"` my-script.sh | |
Note that you cannot rename appified apps. If you want to give your app | |
a custom name, use the second argument: | |
`basename "$0"` my-script.sh "My App" | |
Copyright (c) Thomas Aylott <http://subtlegradient.com/> | |
Modified by Mathias Bynens <http://mathiasbynens.be/> | |
EOF | |
exit; fi | |
APPNAME=${2:-$(basename "$1" ".sh")} | |
DIR="$APPNAME.app/Contents/MacOS" | |
if [ -a "$APPNAME.app" ]; then | |
echo "$PWD/$APPNAME.app already exists :(" | |
exit 1 | |
fi | |
mkdir -p "$DIR" | |
cp "$1" "$DIR/$APPNAME" | |
chmod +x "$DIR/$APPNAME" | |
echo "$PWD/$APPNAME.app" |
Running on mac OSX 10.10.2
I had trouble with the powerpc error.
I had to add the #!/bin/bash line to my shell script as noted above.
I had to modify my plist to be correct as noted previously.
In particular I had to change CFBundleSignature from ???? to a 4 character string.
It then worked for me.
Can someone post a simple .plist file that does the following...
-
Allows App to be a drag + drop target.
-
Passes dropped files into script $* to allow files to be dropped on App.
I'll also look around + if I find a good example, post it here.
Thanks.
I made it to work on OS X 10.10 by adding file $APPNAME.app/Contents/Info.plist
containing <plist><dict></dict></plist>
See also forks https://gist.github.com/advorak/1403124 and https://gist.github.com/dwallraff/5d0e37b0dc969a8c5ff5 for more options
Neat idea. However, what directory does the script run in so that I can use relative paths?
-bash: /Users/--------/Desktop/appify.sh: Permission denied
@CosmicWebServices
chmod +x /Users/--------/Desktop/appify.sh
OS X 10.10.5: You can’t open the application “My App.app” because it is not supported on this type of Mac
😞
adding the Info.plist with next content didn't help:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>MyApp</string>
<key>CFBundleGetInfoString</key>
<string>MyApp</string>
<key>CFBundleIconFile</key>
<string>MyApp</string>
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
</dict>
</plist>
Any ideas how to make it work on Yosemite?
+1 any idea on how to make this work on OS X 10.10 or higher?
I'm not familiar with the OS X plists internals... could somebody please post a working example?
I worked for me after I ran this: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f MyAppName.app
It started working (OS X 10.11.2) when I changed #!/bin/bash
to #!/usr/bin/env bash
at the first line of my .sh script
use this awesome utility for creating .app package no error related to power pc
http://sveinbjorn.org/platypus
Hey guys,
Just put the correct shebang on your .sh file and everything will work fine. For instance: #!/bin/bash
.
Also, don't forget to add execution permission for your .sh file: chmod +x myFile.sh
.
With these steps, there is no PowerPC error :)
Hi,
my script looks like this
#!/bin/bash
cd /Users/dr/Documents/Leo/leo-editor
python launchLeo.py
and i added the execution permission for my .sh file.
The applified application dies immediately and I see the following entry in the console log:
15/08/16 12:52:55,087 com.apple.xpc.launchd[1]: (com.apple.xpc.launchd.oneshot.0x10000046.leo[12195]) Service exited with abnormal code: 1
os is 10.11.5
here's a hack to make it open in Mac Terminal:
https://github.com/labor4/ya-appify
I forked this and added option-parsing, overridable icons file, and some other bits: https://gist.github.com/oubiwann/453744744da1141ccc542ff75b47e0cf
Trying to run Electron without using electron-packager.
I can get open MyApp.app
in the Terminal to work.
But not when I double-click from the Finder, or right-click and select "Open".
Here are the repro steps:
- Create
MyApp.app/Contents/MacOS/MyApp
- Modify the shell script:
#!/bin/bash
cd $(dirname "$0")/../../..
./node_modules/.bin/electron .
- Call
chmod +x MyApp.app/Contents/MacOS/MyApp
- Confirm
open MyApp.app
works as intended - Confirm double-clicking in the Finder does nothing
Any help would be awesome.
Edit
Looks like it wasn't working because node_modules/.bin/electron
spawns a child process.
This works as intended:
../node_modules/electron/dist/Electron.app/Contents/MacOS/Electron .
can any one help???
im only new to mac and command line entry im trying to see if any on can turn 2 commands into a ON / OFF switch/toggle? that i can just click to open from desktop or something with a status icon so you know it on or off
ON:
"sudo pmset -b sleep 0; sudo pmset -b disablesleep 1"
OFF:
sudo pmset -b sleep 5; sudo pmset -b disablesleep 0
Thanks so much for this!
I tried the Automater way of doing it, but it wasn't ideal. After removing the parameter variable from my command ("$@"
), it worked fine...the applified app wouldn't launch with it there.
Adding plist
and make sure that schell scripts and plist
values have the same name as the app made it work fine.
You can grab out of my frameworks and just edit the script continained.
https://github.com/thedzy/Run-script-as-an-Applicaiton
How to add icon to this mac app generated?
You can grab out of my frameworks and just edit the script continained.
https://github.com/thedzy/Run-script-as-an-Applicaiton
Thank you for this. Much appreciated.
don't do /Users/--------/Desktop/appify.sh: Permission denied
instead do sh /Users/--------/Desktop/appify.sh
Hi, is there an option to run the app as hidden?
This is the only "appify" script that is working on Catalina. Thanks, friend. Do you want to fork Conky-Mac with me. I have great configs but really haven't done serious code since the 90's in LA.
On an ARM64 Mac, it kept prompting me to install Rosetta; adding the LSArchitecturePriority
to the /Contents/Info.plist
seems to work (although this is cached somehow, so I had to change the CFBundleIdentifier
to get Rosetta to check again):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>run</string>
<key>CFBundleIdentifier</key>
<string>com.testing</string>
<key>LSArchitecturePriority</key>
<array>
<string>arm64</string>
</array>
<key>LSRequiresNativeExecution</key>
<true/>
</dict>
</plist>
I got around that PowerPC issue by ensuring that #!/bin/bash was at the top of my script ;)