概括
由于当您“运行”它创建的 .exe 并使用 WiX 工具包时,Wix# 实际上会构建 MSI,因此您需要将创建的可执行 Wix# + WiX Toolkit 输出到您的放置文件夹。然后确保 WiX 工具包可执行文件位于您的 PATH 或输出文件夹中,并在放置文件夹中创建调用 Wix# 可执行文件的 Powershell 脚本。一种直接的方法是为每个单独的“产品安装程序”创建一个 Wix# 项目,并将每个这些 Wix# 可执行文件输出到您的放置文件夹,以便下游 Powershell(或其他)进一步处理/生成 MSI 文件脚本。
我正在使用集成到 VS2013 IDE 中的 Wix#,所以我的答案应该在这种情况下进行解释。我的 Wix# 安装程序只是我的整体解决方案中的几个项目之一。
视觉工作室解决方案中的单个 Wix# 项目示例
因此,例如,如果您的 Wix# 项目代码文件在 VS 中设置为名为 MyWebsiteSetup 的项目,并且 Wix# 代码文件是 MyWebsiteSetup.cs,那么您的 Wix# 可执行文件将位于 \MyWebsiteSetup\bin\debug\ MyWebsiteSetup.exe。
让构建将此 MyWebSiteSetup.exe 文件与其他文件一起放置在放置文件夹中,以及 Wix# 放置在 bin\debug 文件夹中的其他文件。然后让您的第二组脚本运行 MyWebsiteSetup.exe 程序,该程序将生成 MSI。我相信您可能需要将 Wix# 代码所需的安装组件文件也部署到放置文件夹中,并在预期的文件夹结构中。Wix# 似乎将它需要的所有其他支持文件放在 bin\debug 文件夹中,因此只需将所有文件从 Wix# 项目的 bin\debug 复制到放置文件夹即可满足您的需求。
使示例适用于多种产品(多种 Wix# 项目)
现在,您的问题是如何为所有文件都放在同一个放置文件夹中的多个网站执行此操作。有几种方法可以解决这个问题,但我建议的一种方法是在 Visual Studio 中为每个单独的产品创建一个单独的 Wix# 项目,并将每个项目的 Wix# 输出文件与产品一起部署到放置文件夹文件。如果您的单独产品被命名为 MyWebSiteSetupA、MyWebSiteSetupB 和 MyWebSiteSetupC,它们将生成可执行文件 MyWebSiteSetupA.exe、MyWebSiteSetupB.exe 和 MyWebSiteSetupC.exe。您只需让您的第二组脚本依次调用其中的每一个。当然,这些项目的每个 Wix# 代码文件(.cs 文件)都会被编码,以了解它在运行时需要获取哪些文件,并且在运行生成的 exe 时,它将获得它需要的文件,
当然,还有许多其他方法可以使用 PowerShell 等灵活的工具,每种方法都各有利弊,但我希望这有助于您开始使用一种可以根据您的需求定制的方法。