複数のインストーラー (さまざまなアプリケーションや Web サイトをインストールするため) を含むプロジェクトがあり、それらはすべて同じ親フォルダー (\Websites など) にインストールされます。各インストーラーは、C# コンソール アプリ (すべてのインストーラーで共有) を実行する CustomAction を呼び出し、そのインストーラーに固有のいくつかのパラメーターを渡します。
各インストーラーは複数の Web サイトをインストールし、それぞれが独自のフォルダー構造 (\Websites\App1、\Websites\App2 など) を持ちます。
たとえば、あるインストーラーでは次のようになります。
<DirectoryRef Id="WebsitesFolder">
<Directory Id="App1Folder" Name="App1"/>
<Directory Id="App2Folder" Name="App2"/>
</DirectoryRef>
そして別のインストーラーで:
<DirectoryRef Id="WebsitesFolder">
<Directory Id="App3Folder" Name="App3"/>
<Directory Id="App4Folder" Name="App4"/>
<Directory Id="App5Folder" Name="App5"/>
<Directory Id="App6Folder" Name="App6"/>
</DirectoryRef>
子ディレクトリのリストをカンマ区切りのリストに列挙して、カスタム アクションに引数として渡す方法はありますか? たとえば、次のようなものです。
<CustomAction Id="ConfigureWebsites" Directory="WebsitesFolder" ExeCommand=""[%DEPLOYEXE]" /d:"[WebsitesFolder]\<list child directories here>"" Execute="deferred" Return="ignore" />
1 つのインストーラーで以下を生成するには:
deploy.exe /d:"C:\Websites\App1,C:\Websites\App2"
2 番目のインストーラーで:
deploy.exe /d:"C:\Websites\App3,C:\Websites\App4,C:\Websites\App5,C:\Websites\App6"
CustomAction ですべてのサブフォルダーを明示的に一覧表示できることはわかっていますが、これらは成長中のプロジェクトであり、サブフォルダーが常にこれらのインストーラーに追加されるか、時間の経過とともにフォルダー名が変更される可能性があり、フォルダーのリストを維持したくありません。複数の場所での名前。
deploy.exe に特定のフォルダー リストを持たせたい理由は、それらのフォルダーを反復処理し、多くのカスタム タスクを実行するためであり、その親フォルダーの下にあるすべての Web サイトを通過させたくないからです。ただし、現在のインストールの一部である Web サイト フォルダーのみです。