# Writing trial



## shannen (Jul 15, 2003)

Hi,
I was trying to write a trial implementation for my sample program and would like to get some ideas on the best and fastest way of implmenting it in Mac. Appreciate for all help render. Thanks in advance


----------



## Captain Code (Jul 16, 2003)

The easiest way I can think of is to use a file stored on the hard drive.  You should make it binary and invisible and possibly encrypted so they can't change the trial end date.

Create that file the first time the program is opened on the computer, and check the current date against the one in the file to see if they still have time left in the trial.

The reason for it being binary is so that they can't open the file in a text editor and change the date.


----------



## shannen (Jul 16, 2003)

Sounds good. However, this run a risk of being able to locate the file, delete it and reinstall the program to make it work again. *sigh*, looks like this is quite a difficult area to tackle.


----------



## Captain Code (Jul 16, 2003)

Yes, that's true.  You could put the file in a very obscure place that isn't even visible in the Finder, such as /usr or /etc.  Most Windows apps use the registry for this I think, but I don't believe there's anything like that in OSX.  

You can also make the file name really strange like a bunch of letters and numbers, that noone would be able to know what it is.

Another thing you could do, is write the same file to more than one place.  If they did delete one, then there'd still be another copy on the disk.


----------



## shannen (Jul 16, 2003)

sounds cool. i guess that is the best that could really be possible. Yap, on windows, i used the registry concept and sort of encrypt the keys such that it is not easy to find and name the keys very similar to those used by windows. Will try out and thank you very much


----------



## Captain Code (Jul 16, 2003)

No problem.  Good luck with your program.


----------



## shannen (Jul 16, 2003)

btw, i tried creating a splash screen that has buttons ( try, quit ) for user selection before the launch of my program. I had made the splash screen modal but it cant seem to stop my main program from running until user clicks some stuff ( the splash screen loads, followed by my main program) ? Any idea how I can intercept and hault it? Thanks


----------



## shannen (Jul 16, 2003)

found the way to do it. Thanks everyone. For the benefit of those who dont know, you can use RunAppModalLoopForWindow to get your window into modal state and use QuitAppModalLoopForWindow to end it.


----------



## Arden (Jul 16, 2003)

Is there any way you can make the program modify itself to determine when it was installed and when it won't run anymore?

And what kind of program are you making in the first place?


----------



## binaryDigit (Jul 16, 2003)

One note on this.  Notice that there is not a single application out there has has not been cracked (at least not one where someone who was interested enough to to bother to try it).

You have to ask yourself why are you trying to limit its use and how much effort you're willing to put into doing it vs how effective it will be.  There is no completely fool proof solution.  You can do the hidden file thing, until one person finds it and posts it somewhere.  You can do the self modifying executable thing which will work until they simply reinstall.  Almost ANY attempt can be foiled by someone actually patching your executable to simply jump over your code to check for validity (and of course posting the patch).

If you do go down this road, be darn sure whatever you do absolutely does not interfere with your apps regular use.  Nothing will lose you potential customers faster than a PITA copy protection scheme, or one that's flakey.

One approach is to simply state in your EULA that they can use it for X period of time and depend on the honour system.  Not very sexy I know, and kinda giving in, but like I said, it just depends on how much time you want to spend on something that eventually will be defeated.

Another approach is to deliver a limited functionality version.  Be sure to build a version that truely has those functions missing vs disabled (as someone can figure out how to activate the disabled functions).  Not knowing your app it's hard to say what functions you can disable, but you can usually do things like Save or Print.


----------



## wiz (Jul 18, 2003)

yea i agree.. 
if u've designed ur app well enough.. u can just keep some options permantly disabled. *likewise tease ur customers into buying the full ver*


----------



## shannen (Jul 18, 2003)

hey everone, thank you all for so much inputs. really appreciate it. will look into the various possible ways suggested.


----------

