Ship a data file with the package containing:
- The name of the customer in full.
- The date it was shipped.
- The date it should expire.
- A checksum of the whole file so it cannot be edited.
Every time you run:
- Check that the checksum is still valid.
- Check that the file mod date does not suggest that the file has been tampered with.
- Display the customer name in a splash screen.
- Make sure the mod date on the file is not later than the expiry date.
- "Touch" the file to make sure it's mod-date changes to current date.
- Make sure the "Touch" worked.
This way:
- It is difficult to make a copy as the mod date will change.
- It is difficult to distribute copies to others as the source is easily available.
- It should be possible to detect most inexpert tampering.
Obviously - without adding hardware - it is impossible to cover all bases but I have found this scheme works well.