Modèles de requêtes pour .iap_xml d'InstallAnywhere
<when_to_use>
Chargez cette compétence lorsque vous travaillez avec un fichier .iap_xml — pour auditer les actions d'installation, lister les opérations de copie de fichiers, découvrir les variables, trouver les branches spécifiques à une plateforme ou comparer deux variantes d'installateur (par exemple, les versions RA vs NON_RA).
</when_to_use>
Contraintes opérationnelles
- Passez toujours
-i xmlexplicitement — la détection automatique échoue sur les extensions.iap_xml - Écrivez tous les résultats intermédiaires dans
/tmp/— jamais dans l'arborescence source - Les fichiers font 2,5–2,6 Mo, 65 000+ lignes — utilisez des requêtes Dasel structurelles, ne lisez jamais le fichier dans le contexte
Structure racine
Les fichiers .iap_xml d'InstallAnywhere ont un chemin racine fixe : InstallAnywhere.project.
# Noms des éléments de premier niveau à la racine du document
cat installateur.iap_xml | dasel -i xml 'keys($this)'
# Naviguer vers la séquence d'actions d'installation
cat installateur.iap_xml | dasel -i xml 'InstallAnywhere.project.installSequence'
# Enfants du nœud projet
cat installateur.iap_xml | dasel -i xml 'InstallAnywhere.project.keys($this)'
Descente récursive — trouve les éléments à n'importe quelle profondeur sans connaître le chemin complet :
# Tous les éléments nommés "action" à n'importe quelle profondeur
cat installateur.iap_xml | dasel -i xml '..action'
# Tous les éléments nommés "panel" à n'importe quelle profondeur
cat installateur.iap_xml | dasel -i xml '..panel'
# Tout nœud à n'importe quelle profondeur où un attribut spécifique existe
cat installateur.iap_xml | dasel -i xml 'search(has("-name"))'
..elementName descend récursivement. search(prédicat) trouve les nœuds à n'importe quelle profondeur.
Analyse de la séquence d'actions
# Tous les noms d'actions dans l'ordre d'exécution
cat installateur.iap_xml | dasel -i xml '..action.map("-name")'
# Tous les types d'actions
cat installateur.iap_xml | dasel -i xml '..action.map("-type")'
# Compter tous les éléments d'action
cat installateur.iap_xml | dasel -i xml 'len(..action)'
# Écrire pour analyse
cat installateur.iap_xml | dasel -i xml '..action.map("-name")' > /tmp/noms_actions.txt
cat installateur.iap_xml | dasel -i xml '..action.map("-type")' > /tmp/types_actions.txt
Découverte des variables
# Toutes les définitions de variables
cat installateur.iap_xml | dasel -i xml '..variable.map("-name")' > /tmp/variables_installateur.txt
Conditions de plateforme
# Toutes les conditions de plateforme (branches Windows vs Linux)
cat installateur.iap_xml | dasel -i xml 'search(has("-platform")).map("-platform")' > /tmp/platformes.txt
Comparaison entre variantes
Lors de la comparaison de deux versions du même installateur (par exemple, RA vs NON_RA, variante Windows vs Linux) :
# Comparer les ensembles d'actions entre deux fichiers d'installateur
cat installateur_a.iap_xml | dasel -i xml '..action.map("-name")' | sort > /tmp/actions_a.txt
cat installateur_b.iap_xml | dasel -i xml '..action.map("-name")' | sort > /tmp/actions_b.txt
diff /tmp/actions_a.txt /tmp/actions_b.txt > /tmp/diff_installateur.txt
# Comparer les ensembles de panneaux
cat installateur_a.iap_xml | dasel -i xml '..panel.map("-name")' | sort > /tmp/panneaux_a.txt
cat installateur_b.iap_xml | dasel -i xml '..panel.map("-name")' | sort > /tmp/panneaux_b.txt
diff /tmp/panneaux_a.txt /tmp/panneaux_b.txt
Opérations de copie de fichiers
# Toutes les sources de copie de fichiers
cat installateur.iap_xml | dasel -i xml '..installFile.map("-source")' > /tmp/copies_fichiers.txt
Navigation dans les panneaux
# Noms et nombre de panneaux
cat installateur.iap_xml | dasel -i xml '..panel.map("-name")'
cat installateur.iap_xml | dasel -i xml 'len(..panel)'
Référence de syntaxe des attributs
Les attributs XML utilisent le préfixe - en mode amical de dasel :
# Accéder à un attribut spécifique sur la première correspondance
cat installateur.iap_xml | dasel -i xml '..action[0].-name'
# Découvrir les attributs et les enfants d'un nœud
cat installateur.iap_xml | dasel -i xml '..action[0].keys($this)'
# Extraire les valeurs d'attribut sur tous les nœuds correspondants
cat installateur.iap_xml | dasel -i xml '..elementName.map("-attributeName")'
# Compter les éléments correspondants
cat installateur.iap_xml | dasel -i xml 'len(..elementName)'
# Recherche avec prédicat d'attribut à n'importe quelle profondeur
cat installateur.iap_xml | dasel -i xml 'search(has("-attributeName"))'