Je souhaite détecter si certaines bibliothèques sont installées sur l'ordinateur avant d'effectuer l'installation, mais je ne parviens pas à le faire fonctionner correctement.Résultat différent du script exécuté au démarrage
je le script shell suivant:
#!/bin/bash
verify_distro(){
CHECK_IF_PACKAGE=`dpkg -s ia32-libs`
result=`echo $?`
echo ${result}
if [ ${result} == 0 ]; then
echo "ia32-libs installed"
return 0
else
echo "not installed"
return 1
fi
}
verify_distro
Si je ia32-libs installés et l'exécuter à la main dans la console, puis faire une echo $?
pour voir la sortie que je reçois le code de sortie 0 comme tout est installé correctement.
J'ai ce script défini pour s'exécuter lors de la phase de démarrage de l'installation, juste après l'étape Demande de privilèges, et l'ai configuré pour attendre les flux de terminaison et de sortie. Afin que je puisse arrêter le programme d'installation, j'ai également défini la stratégie d'échec comme "En tant qu'utilisateur si réessayer ou arrêter en cas d'échec". Le problème est que, malgré l'installation du paquet, le script échoue toujours et le programme d'installation demande s'il faut continuer ou quitter.
Je ne sais pas comment résoudre ce problème afin de pouvoir arrêter le programme d'installation si certains pré-requis ne sont pas remplis. Ou y a-t-il un meilleur moyen d'y parvenir?
Y a-t-il une différence entre la valeur de retour, que vous l'exécutiez manuellement ou celle de l'installateur? Avez-vous vérifié la valeur de retour enregistrée dans le fichier .install4/installation.log? En outre, vous pouvez rediriger la sortie de l'action "Exécuter l'exécutable" vers le fichier journal pour vérifier si le script est correctement exécuté. –
@IngoKegel, le problème vient du fait que le script ne peut pas être exécuté dans la phase de démarrage, avant d'être copié dans le répertoire installé. Si j'exécute le script après la phase Enregistrer/Supprimer un élément par exemple (ou après la phase d'installation des fichiers), il s'exécute correctement. Y at-il un moyen d'exécuter un script ** avant ** les fichiers de disposition sont copiés? Je voudrais qu'il s'exécute comme une première étape lors du démarrage de l'installateur par exemple, afin que l'utilisateur soit averti des dépendances manquantes immédiatement, et non à la fin de l'installation. –
OK, je l'ai eu, s'il vous plaît voir ma réponse –