我正在编写一款Java软件,几乎已经完成,我想知道如何创建一个30天的试用版本,因为我将要把它发送给一些公司。
那么如何制作共享软件或试用版?另外,我们能否阻止.jar文件中的.class访问?
谢谢!
这里有一个想法:
创建一个数据库(如SQL Server数据库),可以在网络上公开访问。它将维护一个“试用版”许可证密钥的列表。当您的产品被购买时,可以使用相同的系统来管理完整版本的许可证密钥。
当您的Java软件第一次运行时,它会创建一个试用许可证,并将其存储在数据库中。
每次运行Java软件时,它都会检查有效的许可证。许可证创建日期存储在数据库中,因此无论客户端时钟设置为何值都不重要。
当许可证过期时,软件将停止工作。
标准的Windows软件可以查找CPU ID,并将其用作许可证的一部分,以便每台计算机只能运行一次试用软件。是否有任何人知道是否存在可以用于此目的的“JVM ID”?
也许已经有免费或开源的与许可证相关的代码了吗?
为什么不在试用程序中硬编码一个到期日期,这样你就不必继续支持它了?你可以将其放在main()函数中。
// Die after October 1, 2010
Calendar expireDate = Calendar.getInstance();
// January is 0 (y, m, d)
expireDate.set(2010, 9, 1);
// Get current date and compare
if (Calendar.getInstance().after(expireDate)) {
// Die
System.exit(0);
}
在代码开始处,我会从原子时钟服务器检查日期。然后,我会将该日期与特定日期进行比较。如果原子时间小于特定日期,则执行System.exit(0)。
public static GregorianCalendar getAtomicTime() throws IOException {
BufferedReader in = null;
try {
URLConnection conn = new URL("http://64.90.182.55:13").openConnection();
GregorianCalendar calendar = new GregorianCalendar();
conn.setConnectTimeout(1000);
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String atomicTime;
while (true) {
if ((atomicTime = in.readLine()).indexOf("*") > -1) {
break;
}
}
//System.out.println("DEBUG : " + atomicTime);
String[] fields = atomicTime.split(" ");
String[] date = fields[1].split("-");
calendar.set(Calendar.YEAR, 2000 + Integer.parseInt(date[0]));
calendar.set(Calendar.MONTH, Integer.parseInt(date[1]) - 1);
calendar.set(Calendar.DATE, Integer.parseInt(date[2]));
// deals with the timezone and the daylight-saving-time
TimeZone tz = TimeZone.getDefault();
int gmt = (tz.getRawOffset() + tz.getDSTSavings()) / 3600000;
//System.out.println("DEBUG : " + gmt);
String[] time = fields[2].split(":");
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]) + gmt);
calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
calendar.set(Calendar.SECOND, Integer.parseInt(time[2]));
return calendar;
} catch (IOException e) {
throw e;
} finally {
if (in != null) {
in.close();
}
}
}
我建议设置功能限制。我有一个小的便签程序,该程序可以完全使用,但是在未注册模式下只能创建10个便签。所以我试图对用户友好。没有日期限制,烦人的弹窗或其他恶意内容。只有一个小的状态栏,显示限制文本和注册按钮。
有一个名为Rampart的产品,可以让你为你的Java应用程序创建试用版。只需要几分钟时间,它的效果非常好。
你可以在http://Rampartlicensing.com找到它。