2010-12-06 22 views

答えて

8

何か:

<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" /> 

重要XML要素はCopyFileメソッドです。あなたは、最初のもののコピーである新しいコンポーネントを作成する必要があります(異なるID、guid、...もちろん)。両方のコンポーネントをフィーチャーで宣言する必要があります。

+0

私はDestidDirectory = "%TEMP%"を設定した後、myfileをtempフォルダにコピーしていました.3)。私は設定できますか? File要素のSource = "myfile"属性。 – Sukhjeevan

+0

Guid2は単純な新しいGUIDです。それは何とも関係がありませんが、wix/msiには必要です。 "temp"フォルダはサンプルのMyCopyDirになります。ソースは基本的にローカルパスなので、あなたが望むものを置くことができますが、あなたのwixファイルにそのパートの設定があるはずです。それはコピーとは無関係です。 –

+0

あなたがDestinationDirectory = "MyCopyDir"を設定すると、myfileは〜[user]/LOCALS〜1 \ Tempフォルダにコピーされます。私は他の何かをする必要はありません。 – Sukhjeevan

2

CopyFile要素はあなたの友人です。コピーする必要がある回数に応じて、元のFile要素の下に数回ネストすることができます。正しい宛先フォルダを置き、Windowsインストーラーが残りの処理を実行できるようにします。

+0

"Sample"フォルダに100個以上のファイルがあるので、私はそれを行うことができません。私はSource = *。*を設定する必要があります。 – Sukhjeevan

+3

ええ、ワイルドカードを指定して、フォルダ内のすべてのファイルをコピー先にコピーすることができます。そして、これはおそらくかなりエレガントになるでしょう。フォルダ全体に1つのCopyFile要素が必要です。ただし、このフォルダの* .wxsファイルを生成する場合は、XSL変換を出力に適用して、収穫された各ファイルにCopyFileを追加することを検討することができます。しかし、それは前の方法があなたのために働くならば、代替手段です。 –

+0

ヤン!ありがとう!本当に助けてくれます。 – Sukhjeevan

関連する問題