2012-06-02 35 views

答えて

52

は次のようにフォルダを定義します。

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="CommonAppDataFolder"> 
     <Directory Id="TestFolder" Name="test"> 
      <Directory Id="ExampleFolder" Name="example" /> 
     </Directory> 
    </Directory> 
</Directory> 

ここで重要な部分は、Windowsインストーラによって知られているCommonAppDataFolder IDです。 Windows Installer Property Referenceには、既知のシステムフォルダの完全なリストがあります。

このフォルダにファイルをインストールすると、暗黙的に作成されます。 <Product>の下

<Component Id="CreateTestFolder" Directory="ExampleFolder" Guid="PUT-RANDOM-GUID-HERE"> 
    <CreateFolder /> 
</Component> 
+0

それを使用しているとき、私はこのエラーを取得する: 'エラーCNDL0205:IDを持つディレクトリを'CommonAppDataFolder'は有効なルートディレクトリではありません。 '(さらに、プロダクトごとに1つのルートディレクトリしか持たないことについて)私は間違って何をしていますか? – noelicus

+0

@noelicus:Windowsインストーラでは、トップレベルの親ディレクトリは常にTARGETDIRでなければなりません。私はこれを明確にするために私の答えを更新します。 –

+0

@WimCoenen wixインストーラーのインストール中にfolder/files1..to..files5をコピーすることは可能ですか? – Royal

11

は、あなたが入力することができます:

<DirectoryRef Id="TARGETDIR"> 
     <Directory Id="CommonAppDataFolder"> 
     <Directory Id="CommonAppXXXX" Name="test"> 
      <Directory Id="CommonAppYYYY" Name="example"> 
      <Component Id="CreateProgramDataZZZ" Guid="ABC-ETC"> 
       <CreateFolder /> 
      </Component> 
      </Directory> 
     </Directory> 
     </Directory> 
    </DirectoryRef> 

をそして、あなたのfeatureでコンポーネントCreateProgramDataZZZを参照していない場合、あなたはそれがこのようにコンポーネントをインストールすることによって作成されるように強制することができます。

また、このようなディレクトリにアクセス許可を設定すると便利になります(<CreateFolder />の代わりに)

<CreateFolder> 
    <util:PermissionEx User="Users" GenericAll="yes" /> 
</CreateFolder> 

+0

誰もが同じフォルダ内にフォルダを作成してファイルを移動することを考えていますか? – Sudhakar

+0

は、他の言語でアカウントが変更されるため、ユーザー=でWIX_ACCOUNT_USERSを使用します。 – LeoPucciBr

関連する問題