Je souhaite définir une validation de version pour empêcher les utilisateurs finaux d'installer une version plus ancienne sur une version plus récente. Ex. empêcher l'installation de la version 1 lorsque la version 3 a été installée. Quelle est la meilleure façon de procéder?Empêche l'ancienne version d'être installée sur une version plus récente
Répondre
Vous pouvez ajouter une action "Exécuter un script" au noeud "Démarrage" de votre programme d'installation pour valider la version déjà installée.
L'extrait de code suivant montre comment valider contre les versions plus récentes si elles sont des nombres entiers simples:
// 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;
}
if (Integer.parseInt(applicationInfo.getVersion()) >
Integer.parseInt(context.getVersion())) {
Util.showErrorMessage("A more recent version has already been" +
" 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;
}
Merci! Les versions sont plus complexes telles que 10.6.5. De quels changements aurais-je besoin? J'obtiens une exception java.lang.NumberFormatException: telle quelle. –
Ce n'est pas dans l'API, mais vous pouvez utiliser la méthode interne 'com.install4j.runtime.util.VersionCheck.checkCompatible (version1, version2)' qui retournera true si 'version1' est inférieur à' version2'. –
Install4j v5.1.15 –