我开发了一个小型应用程序,我想尝试并出售它,但我不熟悉如何最好地进行此操作。
我将如何锁定程序以供试用 1。
我将如何处理接受付款?
记住我是一个没有很多钱的单人乐队,我希望有一个免费或低成本、有效、安全且易于实施和维护的解决方案。这不是我有很多经验的东西,因为我通常为公共部门开发,他们购买一个整体的解决方案,而我们从未获得许可。
任何帮助将不胜感激。谢谢,
乙
我开发了一个小型应用程序,我想尝试并出售它,但我不熟悉如何最好地进行此操作。
我将如何锁定程序以供试用 1。
我将如何处理接受付款?
记住我是一个没有很多钱的单人乐队,我希望有一个免费或低成本、有效、安全且易于实施和维护的解决方案。这不是我有很多经验的东西,因为我通常为公共部门开发,他们购买一个整体的解决方案,而我们从未获得许可。
任何帮助将不胜感激。谢谢,
乙
我可以告诉你我是怎么做的。免责声明:您的里程可能会有所不同。这是为了防止随意盗版简单的 WinForms 或 WPF 或其他桌面应用程序。它对复杂的破解不是特别健壮或安全,但它在防止随意盗版方面做得很好。
对于许可,我尝试了几种第 3 方解决方案。对于防止偶然盗版的名义情况,它们都相当容易使用,当然,如果这是您真正应该关注的唯一盗版。
我发现没有一个许可提供商与现有的支付处理器/网关真正兼容。有一些“一体式”解决方案,但我(自由职业者和唯一开发人员)无法接受技术债务水平。我一直在寻找一种简单的方法来从网站上的“立即购买”链接到购买后解锁桌面软件。一些现有的“一体式”解决方案为此目的过度,有些则完全忽略了“购买”方面。
我最终使用Xml 数字签名使用应用程序的私钥对许可证文件进行签名,该私钥从未分发给用户。结果:您在目标机器上有一个用户可以读取的 .LIC 或 .LICX 文件(它是纯文本,除了封装的签名)但不能修改。(或者更确切地说,如果您不知道他们已经修改了它,他们就无法修改它。)这个小文件是整个系统的关键。
当应用程序加载时,它会验证 XML 签名是否有效(使用与应用程序一起分发的应用程序的公钥),如果有效,它会从许可证文件中读取信息,并根据该信息启用/禁用某些功能. 例如,您的许可证文件可能包含产品到期日期或几条独特的机器信息(请始终小心,不要给您的合法用户带来不便……您不希望他们必须重新申请许可证每次更换硬盘时的密钥)。
作为一个额外的(并且更具侵入性)步骤,您可以让应用程序连接到您的服务器,但这会让您陷入服务器停机问题等等。有些开发者愿意忍受这个,有些则不愿意。
现在对于购买部分,有很多选择。Paypal 是最简单的。您可能喜欢也可能不喜欢他们的费率计划,但使用 Paypal 启动和运行绝对是小菜一碟。
为此,您需要 Premier 或 Business 帐户,而不是 Personal 帐户。注意:在 Paypal 文档中,有时会说您需要一个 Paypal Business 帐户。每当他们这么说时,他们实际上是指“Paypal Business 或 Premier 帐户”。
现在为自己创建一个产品网站并自定义您的“立即购买”按钮等。当用户进行购买时,您的网站将收到来自Paypal IPN的 ping ,这是他们的通知服务。此 ping 只是对您网站上定义的 HTTP 端点的调用,它包含您想要的有关购买的所有信息。主要是用户的邮箱...
(好吧,我觉得我应该提一下:Paypal 和大多数其他合法处理器都有一个“沙盒”,您可以在其中测试所有这些,然后再上线。让您对实际上线感到温暖模糊,有钱在线。)
您将使用它在购买后自动向用户发送激活码,这样他们就不必等待 24 小时让您手动向他们发送代码。将此激活码(在这种情况下可以是任何唯一的、难以猜测的数字,例如 GUID,无论是否经过美化)存储在数据库中,并使用您将跟踪以检测重复代码的使用计数。
用户通过您提供的屏幕将激活码输入软件。
软件通过 https 与服务器联系(这是一次性的事情,只有在软件解锁时才会发生),然后说:“嘿,用户刚刚给我的这个许可证代码有效吗?”
如果提供的激活码与销售时存储在数据库中的代码匹配,并且该激活码尚未确认,则成功!
然后,服务器需要构建许可证文件,这是一个极其简单的 XML 或文本文件,其中包含“允许此软件副本执行的操作”。它应该包含什么没有标准,只有一些约定。
服务器使用应用程序的私钥对许可证文件进行签名,并将其作为数据流返回给您的应用程序...
它将其保存为 .LIC 或 .LICX(或您想要的任何扩展名)文件,然后按照步骤 3 检查加载时间。
这对我来说非常有效,而且实施起来很容易。整个事情的关键很简单:信任那些 XML DSig。缺少 LIC 文件时,默认为试用模式。修改签名后,您将切换到试用模式。只有当 LIC 文件存在、有效签名并包含正确信息时,您才(在代码中)打开对“完整”功能的访问权限。
此外,在您的代码中插入多个许可证检查点。我在应用程序启动时执行一个,在空闲时执行另一个,在进入关键功能区域之前执行另一个。因此,如果有人确实反转了代码,而且他们可以,他们至少需要做一些搜索来清除所有的许可证检查。当然,您无法阻止人们绕过这些检查。你只是想让它变得更难一些。
如果你想正确地做到这一点,老实说,我不得不建议为这两件事购买一个值得信赖的第三方解决方案。.Net 有几个许可包(我们将Desaware用于我们的产品,虽然我没有直接与他们合作太多,所以我无法给出详细的推荐。对于我所接触的内容来说,这似乎很简单到)。没有大惊小怪,没有错误,从长远来看,在节省时间方面的回报是巨大的。
第三方支付服务可以为您处理在线信用卡交易,而且总是有 PayPal。谷歌“如何在网络上接受信用卡付款”,你会想出无穷无尽的商户解决方案提供商。
如果您宁愿花时间自己构建许可系统,这个 StackOverflow 线程是一个很好的资源,可以考虑各个方面。
您需要对 .NET 应用程序使用某种形式的软件投影和许可。那里有数百种选择,从非常便宜(以及如何推出自己的文章)到非常强大的商业工具。
您可以考虑CryptoLicensing For .Net - 它提供完整和试用选项(使用天数、唯一使用天数、执行等)。它还配备了现成的许可证服务器,带有用于 paypal、shareit、plimus 等的电子商务集成商。