2010-01-29 13 views
5

El proyecto en el que estoy trabajando está cambiando de usar el instalador/instalador VS2008 a WiX, que actualmente soy muy nuevo. Agregué el código para copiar el resultado del proyecto de recursos en Resources.dll, pero en el viejo sistema de archivos instalador VS2008 también está la salida de recursos localizados que actualmente produce dos folded (en y es) con otro dll en (Resources.resources.dll) para cada idioma. He tenido un poco de búsqueda, pero parece que no puedo encontrar el método para obtener estas carpetas en el msi, menos que saber realmente que esas carpetas existen y ponerlas directamente. ¿Cuál es la mejor manera de hacer esto?¿Cómo incluyo las Asambleas de satélite (recursos localizados) en una MSI construida con WiX?

Respuesta

6

Defina <Directory> elementos en su fuente Wix para cada una de las carpetas de localización (en y es), luego defina <Component> elementos dentro de ellos para sus ensamblajes satelitales.

En resumen, ¡póngalos directamente!

+0

+1 ¡Gracias por la sugerencia! Creé una nueva respuesta para ilustrar tu respuesta. –

5

Esto es lo que funcionó para mí, para 2 idiomas.

que añade localeDirectoryFR y localeDirectoryJA como se ve a continuación, para el japonés y el francés:

<Directory Id='TARGETDIR' Name='SourceDir'> 
    <Directory Id='ProgramFilesFolder' Name='PFiles'> 
     <Directory Id='INSTALLDIR' Name='CmisSync'> 
     <Component Id='CmisSync.exe' Guid='bab5a922-b5c4-4958-ab79-5e303b767a61'> 
      <File Id='CmisSync.exe' Name='CmisSync.exe' Source='!(wix.root)\bin\CmisSync.exe' KeyPath='yes' DiskId='1' /> 
     </Component> 
     [... other components ...] 
     <Directory Id='localeDirectoryFR' Name='fr'> 
      <Component Id='localeComponentFR' Guid='01612d5d-6c9d-46e9-96c5-7105bbbea7db'> 
      <CreateFolder /> 
      <File Id='localeFileFR' Name='CmisSync.resources.dll' Source='!(wix.root)\bin\fr\CmisSync.resources.dll' DiskId='1' /> 
      </Component> 
     </Directory> 
     <Directory Id='localeDirectoryJA' Name='ja'> 
      <Component Id='localeComponentJA' Guid='8d77c457-54b0-41d6-9f1c-c91338b25505'> 
      <CreateFolder /> 
      <File Id='localeFileJA' Name='CmisSync.resources.dll' Source='!(wix.root)\bin\ja\CmisSync.resources.dll' DiskId='1' /> 
      </Component> 
     </Directory> 

Entonces les hace referencia en la función:

<Feature Id='CmisSyncFeature' Title='CmisSync' Description='CmisSync' Level='1' AllowAdvertise='no'> 
    <ComponentRef Id="CmisSync.exe" /> 
    [... other componentrefs ...] 
    <ComponentRef Id="localeComponentFR" /> 
    <ComponentRef Id="localeComponentJA" /> 
</Feature> 

Gracias a Paul Lalonde por la punta.

Cuestiones relacionadas