Patrones de consulta para archivos .iap_xml de InstallAnywhere
<when_to_use>
Cargue esta habilidad cuando trabaje con cualquier archivo .iap_xml — para auditar acciones de instalación, listar operaciones de copia de archivos, descubrir variables, encontrar ramas específicas de una plataforma o comparar dos variantes del instalador (p. ej., compilaciones RA vs. NON_RA).
</when_to_use>
Restricciones operativas
- Siempre pase
-i xmlexplícitamente — la detección automática falla con la extensión.iap_xml - Escriba todos los resultados intermedios en
/tmp/— nunca en el árbol fuente - Los archivos ocupan 2.5–2.6 MB, 65 000+ líneas — use consultas estructurales con dasel, nunca lea el archivo completo en el contexto
Estructura raíz
Los archivos .iap_xml de InstallAnywhere tienen una ruta raíz fija: InstallAnywhere.project.
# Nombres de elementos de primer nivel en la raíz del documento
cat install.iap_xml | dasel -i xml 'keys($this)'
# Navegar a la secuencia de acciones de instalación
cat install.iap_xml | dasel -i xml 'InstallAnywhere.project.installSequence'
# Hijos del nodo project
cat install.iap_xml | dasel -i xml 'InstallAnywhere.project.keys($this)'
Descenso recursivo — encuentra elementos a cualquier profundidad sin necesidad de conocer la ruta completa:
# Todos los elementos llamados "action" a cualquier profundidad
cat install.iap_xml | dasel -i xml '..action'
# Todos los elementos llamados "panel" a cualquier profundidad
cat install.iap_xml | dasel -i xml '..panel'
# Cualquier nodo a cualquier profundidad donde exista un atributo específico
cat install.iap_xml | dasel -i xml 'search(has("-name"))'
..elementName desciende recursivamente. search(predicate) coincide con nodos a cualquier profundidad.
Análisis de la secuencia de acciones
# Todos los nombres de acciones en orden de ejecución
cat install.iap_xml | dasel -i xml '..action.map("-name")'
# Todos los tipos de acciones
cat install.iap_xml | dasel -i xml '..action.map("-type")'
# Contar todos los elementos action
cat install.iap_xml | dasel -i xml 'len(..action)'
# Escribir para análisis
cat install.iap_xml | dasel -i xml '..action.map("-name")' > /tmp/action_names.txt
cat install.iap_xml | dasel -i xml '..action.map("-type")' > /tmp/action_types.txt
Descubrimiento de variables
# Todas las definiciones de variables
cat install.iap_xml | dasel -i xml '..variable.map("-name")' > /tmp/installer_vars.txt
Condiciones de plataforma
# Todas las condiciones de plataforma (ramas Windows vs. Linux)
cat install.iap_xml | dasel -i xml 'search(has("-platform")).map("-platform")' > /tmp/platforms.txt
Comparación entre variantes
Al comparar dos compilaciones del mismo instalador (p. ej., RA vs. NON_RA, variante Windows vs. Linux):
# Comparar conjuntos de acciones entre dos archivos de instalador
cat installer_a.iap_xml | dasel -i xml '..action.map("-name")' | sort > /tmp/actions_a.txt
cat installer_b.iap_xml | dasel -i xml '..action.map("-name")' | sort > /tmp/actions_b.txt
diff /tmp/actions_a.txt /tmp/actions_b.txt > /tmp/installer_diff.txt
# Comparar conjuntos de paneles
cat installer_a.iap_xml | dasel -i xml '..panel.map("-name")' | sort > /tmp/panels_a.txt
cat installer_b.iap_xml | dasel -i xml '..panel.map("-name")' | sort > /tmp/panels_b.txt
diff /tmp/panels_a.txt /tmp/panels_b.txt
Operaciones de copia de archivos
# Todos los orígenes de copia de archivos
cat install.iap_xml | dasel -i xml '..installFile.map("-source")' > /tmp/file_copies.txt
Navegación por paneles
# Nombres de paneles y su cantidad
cat install.iap_xml | dasel -i xml '..panel.map("-name")'
cat install.iap_xml | dasel -i xml 'len(..panel)'
Referencia de sintaxis de atributos
Los atributos XML usan el prefijo - en el modo friendly de dasel:
# Acceder a un atributo específico en la primera coincidencia
cat install.iap_xml | dasel -i xml '..action[0].-name'
# Descubrir atributos e hijos de un nodo
cat install.iap_xml | dasel -i xml '..action[0].keys($this)'
# Extraer valores de atributos en todos los nodos coincidentes
cat install.iap_xml | dasel -i xml '..elementName.map("-attributeName")'
# Contar elementos coincidentes
cat install.iap_xml | dasel -i xml 'len(..elementName)'
# Buscar con predicado de atributo a cualquier profundidad
cat install.iap_xml | dasel -i xml 'search(has("-attributeName"))'