Well, the InnoSetup example uses the Deactivate() function when the example installer is uninstalled. The example also ignore any errors and just lets the customer continue, for example, if the customer has no internet (or is actively blocking the LimeLM servers). That means the customer will still be activated on that computer.
You have a few options:
1. Just leave the example as it is. And force the customer to not block the activation servers if they want to deactivate.
2. Modify the example and/or your installer to not let the customer uninstall until deactivation is successful. So modify this:
// deactivate if activated if ret = 0 then begin ret := Deactivate(True); end;
Obviously, instead of just ignore what Deactivate() returns in "ret", actually listen to the error code and respond accordingly. See TurboActivate.h in the "API\C" folder in the TurboActivate package for a full list of the functions and possible return codes.
3. Or add the DeactivationRequestToFile() to do offline deactivations. Again, see TurboActivate.h for the function definition and possible return codes.
Make sense?