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