Domanda

Mi sono imbattuto in diverse fonti affermando di suddividere un file di installazione WiX in parti separate (variabili, componenti, ecc.) usando i file include (.wxi). Ha perfettamente senso per me, quindi ho preso & Lt; componenti & Gt; nodi dal file .wxs e inserirli in un file separato, ma quando provo a compilare il progetto in Visual Studio 2008 ricevo un errore per ogni < ComponentRef > affermando che è un " Riferimento non risolto al simbolo '...' nella sezione 'Prodotto: {...}' " ;.

Ho provato a usare <? include " Nome file "? > tag nel mio file Product.wxs, ma sembra interrompere la convalida dello schema. Se è questo il modo di includerlo, where deve andare?

I file che ho sono i seguenti.

Product.wxs

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product ...>
    <Package .../>
    <Media .../>
    <Directory Id="TARGETDIR" Name="SourceDir">
    </Directory>
    <Feature Id="MainProgram" Level="1">
      <ComponentRef Id="ProductComponent" />
      <Feature Id="ContextMenu" Level="2">
        <ComponentRef Id="ContextMenuComponent" />
      </Feature>
    </Feature>
  </Product>
</Wix>

Components.wxi

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <Fragment>
    <Component Id="ProductComponent" ...>
      <File .../>
    </Component>
    <Component Id="ContextMenuComponent" ...>
      <RegistryKey .../>
    </Component>
  </Fragment>
</Include>

Come posso farlo costruire in Visual Studio? Lo scripting della build sembra più semplice, ma non è ancora un mio problema.

È stato utile?

Soluzione

I file di inclusione dovrebbero essere pensati come file di intestazione, in realtà vuoi usarli solo per dichiarare variabili comuni, ecc. che devi condividere tra più .wxs file.

Il mio progetto utilizza ~ 10 file .wxs e un singolo .wxi in cui definisco il codice prodotto, il codice di aggiornamento, ecc.

Per una migliore idea di cosa sto parlando, consulta le domande SO Wix Tricks < !> amp; Best practice e WiX Includes vs. Fragments e, come sempre, la documentazione in Wix.chm

Altri suggerimenti

Prova a utilizzare l'estensione WXS anziché WXI. Ho rotto il mio e usato WXS come estensione, e ha funzionato. Tutti i file WXS nel progetto vengono passati nel compilatore wix da wixproj.

Ho trovato questa domanda cercando il mio problema e ho pensato di aggiungere la mia correzione nel caso in cui qualcuno venisse da dove l'ho fatto.

Se si utilizza un file wixproj per compilare da Visual Studio, sembra che questo tipo di progetto non supporti i collegamenti ai file (Aggiungi elemento esistente ... Aggiungi come collegamento). Finirai con i link nel tuo progetto ma quando lo compili ti lamenterai che ci sono simboli irrisolti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top