2011-02-09 18 views
8

Uso il WiX 3.5 in VS 2010 e ho aggiunto tutti gli assembly di progetto come riferimenti nel progetto di installazione (.wixproj) e impostare la proprietà Harvest su True in modo che i file binari, il contenuto e i satelliti siano inclusi nel file .msi.WiX: raccolta di assiemi non di progetto nell'output di installazione

Tuttavia, come procedere per aggiungere eventuali assembly di terze parti (.dlls) all'output .msi? Devo aggiungere ognuno esplicitamente al file Product.wxs o esiste un modo migliore? Idealmente, mi piacerebbe aggiungerli come riferimenti di file nel progetto di installazione, ma questa non sembra essere un'opzione?

risposta

7

Sì, è necessario aggiungere manualmente ad alcuni file di WXS O è possibile utilizzare una fase di pre-build che utilizza il calore di raccogliere questi file di per voi (supponendo che tutti questi file di risiedere in una directory separata).

calore fa parte di Wix e può raccogliere un'intera directory con l'interruttore dir. A seconda degli argomenti della riga di comando, produrrà un file wxs separato contenente un singolo ComponentGroup. Basta fare riferimento a questo ComponentGroup dal product.wxs.

Per un esempio di come Attualmente uso del calore per raccogliere la mia directory di rilascio:

dir calore "../../bin/release" -Gg -CG CG.ApplicationBinaries -dr INSTALLDIR -scom -sfrag -sreg -srd -var var.BuildOutputDir -o ApplicationBinaries.wxs

Ciò produrrà i ApplicationBinaries.wxs file:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="INSTALLDIR"> 
      <Component Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" Guid="{CA2DF1B5-7B20-4596-84A4-925B4F9BA6EC}"> 
       <File Id="filC65F9CB88694FCA79FCB3CADB9481921" KeyPath="yes" Source="$(var.BuildOutputDir)\AsyncTCPsocket.dll" /> 
      </Component> 
      .... 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="CG.ApplicationBinaries"> 
      <ComponentRef Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" /> 
      ... 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
+1

Grazie, penso che li definirò esplicitamente – devdigital

+0

Non è necessario definire una proprietà per poter fare riferimento al file wxs generato contenente il componentegroup? – KennO

+0

Ti quindi in qualche modo impostare $ (var.BuildOutputDir) a qualcosa come $ (var.YOURPROJECT.TargetDir) all'interno Product.wxs? Se sì, come lo realizzi? – jpierson

4

attualmente v'è a bug in Heat che viene utilizzato dal progetto di installazione WiX che significa assembly referenziati di un progetto non sono automa ticamente raccolto. Probabilmente dovrai attendere la versione 4 prima che venga affrontata.

Nel frattempo, la risposta di @Elmar de Koning sarà probabilmente la migliore per ora.

Problemi correlati