Closed 。这个问题需要多问focused /help/closed-questions 。目前不接受答案。
我开发了一个小型应用程序,我想尝试并销售它,但我不熟悉如何最好地做到这一点。
我将如何锁定该程序以供试用1。
我将如何处理接受付款?
考虑到我是一个没有很多钱的单人乐队,我希望有一种免费或低成本、有效、安全且易于实施和维护的解决方案。我在这方面没有太多经验,因为我通常是为公共部门开发的,他们购买整个解决方案,而我们从未获得过许可。
任何帮助将不胜感激。
谢谢,
B
我可以告诉你我是怎么做的。免责声明:您的里程可能会有所不同。这是为了防止简单的 WinForms 或 WPF 或其他桌面应用程序的随意盗版。它对于复杂的破解来说并不是特别强大或安全,但它在防止随意盗版方面做得很好。
对于许可,我尝试了几种第三方解决方案。对于名义情况,它们都相当容易使用防止随意盗版 ,这当然是您真正应该担心的唯一盗版问题。
我发现没有一个许可提供商与现有的支付处理器/网关真正兼容。有一些“一体化”解决方案,但技术债务水平对我(自由职业者和唯一开发人员)来说是不可接受的。我一直在寻找一种简单的方法,从网站上的“立即购买”链接到购买后解锁桌面软件。一些现有的“一体化”解决方案对于此目的来说有些过分,有些完全忽略了“购买”方面。
我最终使用了XML数字签名 http://msdn.microsoft.com/en-us/library/ms229745.aspx 使用应用程序的私钥对许可证文件进行签名,该私钥永远不会分发给用户。结果:您在目标计算机上有一个 .LIC 或 .LICX 文件,用户可以读取该文件(它是纯文本,除了封装的签名)但不能修改。 (或者更确切地说,如果没有你,他们就无法修改它knowing 他们已经修改了它。)这个小文件是整个系统的关键。
当应用程序加载时,它会验证 XML 签名是否有效(使用应用程序的公钥,该密钥is 与应用程序一起分发),如果有效,它会从许可证文件中读取信息,并根据该信息启用/禁用某些功能。例如,您的许可证文件可能包含产品到期日期或一些独特的机器信息(始终小心,不要因此给您的合法用户带来不便......您不希望他们必须重新申请许可证每次更换硬盘时的密钥)。
作为一个额外的(稍微更具侵入性的)步骤,您可以让应用程序连接到您的服务器,尽管这会让您遇到服务器停机问题等等。一些开发人员愿意忍受这种情况,而另一些则不愿意。
现在对于购买部分来说,有很多很多的选择。 Paypal 无疑是最简单的。您可能喜欢也可能不喜欢他们的费率计划,但使用 Paypal 启动和运行绝对是轻而易举的事。
为此,您需要高级或商业帐户,而不是个人帐户。注意:在 Paypal 文档中,有时会说您需要一个 Paypal 企业帐户。每当他们这么说时,他们实际上的意思是“Paypal Business 或 Premier 帐户”。
现在为自己建立一个产品网站并自定义“立即购买”按钮等。当用户进行购买时,您的网站将收到来自贝宝IPN https://www.paypal.com/ipn ,这是他们的通知服务。此 ping 只是对您网站上定义的 HTTP 端点的调用,它包含您需要的有关购买的所有信息。主要是用户的电子邮件...
(好吧,我觉得我应该提一下:Paypal 以及大多数其他合法处理商都有一个“沙箱”,您可以在上线之前测试所有这些内容。这确实会给您带来关于实际上线的温暖模糊感,因为钱就在网上线。)
您将使用它在购买后自动向用户发送激活码,这样他们就不必等待 24 小时让您手动向他们发送激活码。将此激活代码(在这种情况下可以是任何唯一的、难以猜测的数字,例如 GUID,无论是否经过美化)存储在数据库中,并使用您将跟踪的使用计数来检测重复的代码。
用户通过您提供的屏幕将激活码输入软件。
该软件通过 https 与服务器联系(这是一次性的事情,仅在软件解锁时才会发生),并说:“嘿,用户刚刚给我的这个许可证代码有效吗?”
如果提供的激活码与销售时存储在数据库中的代码匹配,并且该激活码尚未得到确认,则成功!
然后,服务器需要构建许可证文件,这是一个极其简单的 XML 或文本文件,其中包含“允许该软件副本执行的操作”。对于它应该包含的内容没有标准,只有一些约定。
服务器使用应用程序的私钥签署许可证文件 并将其作为数据流返回到您的应用程序......
它将其保存为 .LIC 或 .LICX(或您想要的任何扩展名)文件,然后按照步骤 3 检查加载时间。
这对我来说非常有效,而且实施起来很容易。整个事情的关键很简单:信任那些 XML DSig。当 LIC 文件丢失时,您默认为试用模式。修改签名后,您将切换到试用模式。只有当 LIC 文件存在、经过有效签名并包含正确信息时,您才能(在代码中)开放对“完整”功能的访问。
另外,在代码中插入多个许可证检查点。我在应用程序启动时执行一个操作,在空闲时执行另一个操作,在进入关键功能区域之前执行另一个操作。因此,如果有人确实逆转了代码(而且他们可以),那么他们至少需要进行一些搜索以清除所有许可证检查。当然,你无法阻止人们绕过这些检查。你只是想让事情变得更困难一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)