mlapworth (5th April 2010)
One potential issue I can see with item 2 in your list is what happens if staff want to use Task Magic on a computer that isn't always connected to the school network e.g. their school issued laptop which they almost always take home with them? Despite the program having been successfully registered previously, Task Magic will not work because it won't be able to find the registration data on the network.
For item 3, another thing to watch out for when users replace files with newer copies of the same file are the Windows Installer file versioning rules. The default file versioning flow charts show how this process works for unversioned files like the ones in your Samples folder. You would need to test out this scenario thoroughly to make sure it works perfectly (both installation and uninstallation). There's nothing worse than an installer which leaves files behind after it has been uninstalled.
What about something like this?
1) An MSI that performs a per machine installation with files stored uncompressed externally (as described above).
2) The Task Magic MSI copies a license file (called something obvious like "tm.license" or "tm.lic") to the install folder during installation. This would be located in the same folder as the MSI. In order to do this as part of the installation you would need to include some sort of dummy license file which will have to be overwritten with the real license file BEFORE Task Magic is deployed to computers. When Task Magic runs, it verifies the license file and works as normal if everything checks out. If there is a problem or it can't find this file, either...
* Display an appropriate message telling the user to contact thier IT Dept. for assistance or the person responsible for the installation.
* Fall back to a mode where the user can't save anything, the program has very restricted functionality or doesn't work at all until the correct license file is supplied.
* Check an optional pre-defined registry key which specifies an alternate path to the license file. Some customers may want to keep the license file in a central location on the network for security reasons (although this would prevent use of the program at home). For example...
3) IT Manager/Technician/computer-literate teacher could download a newer version of your MSI (and associated files) and overwrite all of them with up-to-date copies of the same files. If they are on a CC3 network they can simply re-allocate the package to install the latest version.Code:[HKEY_LOCAL_MACHINE\SOFTWARE\MDLSoft\TaskMagic] "License"="\\ServerName\ShareName\TaskMagic\tm.license"
Thanks for the replies. I really appreciate the time taken to ive me your considered responses.
I agree with what you say about the honesty of schools / technicians / IT staff in UK schools, and I have had no problem with selling a version that didn't need registering at all. BUT what I am trying to do now is come up with one version of the TaskMagic exe files that can work as a single user, 10 user or site licence version, and that can be used for the UK as well as for other areas where I am told that trusting in the honesty of schools and their employees is not a good idea. I could carry on with the same setup in the UK as I have always had, but this would necessitate separate versions of the exe files, and I'm trying to make things simpler (for me at least ).
"One potential issue I can see with item 2 in your list is what happens if staff want to use Task Magic on a computer that isn't always connected to the school network e.g. their school issued laptop which they almost always take home with them? Despite the program having been successfully registered previously, Task Magic will not work because it won't be able to find the registration data on the network."
- My idea was that either
(i) laptop users would install the software separately to their laptops directly from the installation CD, registering their copy directly via the internet, or
(ii) whenever the TaskMagic programs are run on any computer, they will look in the specified location for the reg details, and if the same details are not already present on the local machine, the details would be copied to the local machine (to the all users directory, for example, or to the registry). Would that be feasible? This would mean that the reg info should always be present on the local machine.
My idea is that there will be a splash screen - a bit like the one suggested by Arthur - which will say who the software is licensed to and what type of licence it is.
I see what you mean about making things simpler. It would definitely be much easier to sell the same version to both UK and international customers.
For single and 10 user licenses perhaps an internal license server may be the best way to go then, with an "offline" mode like Valve's Steam software has. If Task Magic can't contact the license server after 30 days it just stops working (in the same way your trial does). A longer period of time like Nephilim suggested would be much better though to account for the summer holidays or pregnant teachers working from home.
For site licenses, you could do away with the license server requirement and instead get the program look for a file on the local HDD instead. This could be one of the selling points for the site license to encourage people to buy this version in the first place or upgrade from the single/10 user licenses.
Last edited by Arthur; 5th April 2010 at 12:38 AM.
Where do you currently store your registration data? – in the registry I’m guessing?
I don’t think you are going to find an easy one size fits all solution but to amalgamate some of the suggestions in this thread, how about this possibility:
(Given that you’d like to only have to maintain one version and that we’d like to avoid per machine registration; this should only require a very simple change to your main program)
- Issue your software as an MSI (almost) exactly as it is now.
- Allow people to register by hand if they wish or if they only have a few licences.
- Issue an additional MSI to site-wide licence holders which does nothing more than set a few registry keys in HKLM with data about the licence owner/school info.
- Your software then simply checks for that key:
- If its there, then don’t bother with all the registration checks, allow the program to run and display a splash screen detailing ownership/usage permissions etc.
- If the key is not there then perform whatever checks you currently perform to see if the program has been registered by hand.
You only have to maintain one program.
Not a big change to your current code base to accomplish the changes.
Network admin will be happy with the simple install.
Home users / staff laptops not on the domain will be able to use the program.
Upgrades will not affect the site licence side of things.
Not super secure in a software protection sense (although you could scramble/encrypt the data in the registry keys to help)
How does that sound?
Last edited by Arthur; 5th April 2010 at 02:50 PM.
Thanks for your reply, Kipling.
You asked about the current storage of registration data: the current version of TaskMagic doesn't require registration at all.
I wasn't really thinking of using HKCU or the docs folder as the main store for reg data. This was just an additional thing done automatically by the program so that if someone installs to their laptop via the network (or however that would work), a copy of the registration info would be stored locally so that the user could use the software on their laptop when not connected to the network. What I had in mind was:
a) by default, require registration on each machine over t'internet.
b) BUT allow a path to be specified in tm.config before installation, telling the software where to look for registration info. This means the person installing the software could specify a location on the network to store the registration data, and registration need only be done once.
c) each time the programs are run, they look for the registration info in the specified location (if no location specified then they'd look in the programdata folder and/or the HKLM section of the registry).
d) if there is a specified path in step c above, and this path is available, and regsitration data is present at that location, copy the data from there to the local machine (BUT THE QUESTION IS WHERE? HKCU was what I suggested as a possibility in my previus post, because Arthur said that user permissions would not allow the data to be stored in HKLM or in the all users directory / program data directory).
e) if there is a specified path at step c, but the path is not available, look for the data locally (eg. in HKCU or wherever is the best place to store this - see d above)
f) if the data canot be found in any of the above locations, presumably it hasn't been registered, so show the registration screen, requiring the user to input the registration key provided, and to be connected to the internet.
g) The first time the school technician installs and runs the software, s/he will arrive at step f above. If they have specified a network path to store the registration data by modifying tm.config before installation, no other users will need to register, unless the network installation isn't applied to their particular computer.
Steps d and e are only really needed for those situations where a computer has the programs installed as part of the network installation (and so has the tm.config file installed telling it to look on the network for registration info) and that computer is then used without a connection to the network.
Would this work? If so, where is a good place to put the reg data in steps d / e above?
I like your idea Kipling. But I'd like to go one step further in the sense that, if possible, as well as having only one exe file, I'd like to have only one installation CD (ie. avoid separate single user / 10 user / site licence versions).
Crazy Talk uses a similar system, but goes one step further by actually negating the serial number once registered, so that you have to contact the company to get new ones should you wish to reinstall. I know schools who have refused to purchase it due to the amount of network maintenance time it would cause. Nice software. Lousy licensing method = lost sales.
Last edited by Dos_Box; 15th December 2011 at 01:19 PM.
On Vista & 7, you also want to avoid getting into a situation where registry keys and files are being silently redirected to other locations due to UAC virtualization, which happens when a standard user tries to save to protected areas of the file-system and registry. The article below has some really good suggestions on what to do on those OSs.
Last edited by Arthur; 5th April 2010 at 03:43 PM.
I know that if I am creating or setting registry keys during installation, these should be made in HKLM, but I'm attempting to use a method whereby registration is separate from installation (in order to avoid custom actions). Registration is required if no registration data is found - but once the person installing the software has registered it (following installation), the registration data will be created on the network drive and no other users / computers connected to the internet will need to register.
So the person installing the software can specify a network path to store the registration data. (no need to store it in HKLM)
The ONLY time the locally stored data would be needed is if a computer that has had the software installed with a modified config file (ie. telling the computer to look on the network for the reg data) is disconnected from the network, and the user tries to access TaskMagic.
I also meant to add that the registration info would be kept independently of the exe files. So if you uninstalled / reinstalled / updated the software, there would be no need to register again.
The type of system I would like is where there is a licensing app/server set up where the license keys and such put into then when the application is installed it is told there is a local licensing server to connect to, And if that server can't be found or not told to look for it during install it can default to outside registering.
This way you can do things like have 20 concurrent user licenses and install it on all the systems but only 20 users can open and run it.
And some diagram fun for those that like that stuff:
Also what’s to stop someone with a 10 licence version, installing it on a hundred pc’s and then deleting the registration data off the server. All 100 machines will happily look to their local licence copy and work without blinking.
How about this (based on sibelius’ licensing model).
- You supply only one CD/download.
- The CD has the user program and a licence server program.
- If the purchaser only bought one or two licences then they install them by hand and register with you over the internet as they currently do.
- If they bought say 10 licences, they:
- install the licence server on a server (or pc that is always on)
- start the licence server and “install” a key/file/code emailed from you which dictates how many concurrent users can run the software.
- Modify a file in the install pack (you suggested tm.config I think) to point to the licence-servers IP address/name.
- Push out the (now modified) user program over the network to all clients or run it from a network share etc.
- When a user launches the program it queries the licence-server so ask permission to run (the licence server keeps a count of how many users are currently using the software).
For home users there’s no simple solution. There will have to be an element of trust, you could use the same key/file/code that the licence server uses and have your client program look locally if the licence-server can’t be found; if the key/file/code has been installed locally then allow it to run. Not much protection but it could have the school details embed within the key so al least there’ll be a splash screen.
Good on the network because it can be installed everywhere.
No chance of accidentally going over licence because the licence-server will prevent that.
Allows you to sell more licensing options, e.g. 100 user, 200 user, 300 user etc.
More involved changes to your current code base.
A licence server to write/test.
Doesn’t address home users needs too well.
There are currently 1 users browsing this thread. (0 members and 1 guests)