【问题标题】:Trial period for WPF app and ClickOnceWPF 应用程序和 ClickOnce 的试用期
【发布时间】:2014-05-21 08:47:45
【问题描述】:

我们正在使用 ClickOnce 为 beta 测试人员部署 .NET WPF 应用程序。我们想设置一个过期日期,在此之后应用程序不再打开。第一次安装后的固定日期或 x 天都可以。试用后,我们要求用户从他们的计算机上卸载应用程序。如果他们不这样做,我们希望该应用不再打开。

具体要求:

  1. 无法通过重新安装或任何其他方式重置时间
  2. 该应用也应离线运行,无需访问互联网,因此每次运行应用时检查 Web 服务器并不是最佳解决方案
  3. 应用的后续更新不会影响到期日期
  4. 我们希望能够通过向用户发送新的激活码或类似的方式随时延长试用期

我正在寻找一些现成的解决方案来解决这个(很常见的)事情,至少有一些基本的机制可以开始工作。

【问题讨论】:

  • 这听起来很难执行 - 您可能只能做出最佳尝试来执行此操作,因为客户端可以控制自己的机器并最终可以绕过您的应用程序包含的任何保护.返回身份验证令牌的 Web 服务可以工作,但您需要唯一标识目标机器,并防止用户复制 Web 服务响应和激活。在某处(注册表)添加标记可能会劝阻普通用户,但技术用户可以找到并删除密钥,从而允许另一个试用期。
  • 听起来很多控件仅用于 beta 测试。目的是什么?如果这是一项收入问题,那么为什么不保留关键功能或限制某些功能。
  • Charleh,链接很好,看起来符合我们的要求。
  • Blam,这不是收入的事情。我们希望公开所有功能以进行测试。我们只是不希望任何早期版本的软件“挂”在任何人的计算机上。我们现在看起来也很彻底,因为无论如何我们在发布版本中都需要一个许可证控制系统,如果它以同样的方式工作会很好。

标签: .net wpf clickonce trial


【解决方案1】:

我在一个项目中使用了Rhino Licensing(*),它似乎涵盖了您的大部分用例。教程见HereRhino code on GitHubRhino code direct download (zip)

但是,如果某人有足够的决心,那么没有什么可以使用您的代码阻止他们

Rhino 的工作原理是为您的用户生成一个许可文件,其中包含与日期相关的信息。这是经过加密签名的,应用程序代码验证它一切正常。但它需要被打败的只是修改你的代码以取消调用来判断许可证是好还是坏。

我对有人修改我的代码的解决方案是“继续做”,因为我将使用 不能 复制的数字证书对我的代码进行签名。所以我总是可以说“嘿,这是真正的代码,如果你的代码不匹配,那么有人做了什么来修改它?”。低级恐惧的东西,但除了亲自站在每个用户身边并让他们做事之外,你无能为力。

(*) 我确实是从基本代码开始的,但后来又把它搞砸了,以获得符合我愿望的东西。

【讨论】:

  • 那么...你自己实现了,然后?
  • 我无法使用提供的原始链接找到任何实际的源代码(或示例或文档)。如果您有这些资源的链接,您可以将它们添加到您的答案中吗?
  • @BTownTKD LHS 该页面的“下载”一侧hibernatingrhinos.com/downloads/rhino-licensing/latest
  • 如我所说;该链接不包含源代码、示例或文档。那是一个带有 BSD 许可证文本的二进制文件。
  • @BTownTKD 我使用了大约 75% 的 Rhino 代码,但重新安排了一些。然后我在上面添加了一些东西。
【解决方案2】:

您可以创建一个隐藏文件,输入应用程序的首次启动日期,并在代码中配置试用期

【讨论】:

  • 这将是最容易设置但太容易破解。在 beta 测试中虽然可能还可以,但我们希望实现一些也可以用于发布版本许可的东西。
【解决方案3】:

本质上,您希望控制已安装应用程序的功能和/或生命周期。您所描述的是“Software License Management”。您说得对,这是一个非常常见的业务需求,但通常任何现成的解决方案都会让您花钱。 “开源软件许可证管理”有点矛盾。

如果您为“应用商店”环境(例如 Windows 8 或任何移动平台)进行开发,通常会为您提供许可证管理 API,并紧密集成到应用商店环境中。但是对于常规的 Windows 桌面应用程序,您必须为商业解决方案“付费”,或者开发自己的解决方案。

在没有免费的现成解决方案的情况下,您可以找到一些文章herethere,它们可能会为您指明正确的方向,以实现您自己的解决方案。

【讨论】:

  • 这是你的矛盾修饰语.. 享受吧! hibernatingrhinos.com/oss/rhino-licensing
  • 相比我们自己的实现,我们更喜欢现成的东西。如果解决方案可以完成工作并且价格水平“体面”,我们也可以为解决方案付费。到目前为止,选项似乎是选择付费或犀牛之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多