#3 - my solution requires that the SERVER creates the printing file...so, if you application is www.awesome-app.com, your application would send the data that needs to be printed to the server, the server responds with a unique print-id, and then your open a new browswer window to www.awesome-app.com/print.ashx?print-id=12345. The response is the PDF/HTML/XPS/whatever file that the user prints. In out-of-browser mode with no online connectivity, the only thing you can do is open a "Save As..." dialog and save the file to the users computer - the user would have to find it and open it after. There really is no good way to handle offline printing right now. #2 - if that's the case, then that's probably the way to go. --- This is a bit off topic...but here is my take on licensing: Yes, licensing is a real pain...it's always a compromise between pain-in-the-ass-ness and "trust". In your case, the user has to go online to get the application anyway...just have them enter their license key before the application lets them do the offline install. It is my belief that you should protect your application up to the point where someone has to obtain a cracked version to use it without purchasing it. Anything more is a waste of time, because your application WILL be cracked if it is worth cracking. Silverlight applications are especially easy to crack if they work offline. Anything less is bad too, because a lot of users, even business users, will just re-use a "legal" cd-key if they can, because for some reason that doesn't seem as "bad" as actually cracking a program. Our applications verify their licenses every 30 days. While the application is running, a background thread tries to contact our server and update the machine ID that it is installed on. If it can't contact our licensing server within 30 days, the user gets a 15 day warning. If it still hasn't checked its license, the application gets locked out until it can. If a new machine ID checks a license registration, the old machine ID gets added to the uninstall list. If the app is run on the old machine, the license verification check fails and the user gets an error message that the license was re-assigned to another machine. This takes care of 95% of our license re-allocation problems. The only problem is if they want to move their license BACK to the old machine...in which case they can call us :) Also, if our domain is no longer registered to us, the licensing system shuts off, so their apps still work if we go under :P That'