A former community discussing the business of software, from the smallest shareware operation to Microsoft. A part of Joel on Software.
We're closed, folks!
Doug Nebeker ("Doug")
First let me apologize for the length of this post and my ignorance. I know next to NOTHING about web development.
My end goal is a way to sell and license my software online but I don't "get" how the license validation piece fits in with the e-commerce piece. And should a good web developer be able to take care of all of it for me.
I have a "software" program I've developed where the coding is all VBA inside MS Word templates. The templates need to be installed locally (not cloud based).
I want to sell and license the templates over the internet.
My current web company did three things for me:
- They made an installer using a free program (install jammer) that bundles my files into an exe that copies them into place and sets some registry settings that affect MS Word
- They added code in my templates that communicates with a piece to my website to "register" the software when someone buys it.
- They put paypal and google cart on my website so people can buy it.
When I set up a new version of the software with Install Jammer I enter a new sequence number that has to do with the licensing on the website.
This would be great - IF IT WORKED WELL. But so far it never works smoothly or reliably and I'm thinking of starting over, shopping for a new web developer and looking for some pre-built e-commerce solutions (my commerce, stripe, etc.).
I am very confused about how the installation and licensing piece ties into the payment piece.
MY ACTUAL QUESTIONS:
1. Can anyone explain what I need in layman's terms or point me to some info?
- Should my web developer be able to build all the pieces for me, or would I typically have a programmer do the installer and licensing piece?
- if I get a third party piece for the licensing, I assume I need to do something that puts the license code in the exe installation file?
2. Right now, when someone registers my software, if they don't have the right database framework on their computer, they have to download and install it from my site as part of the installation process. I believe this has to do with the database my web site is tied into.
Should that be necessary? I don't think I've ever had to do that to buy software elsewhere.
3. What else should I be asking?
I'm very interested in recommendations for any of these parts of the process. I don't want to do this part of the programming myself other than using the installer to bundle new versions of my software.
Thanks so much for any insight.
"all VBA inside MS Word templates ... installed locally ... if they don't have the right database framework on their computer."
You very much need to find a different "web company." If your templates need to query SQL databases, there should already be pieces of MDAC/DAO/ADO/Jet on any computer that has Office installed. For the life of me, I can't figure out why your web company needs to have a DB runtime on local machines just to verify that the user has a valid license.
I would build the installer yourself, including setting registry values. You probably know more about what Office VBA can do than a company that produces websites. For our in house add-ons, we never had to worry about connecting to an activation server, but I'm sure those service providers can feed license keys to your installer, which will then add them to the registry.
Are you selling a subscription to templates that your customers download individually from your web site? If you haven't developed a web service with a DBMS backend before, yes, your web company should do that for you. But most web companies should be able to whip up something like that in their sleep. Bottom line, for whatever reason, you picked a real loser of a vendor to handle the Internet facing side of your business.
I've re-read your post, and maybe I'm assuming that you can build the installer yourself. If you can't, there are excellent third-party tools for building installers, and if you can't figure out how to use NSIS or InnoSetup or Wix, then spend a couple of thousand dollars on InstallShield. Your installer is the only part of your product that should touch the Registry. If you need to check licenses online periodically, then leave the installer installed on the user's computer. If your Word templates are connecting to servers to validate licenses, they are very vulnerable to being hacked.
"- if I get a third party piece for the licensing, I assume I need to do something that puts the license code in the exe installation file?"
It seems to me we have some world class experts on implementing licensing lurking here, I'll let someone else answer that.
Howard, thank you!
I keep wanting to give the web company "another chance" because they are responsive when I give a specific request (OK it's really 'cause I'm weak and don't want to be mean to them...) but there are many things they didn't mention up front that I think a competent developer would have brought up rather than waiting for me to realized it was necessary.
But I digress...
Right now I am not selling a subscription to the templates, though I am seriously toying with the idea. At the very least I have an optional maintenance agreement that I'd like my payment system to track if it's current and let people update their software.
Just thinking out loud now:
They buy x number of licenses for the template package and say if they want maintenance. They download and install the software on each computer. They open Word, a ribbon for the macros appears. They click the "register" button and it communicates with my website to validate that license. THAT is the point where my current web developers make them install a database piece.
My current developers also said it would be 10+ hours of work if I wanted to move my site to a new web host which I don't know why, something about the back end.
ANYHOW - if I understand: I need to find a programmer who can help me build the installer and flesh out a good licensing process.
Then the payment portion of my (new) website can communicate with that. If I go to SAAS I need something that I've programmed that will deactivate the templates if they stop paying.
I also need to think about volume licensing. Right now I sometimes sell my package to large companies with 100+ users and their internal IT folk write their own a login script that copies everything into place, no licensing protection other than my trust/relationship with them.
It's one thing If I sell a 5 license piece over the internet for each computer to have to register. But if I sell a 100 license piece, no IT guy in his right mind is going to tolerate the idea of manually registering 100 machines.
I am guessing though that there are plenty of programmers already experienced in writing a licensing piece that would work reasonably well without overly inconveniencing/irritating good paying customers.
So does that mean the "Register" button basically asks your web server "should I go ahead and register or not", and passes some sort of license key (maybe that is baked into the installer)? And if the "Register" button gets back a "yes, the license is valid", it installs?
If that's the case, there really isn't a reason for the local database. It's pretty hard to think of any reason for a local database (unless that is where they are storing a license file, and even then it seems silly).
You just need a database on your webserver that holds all of the valid licenses. Quite often a purchase page (hosted by FastSpring, SWREG, Plimus, etc) can call your website at the end of the purchase, and the web page on your site will create a new license, put it in the database, and then return it to the purchase page to be given to the customer.
Then you software gets installed. It also hits a page on your webserver, passing the license ID, and asks the web page to check the database and see if it's there or not.
When I say "web page", it's not really a page that is visible or seen by anyone. Instead of returning nice HTML, it can just return "Yes" or "No" for the page contents. Of course you can get a lot more advanced than that, but it's a start.
@Doug "How does you software know it's licensed?"
This is the process now but I am ready to rethink the whole process:
The company that built my website put some VBA code inside my main Word templates that connects to a database on my the website.
So I put a unique number in the installer, it bundles the files into an exe that does a few things, I upload the software to my CMS and put that same number in a field in there.
The user downloads a demo of the software (which I want to switch to a money back guarantee). If they didn't pay when they downloaded it, there is a "buy now" button on the ribbon in Word.
When they pay, my website emails them a registration code. They click a button in Word to "register" and are prompted for their registration code.
The module my developer put in the Word template connects to the web server and registers them and at that point the software is now theirs.
Each customer gets a unique registration code that they can user for however many licenses they purchased.
@Howard, I did not build the installer but the idea was that once they built the original version, I could easily use a copy of what they did to make new versions of the package.
Seriously, how hard could it be?! But it seems to be a very finicky process where the installer doesn't see new files I've put in the directory it's supposedly pulling from, there are many steps, the website upload part times out or the registration numbers don't match up. When you use the installer it looks outdated and usually says it didn't install right (even though it did) and so on...
I'm sure my ignorance is a big part of the problem, but it seems unnecessarily complicated and fraught with peril. There were more than a few "steps" missing from the instructions I was given. I am afraid to market the software until I have this bullet proof for me to update and my customers to install.
BTW - my developers did suggest InstallShield but at the time I could not afford it. I'm going to look at some of the other installers you suggested.
If there are people on here who do this type of work, feel free to contact me privately...
@Doug, thanks so much, very helpful!
The database is on my web server. I think the problem is that the connection string code they wrote connects with a specific version. I don't do much with databases so I don't know if this is a limitation of VBA in a Word template, or just ignorance/laziness on their part.
But it has caused a few issues -- first it threw an error and they made a change to the connection string code and it worked, but I had to download something to register. Then they upgraded to a new web servers and the next time I tested the registration process, I had to download the database component again. They said it was because the new web server had a different database version.
They acted like that was perfectly normal but I found the process annoying and confusing -- you're trying to register and now you must download and install something else then get back to the registration dialog box in Word on your own? People willing to accept all that clicking around wouldn't want my template package in the first place!
So, it sounds like the installer/VBA code actually makes a direct connection to the database on your webserver?!? Is that right? If so, that's the worst registration system (and least safe) I've ever heard of. Fire your web developers.
Do a little research and see if VBA can make an HTTP request -- just see if you can download the HTML for the www.yahoo.com page to test. I'd be shocked if it can't some how. If you can do that, you don't need a local database or a database connection string on your clients' computers. And even if you can't do it, there are still other possibilities.
As far as installers, I'm a big fan of InnoSetup and recommend it.
>> "1. Can anyone explain what I need in layman's terms or point me to some info? "
Here's some info about the licensing bit of things: http://wyday.com/limelm/features/why/
It's written to be understood by people with minimal or no experience with licensing. If you have any questions or need any help, then please let me know.
>> "- Should my web developer be able to build all the pieces for me, or would I typically have a programmer do the installer and licensing piece? "
Honestly, building licensing "in-house", and building one that's effective, is pretty expensive. Even a "bare bones" hardware-locked licensing will cost you a minimum of $100K (presuming you can get a very cheap, very effective developer).
You'd be better off buying a well designed 3rd party licensing solution. I'm founder of the company that make LimeLM (http://wyday.com/limelm/ ), so obviously I'd recommend that.
>> "- if I get a third party piece for the licensing, I assume I need to do something that puts the license code in the exe installation file?"
Yes. If you're using ours, then we already have the pre-written example scripts and help articles that tell you how to integrate it with your app and/or installer:
>> "2. Right now, when someone registers my software, if they don't have the right database framework on their computer, they have to download and install it from my site as part of the installation process. I believe this has to do with the database my web site is tied into. "
I'm going to second Doug's advice. Don't do that.
>> "Should that be necessary? I don't think I've ever had to do that to buy software elsewhere. "
Because you're connecting directly to your database from the client's computer. Which is a *HUGE* security risk. Huge!
>> "3. What else should I be asking?"
About licensing, there a lot of questions you should be asking. Especially if you're shopping around for a 3rd party licensing. Unfortunately not all 3rd party licensing vendors are honest. Some of them will lie outright.
So you have to learn a bit about licensing. As I wrote earlier, this is a good place to start: http://wyday.com/limelm/features/why/
That was written for the purpose of selling LimeLM, but you can ignore the part about LimeLM and just focus on the facts of well-designed licensing. It covers everything from the basics, to getting pretty deep into the nitty gritty details.
It's also pretty lengthy. We tried to keep it short, but there's only so much information you can cut out.
>> "I'm very interested in recommendations for any of these parts of the process."
Installer: InnoSetup (http://www.jrsoftware.org/isinfo.php )
Payment system: FastSpring (http://www.fastspring.com/ )
Licensing: LimeLM (http://wyday.com/limelm/ ).
InnoSetup is free, and relatively easy to use. It's also actively developed and widely supported.
FastSpring is a payment processor that handle all the details. You don't have to fiddle around with much. They also have competent, friendly, support (a rarity with payment processors). Any good licensing system already has the ability to integrate with them (or other payment system, like PayPal). We certainly do: http://wyday.com/limelm/help/how-to-generate-product-keys-after-order/
LimeLM -- well, like I said, I'm founder of the company that makes this hardware-locked licensing. You'd be hard pressed to find a 3rd party licensing of higher quality (although we do have a couple of competitors roughly on par with us). Also, I'll be glad to answer you questions here or privately.
Tuesday, September 10, 2013
Thanks again, so very much. Wyatt, your answer is very thorough and helpful. I really appreciate it. I'll definitely check out LimeLM $100K for a proprietary solution - yeah, that's not going to happen...
Doug and Howard - you definitely put the fear in me regarding the direct connection to the web server for the registration. Um, oops? I definitely don't want to make my customers vulnerable. FWIW, the code that communicates with the web server is actually in the Word Template VBA (that the installer copies into place), not the actual installer. But it's definitely making a connection to the database on my website.
I've been reading a ton of things today and the #1 thing I've learned is that I don't know what the hell I'm doing. ;-) BUT now I understand enough that I should be able to get the right trained professionals to take care of this headache for me. Many thanks.
Before you decide whether to put license activation in your installer or in an executable, and how complex a license activation system you implement, maybe step back and decide how you want to sell your templates.
- do you want all customers to install a trial version first?
- do you want to sell templates one at a time, or in bundles, or to multiple users in the same organization?
- how likely are users to upgrade or replace their computers, and do you allow one license to cover multiple machines (kind of like how Microsoft sells the Home versions of Office)?
- are users likely to have security restrictions on their computers?
- how strict are you going to be with license terms?
I don't have answers as to which approach is best, it really depends on what your target market expects and is comfortable with. If your licensing process scares away customers, it doesn't matter how good it is. On the other hand, a process that emulates what Microsoft uses for Office might make your templates look more official and professional.
You definitely need to make sure your templates look like they fit with Word in particular and Office in general. They shouldn't trigger UAC prompts on a regular basis and it should be possible to register or activate them without having to leave Word. To accomplish that it might be necessary to go with a simpler licensing process involving a couple of http calls, instead of calling an activation dll. This isn't my field of expertise, but those are questions you need to ask yourself and anyone who is offering solutions.
> I definitely don't want to make my customers vulnerable.
Oh no, you customers are not in any danger. It's your database on your website that might be. Normally a database would not be connected directly to the Internet, because then hackers could just as easily attach to it, drop your tables, look up information, etc.
So you would have a web page that receives whatever you want to put in the database, check the input ('sanitize it'), and then have the web page connect to the database.
None of this is rocket science -- you can definitely figure it out. Just think about what data you want to move where, and how you want to validate it. Once you know that, the technology for doing so becomes an easier question to answer.
>- do you want all customers to install a trial version first?<
I have been doing that but want to switch to a money back guarantee.
>- do you want to sell templates one at a time, or in bundles, or to multiple users in the same organization?<
The templates are bundled though I have a could different bundles. They will be bought by business professionals. Sometimes individuals but more often organizations who will want anywhere from 5 to 200 licenses.
I think I may need different licensing solutions for larger vs. smaller. I can see an individual to 5 people at a company "registering" for each machine. But my larger companies will not "register" a couple hundred computers.
>- how likely are users to upgrade or replace their computers, and do you allow one license to cover multiple machines (kind of like how Microsoft sells the Home versions of Office)?<
I'd LIKE the license to be "per user" so they can put it on their work and home computers, but don't know how the licensing could know unless I pick a number like 2 or 3 machines for each license.
And people do upgrade computers all the time. I don't want to create a hassle for them.
>>- are users likely to have security restrictions on their computers?<<
My bigger clients absolutely. Small ones, usually not.
>>- how strict are you going to be with license terms?<<
Not too strict. I want to focus on indulging the happy paying clients not obsessing over theft prevention.
Most of my clients don't have the time or temperament to try hacking into software. I'm lucky to hold their attention long enough to get them to start using it.
But some are opportunistic and will steal/share if it's easy/obvious. I don't want licensing that's so lame you can just enter the key on any machine and be up and running 100 times.
Licensing is a very complicated subject and pulls in fields of encryption, hashing and security. I'd say it is crucial to have at least a high level view of what is occurring. The good news is it's also really interesting.
I do not use LimeLM but Wyatt does know what he is talking about and his advice is sound.
Thursday, September 12, 2013
Thanks Dan, I was just looking over Wyatt's LimeLM stuff again. The pricing looks very reasonable AND they even have VBA instructions which should resolve my biggest concern of how I link it into my templates.
I a concerned about the hardware locking in the event of PC turnover but I'll read up on that more. They probably have a way for people to get into their account and tell it they've got a new computer.
>> "They probably have a way for people to get into their account and tell it they've got a new computer."
Yes, if a customer loses a computer or they just buy a new one, they can send you an email or give you a call. Then all you have to do is log into LimeLM, search for the product key (or the customer's name, etc.), and click "Deactivate" on any of their existing activations. Then they'll be able to activate on their new computer immediately.
Thursday, September 12, 2013
Am I alone in noticing that this 'Emily' is really hitting all the key words and phrases regarding this area (installer, licensing, user experience, etc...)? It defies belief really. Either 'she' is an intuitive genius at software marketing or ...?
Rock on Emily, rock on!
>> "It defies belief really. Either 'she' is an intuitive genius at software marketing or ...?"
or ... she's a real person with real questions. I certainly don't have any reason to question that.
Thursday, September 26, 2013
This topic is archived. No further replies will be accepted.Other recent topics
Powered by FogBugz