install4j技术咨询:如何在运行时获取当前执行启动器的编译日期/时间戳?及同类版本获取问题
Install4j 运行时信息获取常见问题解答
1. 如何在运行时获取当前正在执行的启动器的编译日期/时间戳
这个需求其实挺常见的,install4j早就为我们准备了内置的编译变量,直接通过API就能拿到这个时间戳。具体实现代码如下:
import com.install4j.api.launcher.Variables; import java.util.Date; public class LauncherCompileTime { public static void main(String[] args) { // 获取编译时生成的毫秒级时间戳字符串 String timestampStr = Variables.getCompilerVariable("compilerTimestamp"); if (timestampStr != null) { try { long compileTimestamp = Long.parseLong(timestampStr); Date compileDate = new Date(compileTimestamp); System.out.println("当前启动器的编译时间:" + compileDate); } catch (NumberFormatException e) { System.err.println("解析编译时间戳失败:" + e.getMessage()); } } else { System.err.println("无法获取编译时间戳,请确认当前程序是通过install4j生成的启动器"); } } }
这里要注意,compilerTimestamp是install4j在编译启动器时自动注入的变量,只有install4j打包的启动器才能读取到值。返回的是Unix毫秒时间戳,你可以根据需求转换成任意日期格式。
2. 如何在运行时获取应用的完整版本信息(含构建编号)
和获取版本的需求同类,我们通常还需要拿到包含构建编号的完整版本标识,同样可以借助install4j的API轻松实现:
import com.install4j.api.launcher.ApplicationInfo; public class AppVersionGetter { public static void main(String[] args) { // 获取基础版本号(如"2.1.0") String baseVersion = ApplicationInfo.getVersion(); System.out.println("应用基础版本号:" + baseVersion); // 获取构建编号(需在install4j项目配置中设置过构建编号才会返回有效值) String buildNumber = ApplicationInfo.getBuildNumber(); if (buildNumber != null && !buildNumber.isEmpty()) { System.out.println("应用构建编号:" + buildNumber); } // 获取完整版本标识(格式为"版本号-b构建编号",若有构建编号则显示) String fullVersion = ApplicationInfo.getFullVersion(); System.out.println("应用完整版本:" + fullVersion); // 额外:获取打包该启动器的install4j版本 String install4jVersion = ApplicationInfo.getInstall4jVersion(); System.out.println("打包使用的install4j版本:" + install4jVersion); } }
需要提醒的是,使用这些API时,你的项目需要依赖install4j的API库(路径通常是install4j安装目录下的lib/install4j-api.jar),不过打包时install4j会自动处理这个依赖,不用手动把这个jar包打进应用里。
内容的提问来源于stack exchange,提问作者Reto Höhener
相关产品推荐
相关产品推荐

