2013-05-07 18 views
5

Ho incatenato più pacchetti Msi/exec nel mio Bundle.wxs. Nel mio codice Bootstrapper gestito, vorrei ottenere i parametri (come DisplayName, Vital, ecc.) Del pacchetto corrente che viene eseguito. Al momento, ho trovato solo eventi che forniscono il packageID. Posso usare questo per accedere in qualche modo ad altre proprietà del pacchetto?Pacchetti Wix Bootstrapper gestiti

risposta

7

Sì. Un file chiamato BootstrapperApplicationData.xml viene creato durante il processo di compilazione e incluso con l'applicazione Bootstrapper. Lo BootstrapperApplicationData.xml ha molte informazioni sul pacchetto e sui pacchetti inclusi nello BundleChain, incluso lo DisplayName e le dimensioni e vitale.

Troverete lo BootstrapperApplicationData.xml proprio accanto al vostro .dll. Nel codice gestito si può ottenere utilizzando il seguente codice:

string folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
string dataXmlPath = Path.Combine(folder, "BootstrapperApplicationData.xml"); 

in codice nativo, è più facile da utilizzare le funzioni di supporto previste nel balutil.lib. Vale a dire BalManifestLoad() quindi BalInfoParseFromXml() per analizzare il file XML in una serie di utili strutture. Puoi vedere il codice in src \ ext \ BalExtension \ balutil \ balinfo.cpp.

Infine, lo BootstrapperApplicationData.xml può essere esteso utilizzando gli elementi CustomTable e impostando l'attributo BootstrapperAppplicationData='yes'.

+0

Era esattamente quello che stavo cercando. Grazie ancora. – microsoftprogrammer

+3

Ho dato il codice C# per analizzare l'XML in [questa risposta] (http://stackoverflow.com/a/17548224/628981). –

Problemi correlati