从之前的安装中获取版本信息
Obtain version information from prior installation
运行 "Update current installation" 选项,如何从之前的安装中获取版本信息?我经历过 API,我见过的最接近的是 public static interface ApplicationRegistry.ApplicationInfo
。
编辑
这就是我目前的处理方式。可行,但我不确定这是否是最可行的方法。
import com.install4j.api.ApplicationRegistry;
ApplicationRegistry.ApplicationInfo[] AppInfo = ApplicationRegistry.getApplicationInfoById(context.getApplicationId());
return AppInfo[0].getVersion();
您可以使用
static ApplicationRegistry.ApplicationInfo getApplicationInfoByDir(java.io.File dir)
检查指定目录是否包含由 install4j 安装的应用程序并检索有关它的信息。
这将 return 一个 ApplicationInfo 而不是 ApplicationInfo[]。
例如,以下脚本检查是否已安装相同版本:
// The value returned by context.getInstallationDirectory() will be
// the last installation directory if the user has already installed the application
ApplicationRegistry.ApplicationInfo applicationInfo =
ApplicationRegistry.getApplicationInfoByDir(context.getInstallationDirectory());
if (applicationInfo == null) {
// The application has never been installed before
return true;
}
// The version of this installer is contained in a system installer variable
String myVersion = (String)context.getVariable("sys.version");
if (applicationInfo.getVersion().equals(myVersion)) {
// In that case the current version is already installed.
Util.showErrorMessage("The current version is already installed in this directory");
// By returning "false", the action will fail and the installer will quit.
// Note that you have to set the "Failure strategy" property of your
// "Run script" action to "Quit on error", otherwise the installer will continue.
return false;
} else {
return true;
}
例如,这可以用于安装程序 "Startup" 节点中的 "Run script" 操作。
运行 "Update current installation" 选项,如何从之前的安装中获取版本信息?我经历过 API,我见过的最接近的是 public static interface ApplicationRegistry.ApplicationInfo
。
编辑
这就是我目前的处理方式。可行,但我不确定这是否是最可行的方法。
import com.install4j.api.ApplicationRegistry;
ApplicationRegistry.ApplicationInfo[] AppInfo = ApplicationRegistry.getApplicationInfoById(context.getApplicationId());
return AppInfo[0].getVersion();
您可以使用
static ApplicationRegistry.ApplicationInfo getApplicationInfoByDir(java.io.File dir)
检查指定目录是否包含由 install4j 安装的应用程序并检索有关它的信息。
这将 return 一个 ApplicationInfo 而不是 ApplicationInfo[]。
例如,以下脚本检查是否已安装相同版本:
// The value returned by context.getInstallationDirectory() will be
// the last installation directory if the user has already installed the application
ApplicationRegistry.ApplicationInfo applicationInfo =
ApplicationRegistry.getApplicationInfoByDir(context.getInstallationDirectory());
if (applicationInfo == null) {
// The application has never been installed before
return true;
}
// The version of this installer is contained in a system installer variable
String myVersion = (String)context.getVariable("sys.version");
if (applicationInfo.getVersion().equals(myVersion)) {
// In that case the current version is already installed.
Util.showErrorMessage("The current version is already installed in this directory");
// By returning "false", the action will fail and the installer will quit.
// Note that you have to set the "Failure strategy" property of your
// "Run script" action to "Quit on error", otherwise the installer will continue.
return false;
} else {
return true;
}
例如,这可以用于安装程序 "Startup" 节点中的 "Run script" 操作。