2010-12-06 24 views

Respuesta

8

Algo como esto:

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="MyVendor" Name="MyVendor"> 
      <Directory Id="INSTALLDIR" Name="MyDir"> 
       <Component Id="MyFileId" Guid="...G1..."> 
        <File Id="MyFileId" Name="MyFile" Source="...blabla...\MyFile" KeyPath="yes" > 
        </File> 
       </Component> 


    <DirectoryRef Id="TARGETDIR"> 
      <Component Id="MyFileCopyId" Guid="...G2..."> 
       <RemoveFile Id="MyFileRemoveId" Name="MyFile" On="install" Directory="MyCopyDir" /> 
       <CopyFile Id="MyFileCopyId" FileId="MyFileId" DestinationDirectory="MyCopyDir" /> 
      </Component> 


    <Feature Id="MyFeature" ... > 
      <ComponentRef Id="MyFileId" /> 
      <ComponentRef Id="MyFileCopyId" /> 

el elemento XML importante es CopyFile. Necesita crear un nuevo componente que sea una copia del primero (con diferentes ID, guías, ... por supuesto). Ambos componentes deben declararse en una función.

+0

hola gracias por responder, tengo algunas dudas 1). ¿Cuál sería el valor de Guid.2). Si configuro DestinationDirectory = "% TEMP%", mi archivo se copiará en la carpeta temp.3) .Puedo configurar Fuente = atributo "miarchivo" del elemento Archivo. – Sukhjeevan

+0

Guid2 es solo un nuevo guid. No tiene relación con nada, pero es necesario para wix/msi. Su carpeta "temp" sería MyCopyDir en la muestra. La fuente es básicamente una ruta local, por lo que puedes poner lo que quieras, pero debes tener esa configuración de parte ya en tu archivo wix. No está relacionado con la copia. –

+0

Quiere decir que si configuro DestinationDirectory = "MyCopyDir", mi archivo se copiaría en la carpeta ~ [user]/LOCALS ~ 1 \ Temp. No necesito hacer nada más. – Sukhjeevan

2

elemento CopyFile es tu amigo. Puede anidarlo bajo el elemento original File varias veces, dependiendo de cuántas veces necesite copiarlo. Coloque la (s) carpeta (s) de destino correcta (s) y deje que el instalador de Windows haga el resto.

+0

No puedo hacer eso porque en la carpeta "Muestra" hay más de 100 archivos. ¿Debo configurar Source = *. * Para copiar todos los archivos a la carpeta temporal o algo así? – Sukhjeevan

+3

Sí, puede especificar un comodín y tener todos los archivos de una carpeta copiados en el destino. Y esto probablemente sea bastante elegante, ya que requiere un elemento CopyFile para toda la carpeta. Sin embargo, si genera el archivo * .wxs para esta carpeta, puede considerar aplicar una transformación XSL a la salida para agregar CopyFile a cada archivo recolectado. Pero esa es una alternativa, si la forma anterior funciona para ti, mantenla :) –

+0

gracias Yan! Es realmente ayudarme. – Sukhjeevan

Cuestiones relacionadas