ここで使用できる条件 (「ディレクトリが存在する」など) はありますか?
はい、次のように Condition 要素を使用できます。
<Directory Id="FooFolder" Name="Foo">
<Component Id="SomeId">
<File Source="..." />
<Condition>Not FOO_FOLDER_ALREADY_EXISTS</Condition>
</Component>
</Directory>
条件として使用できる種類については、Windows インストーラーの条件付きステートメントの構文に関するドキュメントで説明されています。
この場合、次のようにDirectorySearchFOO_FOLDER_ALREADY_EXISTS
を使用してプロパティを設定できると思います。
<Property Id="FOO_FOLDER_ALREADY_EXISTS">
<DirectorySearch Id="FooFolderSearch" Path="[FooFolder]" />
</Property>
edit : プロパティはアクション[FooFolder]
中にのみ解決されるため、上記のディレクトリ検索は明らかに機能しません(ドキュメントを参照)。ただし、ディレクトリ検索は、アクション中にその前に既に行われています。CostFinalize
AppSearch
それを回避する方法がわかりません。CostFinalize
おそらく、Windows インストーラーのディレクトリ検索ではなく、カスタム アクションの後に FOO_FOLDER_ALREADY_EXISTS プロパティを設定する必要があります。