自毁应用程序

Jam*_* P. 15 java desktop-application self-destruction

沿着"这条磁带将在五秒内自毁.好运,吉姆" ......

一旦达到预设的使用时间或其他条件,应用程序是否可以删除自身(或者它的可执行包装形式)?

或者,可以使用哪些其他方法使应用程序无用?

这里的目标是让测试版过期,邀请用户获得更新版本.

Ste*_*n C 8

有可能的.为了解决JAR文件上的锁定问题,您的应用程序可能需要生成一个后台进程,该进程在删除内容之前一直等待JVM退出.

但是,这不是防弹的.有人可以安装应用程序,然后将安装的文件和目录设置为只读,这样您的应用程序就无法自行删除.通过OS'es访问控制系统的用户(或他们的管理员)对创建和删除的文件有最终决定权.

  • 在您的应用程序中放置任何类型的定时炸弹对​​您未来的潜在客户都是一种伤害.说服他们升级,为他们提供一个好的产品,而不是削弱你现有的产品. (4认同)

ben*_*y23 5

如果您控制测试人员下载您的应用程序的位置,您可以使用自动构建系统(例如Jenkins),您可以每晚创建一个具有硬编码到期日期的新测试版本:

private static final Date EXPIRY_DATE = <90 days in the future from build date>;
Run Code Online (Sandbox Code Playgroud)

上述日期由构建过程自动插入

if (EXPIRY_DATE.before(new Date()) {
    System.out.println("Get a new beta version, please");
    System.exit(1);
}
Run Code Online (Sandbox Code Playgroud)

将其与签名和密封的罐子混合,以便在反编译字节码方面设置障碍并提供不包含该代码的替代实现,您可以分发代码的时间到期beta.

自动构建系统可以配置为自动将beta版本上载到托管下载版本的服务器.