Creating a limited demo version of an app?

I need to create a demo version of an app. It’s only going to be shared with a couple people. I’d just like it to self destruct after a time limit or number of uses. I’d also like it so it couldn’t be copied. I imagine I could do this with some “real work” but that’s what I’m trying to avoid. Thank you for any suggestions.

let people to add max off record
if it get to max records show a Msg like Demo App

Here’s a simple technique:

  • When the app starts it looks for a hidden file in a location you specify.
  • If not found, it creates the file at the location and puts the current date in it.
  • If found, it reads the date from the file and compares it to the current date. If the difference is greater than your time limit then you prevent the app from launching.

Keep in mind this can be easily circumvented if the user is able to find and remove the hidden file.

Depends on how much work you want to put into it…

  1. Compile each copy with a hard-coded drop-dead date…
    Pro : easy to implement
    Con : requires multiple compiles

  2. Create a routine that connects to a remote server for validatation. Have server send approve/deny code.
    Pro : more secure/flexible
    Con : more difficult to implement

  3. Devise a Public/Private Key system that is stored encrypted on the users computer. This would used metrics specific to their computer as part of their key, thus limiting it to that computer. The encrypted file also contains the expiration date. If done properly, it can detect hack attempts to alter the file.
    Pro : again more secure/flexible
    Con : more difficult to implement

I happen to use #3 (and sorry I can’t share any code as that would expose my specific methodology… but suffice to say I have found no evidence that it has yet been hacked… Could be nobody cared to try… :slight_smile: ). #3 also allows the user to be sent a key to release any restrictions. This key is also stored in the encrypted file.

NONE of these however keep the file from being copied…

Good suggestions, thanks! This is a client for a remote database and I want to show one client what I’ve done for another. Data is not sensitive but I want control it’s use and distribution as much as possible.

I think the hidden file trick might work for both the running limitations and the copying as I know the client won’t go looking for the file.

One strategy that can mitigate this slightly is to store multiple such hidden files (possibly with different names) in different locations. That way, a user would need to find and delete all of them to circumvent the scheme.

I keep a counter of the number of times a person uses an app per launch (e.g. 4). When they reach the limit it asks for a serial number. They can quit and get another four turns. This keeps people happy and using the product, but with the hope they will eventually buy it. Cheapskates will never pay money and are a drain on support.

david, how do u track how many times they have launch?? in a text file or or sqlite file??

Neither, just an Integer variable. They can relaunch and rerun it forever. Not suitable for all apps, but my apps launch then you click a button to perform a function.

i see… the application was not close between each launch…

This was the method I used in a while back… But there was a user here (went by Pony… I believe)… that had a 3rd party tool that tracked and cracked that method in about 30 seconds. His feedback on that drove me to create the more secure Public/Private key method.

My software is crippled unless they have a key from me (not tied to a machine so it’s on the honor system that people don’t pass them around). In addition to unlocking the program permanently, I can generate keys that allow full functionality until a given date, or for a given number of launches. And occasionally the software phones home to check for a list of revoked keys and will disable anything that needs to be (haven’t had to do that yet though).

Anyway, you could do something like that if you’re worried about it. That’s a little better than having to compile a new version with an expiration date every time you want to cripple it.

I use a SQL Statement that check Record count and if more the specific then i delete all record that is grater then example 10.

if the customer buy the app then i send new App copy with out limited.