Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm the IT guy for a small software development company. We have software that is downloadable by customers that purchased a license via our web site. I'm trying to find a solution to better manage the software download process. With each new release we have builds for various platforms and configurations (totaling about 50 different individually downloadable components). Each customer only has access to a small subset of these components. I'm currently "managing" all of this with some perl scripts but it's pretty crude.

I'm thinking about a web application that would allow customers to login and view the downloadable components that they have purchased. I don't need anything fancy for dealing with purchasing the software through our web site or anything like that. At least initially the access to the individual downloads will be manually managed on a per customer basis. I'm thinking about using the Project Drupal module but it would need some heavy modifications to do what we need. Is there anything better suited for this?

share|improve this question
    
What platforms are you targeting? –  Richard June Sep 18 '10 at 13:17
    
Our web server is currently running Linux so that's the platform I'd like to target. I suppose if I found a great piece of software that was built in ASP.NET I'd consider setting up a Windows server for this. –  Josh Sep 21 '10 at 14:56
    
Also looking for a similar application - platform is not an issue - we will install a server to match a suitable product. Have added bounty to encourage responses. –  Martin Nov 9 '10 at 9:32

6 Answers 6

Why not Django?

A model consisting of all the parameters (build number, filesystem location, name, and so on), and use built-in admin to edit and add those objects (or do it programmatically with a build script). Extend the built-in user object, wrap some generic views (object_detail, object_list) to display the list(s) of your products, etc. A simple join is all you need to display the list of products per user, which is abstracted with a decent ORM (or, use SQLAlchemy, if that's your bag.)

That's just an elevator pitch of how I personally would go about it. Django is designed to be "batteries included", so you'll find that most things (tedium you wouldn't really care about much for this application, really) are all set to go. User authentication, admin panel, etc.

It's Python, so I'm unsure if that's your skillset. However, I think it would be a solid tool for the job, given the information provided. If you're a fulltime sysadmin, I highly recommend learning it.

share|improve this answer
    
I second that, i became 2 x as useful as an admin once i learned some python... Its a powerful language that fits to sysadmin extremely well.. +1 –  Arenstar Nov 14 '10 at 20:25

You're looking for "distribution management software". I think most software companies roll their own system or use a third party service like Share It or Kagi. There are a few free tools tools like WebAuth (http://bibledatabase.org/addon/sellsoft/index.htm) and paid tools like the one from TechSys (http://www.tecsys.com/solutions/distribution-management/benefits.shtml).

One person has mentioned any e-commerce tool that supports digital downloads, which is another possibility.

I think the problem with all the solutions -- even the paid ones -- is that it's like trying to kill a fly with a shot gun. Rolling your own solution allows you to get it tightly integrated with your build procedures. Of course, other tools can be tied together as well, but probably not as well as something tailor made.

share|improve this answer
    
Unforutnatly windows base platforms don't have any standard way of installing software into the operating system. Things have evolved with standard installers (msi) but it's not network aware and has limited scripting capabilities. Windows has no notion of a software repo, so you'll left with downloading software by hand and installing it. Perhaps it's time for microsoft to think about this problem and solve it in windows 8. –  The Unix Janitor Nov 11 '10 at 10:33
1  
One answer has suggested Django, and if I were going to build such a system, that's what I would certainly use. Django's ORM and quick admin interface would make relatively quick work of the core data requirements and python is a powerful and flexible tool to use for automation and integration. –  bogeymin Nov 11 '10 at 13:08
    
@user37899 While none of this is germain to the topic, of course windows has a standard way of installing software (and has had one since 2000, and was available for use since then for win95 on up). Windows installer is the standard installer that you mentioned as "msi". As far as a software repository goes, see Group Policy Software Installation overview:technet.microsoft.com/en-us/library/cc738858(WS.10).aspx –  Jim B Nov 14 '10 at 20:38

If you're handy with PHP it'd be a breeze to develop something like this using codeigniter or Kohana.

The simple solution is that a database would hold all your different software packages and URLs to those packages. Then the login or customer name would be a 1 to many link to the software packages. Whip up a downloads page and you can show the list of packets linked to that user.

That's the simple approach. The more complex/secure one would be to ensure the URL's only work for the user who is logged in. And it'd be sensible to ensure that the URL's stay fixed for that user. I'm not entirely sure how to do it so that the web server handles the transfer for better performance rather than PHP, but there will be a way.

share|improve this answer
    
Thanks for the suggestion but we are specifically wanting to buy a product in as we have negligable web development resource in house. –  Martin Nov 9 '10 at 12:25
    
Sure. I suggested this because it'd only take a couple of days to knock up a working prototype. You might spend that looking around. I wasn't sure how savvy you are with basic coding. –  Matt Nov 9 '10 at 22:12

An e-commerce solution that supports digital products as downloads would be well suited for this purpose I guess.

See http://en.wikipedia.org/wiki/Comparison_of_shopping_cart_software under "General Features" solutions with "Digital Downloads".

Popular e-commerce solutions I would recommend are osCommerce, Magento and Spree. http://www.oscommerce.com/ http://www.magentocommerce.com/ http://spreecommerce.com/

Magento has a "Digital Downloads" extension, but it costs $500. http://www.magentocommerce.com/magento-connect/ITPDX+LLC/extension/1047/digital-download-enhancement/reviews

Spree has a free "Downloadable" extension. http://spreecommerce.com/extensions/38-downloadable

share|improve this answer

You could use a content management system to control access to the purchased items. That is what CMSs are for after all.

share|improve this answer

Check out whmcs.

It has a licensing module - and very inexpensive to try out

www.WHMCS.com

It is what runs a large number of hosting organizations... but works well for what your asking...

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.