Jump to content
altryne

Search, Download and Install mac apps

Recommended Posts

Download and Install mac apps. 

 

xscreenshot2014-04-11154338.png.pagespee

 

update 1.1 : There is now a progress window that shows the download

update 1.2 : Uploaded to Packal

update 1.3 : Fixed broken link, fixed download URL

 

screenshot2014-04-11154353.png

 

A simple workflow based on the community managed app list at homebrew-cask

 

Usage : Install <app-name>

 

If the app is in brew-casks directory, workflow will download/extract/mount and install the app.

 

*It won't run over your app though, so if you want to update, remove the app first.

 

Download (Packal  link : http://www.packal.org/workflow/install-mac-apps)

 

As always, feedback is more then welcome, help me test this guys, this took my whole weekend :D

 

Doesn't support pkg. yet, will soon.

Supports aleoop for updates

Edited by altryne

Share this post


Link to post

I really want to put the appropriate icons for each app, but I don't know any API way to get icons for apps. 

Any1 have any idea of how that can be achieved?

Share this post


Link to post

wow~ really powerful workflow, I just tried to install Chrome.app and it works very well and the speed is so fast.

BTW, hope you can add this workflow to the List site below.

Share this post


Link to post

wow~ really powerful workflow, I just tried to install Chrome.app and it works very well and the speed is so fast.

BTW, hope you can add this workflow to the List site below.

 

I did yesterday... and it said it waits confirmation...

Share this post


Link to post

I really want to put the appropriate icons for each app, but I don't know any API way to get icons for apps. 

Any1 have any idea of how that can be achieved?

 

I dont think you can do this without downloading the app.

 

My Question: do you use brew in the background? As in: Will the apps appear as installed when using `brew cask list`? Or do you just use the repository and install the apps 'manually'?

Share this post


Link to post

I dont think you can do this without downloading the app.

 

My Question: do you use brew in the background? As in: Will the apps appear as installed when using `brew cask list`? Or do you just use the repository and install the apps 'manually'?

 

I don't use it... I only use their repository for links to apps and search.

 

I didn't like that they put the apps in /opt and not inside my Applications folder, thus making Alfred unable to launch them, so I built this.

Share this post


Link to post

I don't use it... I only use their repository for links to apps and search.

 

I didn't like that they put the apps in /opt and not inside my Applications folder, thus making Alfred unable to launch them, so I built this.

 

True, but first you can run `brew cask linkapps` to make links to your ~/Applications-Folder (there is a Flag to links to /Applications instead but i dont remember it), but this only creates links which are not entirely picked up by Alfred. BUT: you can simply add /usr/local/Cellar to Alfreds Search Scope, so that Alfred will pick them up without any problems!

 

But if you dont use it, i think your approach is quite good, maybe i will add some lines for me to use brew cask though -- i like to have everything in one place. Still, nice work!

Share this post


Link to post

True, but first you can run `brew cask linkapps` to make links to your ~/Applications-Folder (there is a Flag to links to /Applications instead but i dont remember it), but this only creates links which are not entirely picked up by Alfred. BUT: you can simply add /usr/local/Cellar to Alfreds Search Scope, so that Alfred will pick them up without any problems!

 

But if you dont use it, i think your approach is quite good, maybe i will add some lines for me to use brew cask though -- i like to have everything in one place. Still, nice work!

 

Agreed, but it fixes Alfred compability, doesn't fix countless others, clean my mac for one.

 

In anycase, most of the apps for mac come with their own update functionality, so the update function of cask is meaningless.

 

Also, my workflow haz autocomplete! You can't compete with that with cli now, can you? :P

Share this post


Link to post

Also, my workflow haz autocomplete! You can't compete with that with cli now, can you? :P

 

Well I do have autocomplete for brew, i dont have one for cask, so you get your points ;) (and alfred always looks nicer then cli :D)

Share this post


Link to post

I didn't like that they put the apps in /opt and not inside my Applications folder, thus making Alfred unable to launch them, so I built this.

BUT: you can simply add /usr/local/Cellar to Alfreds Search Scope, so that Alfred will pick them up without any problems!

 

You don’t even need to go through that trouble, you can simply run brew cask alfred, and you get the integration, the command is there precisely for that. The other points are valid, though.

Share this post


Link to post

Download and Install mac apps. 

 

Esrf+.png

 

update 1.1 : There is now a progress window that shows the download

 

4miE+.png

 

A simple workflow based on the community managed app list at homebrew-cask

 

Usage : Install <app-name>

 

If the app is in brew-casks directory, workflow will download/extract/mount and install the app.

 

*It won't run over your app though, so if you want to update, remove the app first.

 

Download

 

As always, feedback is more then welcome, help me test this guys, this took my whole weekend :D

 

Doesn't support pkg. yet, will soon.

Supports aleoop for updates

 

I believe the link is down.

Share this post


Link to post
 

I can't seem to get this workflow to successfully search for anything. Instead, I instantly get taken to the fallback search results, as soon as I type the first letter.

Starting debug for 'Install Mac Apps'

[ERROR: alfred.workflow.input.scriptfilter] Code 1: Traceback (most recent call last):
  File "actions.py", line 50, in <module>
    apps_list = get_apps()
  File "actions.py", line 43, in get_apps
    apps = get_apps_from_github()
  File "actions.py", line 29, in get_apps_from_github
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
[ERROR: alfred.workflow.input.scriptfilter] XML Parse Error 'The operation couldn’t be completed. (NSXMLParserErrorDomain error 4.)'. Row 1, Col 1: 'Document is empty' in XML:
getting data from github
[ERROR: alfred.workflow.input.scriptfilter] Code 1: Traceback (most recent call last):
  File "actions.py", line 50, in <module>
    apps_list = get_apps()
  File "actions.py", line 43, in get_apps
    apps = get_apps_from_github()
  File "actions.py", line 29, in get_apps_from_github
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
[ERROR: alfred.workflow.input.scriptfilter] XML Parse Error 'The operation couldn’t be completed. (NSXMLParserErrorDomain error 4.)'. Row 1, Col 1: 'Document is empty' in XML:
getting data from github
[ERROR: alfred.workflow.input.scriptfilter] Code 1: Traceback (most recent call last):
  File "actions.py", line 50, in <module>
    apps_list = get_apps()
  File "actions.py", line 43, in get_apps
    apps = get_apps_from_github()
  File "actions.py", line 29, in get_apps_from_github
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

Share this post


Link to post

Weird as hell!

Works on my build server fine, filters and everything...

 

I think it's a mac update issue, investigating. Thanx for notifying me

 

 

I can't seem to get this workflow to successfully search for anything. Instead, I instantly get taken to the fallback search results, as soon as I type the first letter.

Starting debug for 'Install Mac Apps'

[ERROR: alfred.workflow.input.scriptfilter] Code 1: Traceback (most recent call last):
  File "actions.py", line 50, in <module>
    apps_list = get_apps()
  File "actions.py", line 43, in get_apps
    apps = get_apps_from_github()
  File "actions.py", line 29, in get_apps_from_github
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
[ERROR: alfred.workflow.input.scriptfilter] XML Parse Error 'The operation couldn’t be completed. (NSXMLParserErrorDomain error 4.)'. Row 1, Col 1: 'Document is empty' in XML:
getting data from github
[ERROR: alfred.workflow.input.scriptfilter] Code 1: Traceback (most recent call last):
  File "actions.py", line 50, in <module>
    apps_list = get_apps()
  File "actions.py", line 43, in get_apps
    apps = get_apps_from_github()
  File "actions.py", line 29, in get_apps_from_github
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
[ERROR: alfred.workflow.input.scriptfilter] XML Parse Error 'The operation couldn’t be completed. (NSXMLParserErrorDomain error 4.)'. Row 1, Col 1: 'Document is empty' in XML:
getting data from github
[ERROR: alfred.workflow.input.scriptfilter] Code 1: Traceback (most recent call last):
  File "actions.py", line 50, in <module>
    apps_list = get_apps()
  File "actions.py", line 43, in get_apps
    apps = get_apps_from_github()
  File "actions.py", line 29, in get_apps_from_github
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

Share this post


Link to post

Why does it put the app in user/name/application? 

 

Sorry for the late reply...It puts they apps there to differentiate between apps you installed personally. And to prevent "overrides".

Also I think that putting apps in /Applications requires permissions. But not sure 

Share this post


Link to post

Like the rest of the folks first say, this is an awesome workflow, very useful and powerful. It follows precisely in what a launcher app is designed to do when you get to extending custom routines to the app. It's simple and specific in how it works and what it does. Plus I believe, it has a couple other great aspects to it that I like which is slightly outside the scope of this thread. But first I'll address why I think it's great for my use. I'm constantly thinking of  ways I can increase my production, using less mouse and more keyboard. So I love discovering these kind of addons for Alfred. Not only is it something I do very often on a weekly basis, but it fits exactly the style I look for when thinking on creating one myself or browsing ones being shared by friendly folks such as the people I notice within this forum community.

 

Secondly, I wanted to mention the beauty of how well this fits Alfred's Workflow design starting with the simplicity of how it was created and how to use it as it follows right along with the way in how Alfred is used alone. It's a good example of how a workflow like this that doesn't sacrifice using more load on the computer resources while peforming such a common task much more efficiently. In fact, I believe it can be also used as an example of easily showing the potentials of what other uses can be added as a workflow.

 

I hope I will eventually be able to share my appreciation in creating a useful workflow and sharing it here that others can find useful.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...