-1

Out of fear that someone will downvote this question because piracy is not preventable, I want to make it clear that the system I have put in place is only to deter pirates, and I am asking this question to ensure that it causes as little annoyance possible.

Currently, my system uses a combination of the MAC address, CPU Type and the HDD serial to create a hardware fingerprint (not the problem). Using Windows all my life, I have been pretty naive towards the simplicity of installing (and 'uninstalling') applications on OS X. At the moment I am storing this hardware fingerprint in a location in ~/Library/Application Support (so that Administrator passwords aren't required) as I had the intention of removing the application with an uninstaller. I know that some Mac applications use uninstallers, but personally I don't want to intervene with the simple drag 'n' drop process that is the convention.

I am going to implement functionality that will check the online database the see if the fingerprint of the machine running the software corresponds with the fingerprint that was bonded with the serial key upon licensing the software (If the user has an internet connection). Though, that would still require a way to store the serial key that was used and I want my users to be able to run the software without an internet connection.

Does anyone have any experience in this field or have any suggestions as to how I could still allow my software to be installed and removed using drag 'n' drop while still implementing my licensing system?

Thanks in advance.

Perception
  • 79,279
  • 19
  • 185
  • 195
Andy
  • 3,600
  • 12
  • 53
  • 84

2 Answers2

1

Instead of storing the hardware fingerprint, just calculate it when you need it.

I do not know if the Preferences API would work for you in this situation, otherwise it could be used.

Thorbjørn Ravn Andersen
  • 73,784
  • 33
  • 194
  • 347
  • Thanks for your answer and sorry for the slow reply. The reason why I store the hardware fingerprint is to make sure that pirates having tried to crack the program in this way. The software checks if the file exists, if it doesn't the software is not licensed, similarly if the hardware fingerprint stored in the file is not same as the one the software generates, the software is counterfeit. (By the way, the file in which the hardware fingerprint is stored is encrypted) – Andy Apr 08 '12 at 13:24
  • Also, I do not understand how the Preferences API would help - as far as I can see, it is just a different location for the file (that requires Administrator permission). Really, what I need is someway of deleting the file when the user deletes the Application. I don't suppose the file needs hiding and the application does need other resources, so would it be acceptable to ask the user to drag a folder in to their Applications, and they just delete that folder when they want to remove the software? – Andy Apr 08 '12 at 13:30
  • I see no reason why the fingerprint needs to be stored, as you validate it online anyway. – Thorbjørn Ravn Andersen Apr 08 '12 at 15:41
  • I do validate the software online where possible but I am want to allow my users to run the software offline as well, in which case I need to store the fingerprint ( I did think I said this in the original question ) – Andy Apr 08 '12 at 16:06
0

I don't suppose this is actually a proper, nor does it have a common answer. I also think I've probably jumped the gun and asked the wrong questions because in my more recent question that I asked I got the information I was looking for. So, the answer I really wanted/needed:

(It turns out) It's okay to leave files behind in Application Support (and Preferences). Some would even consider it desirable. So I'm going to store the licence file and a configuration file in a subdirectory of ~/Application Support and let my users decide where to put their 'database directory'. That way everyone wins (well, pretty much)!

Just an FYI, The problem wasn't with what I had, it was with where it went (file wise).

Community
  • 1
  • 1
Andy
  • 3,600
  • 12
  • 53
  • 84