一个java桌面应用。如何实现30天试用?提供思路。

yingShisscWang 2009-09-10 05:13:30
网上搜了一圈。
大多数人都提到了将安装日期以某种格式保存在一个文件里,然后每次试用时重新记录时间,然后和前一次的时间比对。
我的问题是如下
1)首先我的程序是一个无UI的应用。不存在登陆。那么首次发生时间的记录应该是在安装的时候,我用的是Istallshield,这是不是意味着我要把首次记录时间的任务交给installshield去实现了?完全不熟。有没有什么方法不要通过installshield去记录首次安装的时间.

2)或者是否有哪位istallshield达人,可以说说在installshield里怎么实现试用期的问题?

...全文
612 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingbh1918 2009-12-08
  • 打赏
  • 举报
回复
用注册表
xzq2002 2009-09-13
  • 打赏
  • 举报
回复
学习
平淡面对 2009-09-13
  • 打赏
  • 举报
回复
个人认为,要安全稳妥,还是需要连接到服务器。这也是现在比较通用的办法。其他都是一些很简单的防破解办法。当然,采用专门的软件保护软件,也是一个办法。
pigjavalife 2009-09-13
  • 打赏
  • 举报
回复
最简单的方法是查找系统时间来控制30天
java1109 2009-09-13
  • 打赏
  • 举报
回复
mark
youjianbo_han_87 2009-09-12
  • 打赏
  • 举报
回复
很难,只能靠法律帮忙。看看别的桌面开发厂商是怎么干的吧,TWaver都让人随便看源码了,你比他们做的好么
java_object 2009-09-12
  • 打赏
  • 举报
回复
zan 很不错 的帖子
jrj2330345 2009-09-11
  • 打赏
  • 举报
回复
如果我记录了首次使用的时间,比如说在一个main里面做这个处理。那万一某个变态,装完了就一直不用,那过了30天,他还是能用啊。


这还能按适用考虑么? 是试用30次?
j012b 2009-09-11
  • 打赏
  • 举报
回复
不推荐使用installshield制作安装程序,优点不表.
理由:
1:太大耗资源
2:正版太贵,盗版存在这样那样的问题。
推荐使用NSIS进行制作。
理由:
1:小巧,做类似脚本的东西编译运行即可生成安装文件。
2:不存在版权的限制。
3:有比较完整的函数,可以实现应用程序的常用功能。诸如开始菜单,卸载等等。
4:针对java程序,可以调用本地的java方法(作为nsis函数的补充),这样就可以实现你所说的功能。
yingShisscWang 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 zhuyx808 的回复:]
引用 24 楼 yingshisscwang 的回复:
引用 10 楼 lxxzhy 的回复:
引用 9 楼 sforiz 的回复:
引用 1 楼 lxxzhy 的回复:
1. 每次程序启动检查一下是否第一次使用,是的话把当前日期写到文件,否则检查当前日期与该文件记录的日期相比较是否过期了.
2. 为防止这个程序是一直不退出的后台程序,无法用启动的时候检查过期.创建一个Timer,每天检查一次是否过期(也是跟步骤1提到的文件里的日期比较)

缺点: 程序是否过期是根据第一次使用的时间而非安装的时间.


安装后,强制程序马上启动。
Java code
    Process p=null;
    p=Runtime.getRuntime().exec("Program.exe");

他不是用java来安装的,是用那个什么installshield.


我只知道installshield这个安装工具,所以就选了他,
请问你提到的用java安装,是什么概念?自己写一个swing的程序,下一步,下一步这种吗?


客户端没有jre怎么办?
[/Quote]

这个问题我也很想知道怎么解决
yingShisscWang 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 q472732639 的回复:]
在安装完成之后New一个时间的对象(可以自己设定一个.属性大概有使用时间.累计时间) 然后将他序列化.
每次启动程序的时候都把这个对象读写一下.更新累计时间后再次序列化 如果文件不存在的话直接让他不能使用程序.累计时间 超出使用时间后.也不能让他使 何如?


[/Quote]
我就是不知道在安装完成后new一个时间对象,这在installshield里怎么弄~
q472732639 2009-09-11
  • 打赏
  • 举报
回复
在安装完成之后New一个时间的对象(可以自己设定一个.属性大概有使用时间.累计时间) 然后将他序列化.
每次启动程序的时候都把这个对象读写一下.更新累计时间后再次序列化 如果文件不存在的话直接让他不能使用程序.累计时间 超出使用时间后.也不能让他使 何如?

zhuyx808 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 yingshisscwang 的回复:]
引用 10 楼 lxxzhy 的回复:
引用 9 楼 sforiz 的回复:
引用 1 楼 lxxzhy 的回复:
1. 每次程序启动检查一下是否第一次使用,是的话把当前日期写到文件,否则检查当前日期与该文件记录的日期相比较是否过期了.
2. 为防止这个程序是一直不退出的后台程序,无法用启动的时候检查过期.创建一个Timer,每天检查一次是否过期(也是跟步骤1提到的文件里的日期比较)

缺点: 程序是否过期是根据第一次使用的时间而非安装的时间.


安装后,强制程序马上启动。
Java code
    Process p=null;
    p=Runtime.getRuntime().exec("Program.exe");

他不是用java来安装的,是用那个什么installshield.


我只知道installshield这个安装工具,所以就选了他,
请问你提到的用java安装,是什么概念?自己写一个swing的程序,下一步,下一步这种吗?
[/Quote]

客户端没有jre怎么办?
WuBill 2009-09-11
  • 打赏
  • 举报
回复
关注一下
yingShisscWang 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lxxzhy 的回复:]
引用 9 楼 sforiz 的回复:
引用 1 楼 lxxzhy 的回复:
1. 每次程序启动检查一下是否第一次使用,是的话把当前日期写到文件,否则检查当前日期与该文件记录的日期相比较是否过期了.
2. 为防止这个程序是一直不退出的后台程序,无法用启动的时候检查过期.创建一个Timer,每天检查一次是否过期(也是跟步骤1提到的文件里的日期比较)

缺点: 程序是否过期是根据第一次使用的时间而非安装的时间.


安装后,强制程序马上启动。
Java code
    Process p=null;
    p=Runtime.getRuntime().exec("Program.exe");

他不是用java来安装的,是用那个什么installshield.
[/Quote]

我只知道installshield这个安装工具,所以就选了他,
请问你提到的用java安装,是什么概念?自己写一个swing的程序,下一步,下一步这种吗?
枫叶rain 2009-09-11
  • 打赏
  • 举报
回复
学习,顶一下
logon29 2009-09-11
  • 打赏
  • 举报
回复
可以比较安装时间和当前系统时间,如果当前时间不大于安装时间,则不可用。 卡巴斯基好像就有这个功能。
yubangqi 2009-09-11
  • 打赏
  • 举报
回复
开源算了,也算是为中国的IT做点贡献
yubangqi 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 yingshisscwang 的回复:]
引用 26 楼 zhuyx808 的回复:
引用 24 楼 yingshisscwang 的回复:
引用 10 楼 lxxzhy 的回复:
引用 9 楼 sforiz 的回复:
引用 1 楼 lxxzhy 的回复:
1. 每次程序启动检查一下是否第一次使用,是的话把当前日期写到文件,否则检查当前日期与该文件记录的日期相比较是否过期了.
2. 为防止这个程序是一直不退出的后台程序,无法用启动的时候检查过期.创建一个Timer,每天检查一次是否过期(也是跟步骤1提到的文件里的日期比较)

缺点: 程序是否过期是根据第一次使用的时间而非安装的时间.


安装后,强制程序马上启动。
Java code
    Process p=null;
    p=Runtime.getRuntime().exec("Program.exe");

他不是用java来安装的,是用那个什么installshield.


我只知道installshield这个安装工具,所以就选了他,
请问你提到的用java安装,是什么概念?自己写一个swing的程序,下一步,下一步这种吗?


客户端没有jre怎么办?


这个问题我也很想知道怎么解决
[/Quote]
jre可以精简下打包进去,也不是很占资源
deific 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 q472732639 的回复:]
在安装完成之后New一个时间的对象(可以自己设定一个.属性大概有使用时间.累计时间) 然后将他序列化.
每次启动程序的时候都把这个对象读写一下.更新累计时间后再次序列化 如果文件不存在的话直接让他不能使用程序.累计时间 超出使用时间后.也不能让他使 何如?


[/Quote]
我觉得这个方法不错,记录使用时间就可以了啊。
1,如果安装了不使用,过30天就过期了似乎不合理。
2,使用累计时间到达30天我觉得是合理的。
加载更多回复(30)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧