Wix颗粒捆绑
我想在为我的程序生成最终安装程序时实现更多的粒度。为了举例,让我们假设这被称为:程序。它由客户端和服务器组成。在这个例子中,我们有 5 个项目。
- 客户端.csproj
- 服务器.csproj
- 客户端安装程序.wixproj
- 服务器安装程序.wixproj
- Bundle.wixproj
如果我只是通过 Bundle 项目构建安装程序,一切都是完美的。但是我希望它发生的方式是首先构建客户端和服务器(单独)以运行测试,如果成功 - 生成工件,然后 Budle 将使用这些工件生成最终安装程序。
目前我只用客户端成功地做到了这一点,msbuild Client.csproj /p:OutputPath=$binariesPath在指定的位置产生输出,然后使用
msbuild Bundle.wixproj /p:OutputPath=$installerPath /p:LinkerBindInputPaths=$binariesPath这个输出并在$installerPath
我尝试了多个 LinkerBindInputPaths 之类的/p:LinkerBindInputPaths=$binariesPathClient /p:LinkerBindInputPaths=$binariesPathServer,但这似乎不起作用。
也许我可以再挤一步并构建每个安装程序。这使我可以为每个组件获得单独的 MSI。目前,每个 MSI 都与其安装程序项目严格相关:
<MsiPackage SourceFile="$(var.ClientInstaller.TargetPath)" Vital="no" /> <MsiPackage SourceFile="$(var.ServerInstaller.TargetPath)" Vital="no" />
所以我的问题是:如何构建Bundle.wixproj以便我可以使用自定义的覆盖 MSI 源文件位置,我以前构建的输出所在的位置?