| name | enterprise-installanywhere |
| description | Dasel v3 query patterns for InstallAnywhere .iap_xml installer definitions — use when querying action sequences, discovering variables, resolving platform conditions, navigating panels, or comparing installer variants. Files are 2.5+ MB, 65,000+ lines — too large for context reads, requires structural dasel queries. |
InstallAnywhere .iap_xml Query Patterns
<when_to_use>
Load this skill when working with any .iap_xml file — auditing install actions, listing file copy operations, discovering variables, finding platform-specific branches, or comparing two installer variants (e.g., RA vs NON_RA builds).
</when_to_use>
Operational Constraints
- Always pass
-i xml explicitly — auto-detection fails on .iap_xml extensions
- Write all intermediate results to
/tmp/ — never to the source tree
- Files are 2.5–2.6 MB, 65,000+ lines — use structural dasel queries, never read the file into context
Root Structure
InstallAnywhere .iap_xml files have a fixed root path: InstallAnywhere.project.
cat installer.iap_xml | dasel -i xml 'keys($this)'
cat installer.iap_xml | dasel -i xml 'InstallAnywhere.project.installSequence'
cat installer.iap_xml | dasel -i xml 'InstallAnywhere.project.keys($this)'
Recursive descent — finds elements at any depth without knowing the full path:
cat installer.iap_xml | dasel -i xml '..action'
cat installer.iap_xml | dasel -i xml '..panel'
cat installer.iap_xml | dasel -i xml 'search(has("-name"))'
..elementName descends recursively. search(predicate) matches nodes at any depth.
Action Sequence Analysis
cat installer.iap_xml | dasel -i xml '..action.map("-name")'
cat installer.iap_xml | dasel -i xml '..action.map("-type")'
cat installer.iap_xml | dasel -i xml 'len(..action)'
cat installer.iap_xml | dasel -i xml '..action.map("-name")' > /tmp/action_names.txt
cat installer.iap_xml | dasel -i xml '..action.map("-type")' > /tmp/action_types.txt
Variable Discovery
cat installer.iap_xml | dasel -i xml '..variable.map("-name")' > /tmp/installer_vars.txt
Platform Conditions
cat installer.iap_xml | dasel -i xml 'search(has("-platform")).map("-platform")' > /tmp/platforms.txt
Cross-Variant Comparison
When comparing two builds of the same installer (e.g., RA vs NON_RA, Windows vs Linux variant):
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
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
File Copy Operations
cat installer.iap_xml | dasel -i xml '..installFile.map("-source")' > /tmp/file_copies.txt
Panel Navigation
cat installer.iap_xml | dasel -i xml '..panel.map("-name")'
cat installer.iap_xml | dasel -i xml 'len(..panel)'
Attribute Syntax Reference
XML attributes use - prefix in dasel friendly mode:
cat installer.iap_xml | dasel -i xml '..action[0].-name'
cat installer.iap_xml | dasel -i xml '..action[0].keys($this)'
cat installer.iap_xml | dasel -i xml '..elementName.map("-attributeName")'
cat installer.iap_xml | dasel -i xml 'len(..elementName)'
cat installer.iap_xml | dasel -i xml 'search(has("-attributeName"))'