Padrões de Consulta para InstallAnywhere .iap_xml
<when_to_use>
Carregue este skill ao trabalhar com qualquer arquivo .iap_xml — auditar ações de instalação, listar operações de cópia de arquivos, descobrir variáveis, encontrar ramificações específicas de plataforma ou comparar duas variantes de instalador (ex.: builds RA vs NON_RA).
</when_to_use>
Restrições Operacionais
- Sempre use
-i xmlexplicitamente — a detecção automática falha em extensões.iap_xml - Grave todos os resultados intermediários em
/tmp/— nunca na árvore de origem - Arquivos têm 2,5–2,6 MB, 65.000+ linhas — use consultas estruturais com dasel, nunca leia o arquivo para o contexto
Estrutura Raiz
Arquivos .iap_xml do InstallAnywhere têm um caminho raiz fixo: InstallAnywhere.project.
# Nomes dos elementos de nível superior na raiz do documento
cat installer.iap_xml | dasel -i xml 'keys($this)'
# Navegar para a sequência de ações de instalação
cat installer.iap_xml | dasel -i xml 'InstallAnywhere.project.installSequence'
# Filhos do nó do projeto
cat installer.iap_xml | dasel -i xml 'InstallAnywhere.project.keys($this)'
Descida recursiva — encontra elementos em qualquer profundidade sem conhecer o caminho completo:
# Todos os elementos chamados "action" em qualquer profundidade
cat installer.iap_xml | dasel -i xml '..action'
# Todos os elementos chamados "panel" em qualquer profundidade
cat installer.iap_xml | dasel -i xml '..panel'
# Qualquer nó em qualquer profundidade onde um atributo específico exista
cat installer.iap_xml | dasel -i xml 'search(has("-name"))'
..elementName desce recursivamente. search(predicate) encontra nós em qualquer profundidade.
Análise de Sequência de Ações
# Todos os nomes de ações em ordem de execução
cat installer.iap_xml | dasel -i xml '..action.map("-name")'
# Todos os tipos de ação
cat installer.iap_xml | dasel -i xml '..action.map("-type")'
# Contar todos os elementos de ação
cat installer.iap_xml | dasel -i xml 'len(..action)'
# Gravar para análise
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
Descoberta de Variáveis
# Todas as definições de variáveis
cat installer.iap_xml | dasel -i xml '..variable.map("-name")' > /tmp/installer_vars.txt
Condições de Plataforma
# Todas as condições de plataforma (ramificações Windows vs Linux)
cat installer.iap_xml | dasel -i xml 'search(has("-platform")).map("-platform")' > /tmp/platforms.txt
Comparação entre Variantes
Ao comparar duas builds do mesmo instalador (ex.: RA vs NON_RA, variante Windows vs Linux):
# Comparar conjuntos de ações entre dois arquivos 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 painéis
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
Operações de Cópia de Arquivos
# Todas as origens de cópia de arquivos
cat installer.iap_xml | dasel -i xml '..installFile.map("-source")' > /tmp/file_copies.txt
Navegação de Painéis
# Nomes e contagem de painéis
cat installer.iap_xml | dasel -i xml '..panel.map("-name")'
cat installer.iap_xml | dasel -i xml 'len(..panel)'
Referência de Sintaxe de Atributos
Atributos XML usam o prefixo - no modo amigável do dasel:
# Acessar atributo específico na primeira correspondência
cat installer.iap_xml | dasel -i xml '..action[0].-name'
# Descobrir atributos e filhos de um nó
cat installer.iap_xml | dasel -i xml '..action[0].keys($this)'
# Extrair valores de atributos em todos os nós correspondentes
cat installer.iap_xml | dasel -i xml '..elementName.map("-attributeName")'
# Contar elementos correspondentes
cat installer.iap_xml | dasel -i xml 'len(..elementName)'
# Pesquisar com predicado de atributo em qualquer profundidade
cat installer.iap_xml | dasel -i xml 'search(has("-attributeName"))'