Sto cercando di pulire il file wxs generato da heat.exe applicando le trasformazioni xml.Rimozione dei nodi indesiderati dal file wxs applicando xslt tranfsormation
Di seguito è riportato un esempio di output di heat.exe.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="APPFOLDER">
<Component Id="cmp78E9FF58917B1844F3E9315A285F3147" Guid="SOME-GUID">
<File Id="fil093D6D7CB723B5B62730D7B4E575F154" KeyPath="yes" Source="PQR.Some.dll" />
</Component>
<Component Id="cmp0B084126FAE7577FD84DB29766AC6C2B" Guid="SOME-GUID">
<File Id="filB20C8708D7EB02EDFBCC4D70F9FE7F8A" KeyPath="yes" Source="ABC.Another.dll" />
</Component>
<Component Id="cmp83BB1954DECD7D949AAE4ACA68806EC3" Guid="SOME-GUID">
<File Id="fil0E29FBFF7DB39F307A2EE19237A0A579" KeyPath="yes" Source="ABC.OneMore.dll" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="AppFiles">
<ComponentRef Id="cmp78E9FF58917B1844F3E9315A285F3147" />
<ComponentRef Id="cmp0B084126FAE7577FD84DB29766AC6C2B" />
<ComponentRef Id="cmp83BB1954DECD7D949AAE4ACA68806EC3" />
</ComponentGroup>
</Fragment>
</Wix>
Desidero rimuovere i nodi Componente il cui nodo File figlio ha un attributo Source contenente la stringa "ABC". So come trovare questi nodi usando i corretti schemi di corrispondenza. Quindi, prima di rimuovere il nodo Componente, voglio memorizzare l'Id del componente e quindi usarlo per rimuovere il nodo ComponentRef con l'Id che ho appena registrato.
C'è un modo per ottenerlo con la trasformazione XML? Penso che sto cercando qualcosa in cui posso creare una variabile dire 'X' per memorizzare il nodo Id of Component che elimino, e usare 'X' per trovare i nodi ComponentRef da eliminare.
Questo ha funzionato come fascino. Fantastico @JLRishe. – vaibinewbee
questo è semplicemente fantastico, funziona subito. grazie – sttaq
Se vuoi rimuovere più di un elemento, aggiungi solo più condizioni all'attributo di corrispondenza: ' ' –
HenningJ