如何在两个WiX项目中共享WiX片段?

Ran*_*ger 4 wix wix3 wixlib

我们在SomeDialog.wxs文件中有一个WiX片段,它会提示用户输入一些信息.它在InstallerUI.wxs文件中的另一个片段中引用,该文件控制对话框顺序.当然,Product.wxs是我们的主要文件.效果很好.

现在,我为另一个应用程序的.MSI安装了第二个Visual Studio 2008 Wix 3.0项目,它需要向用户询问相同的信息.我似乎无法找出共享文件的最佳方式,以便更改所请求的信息将导致两个.MSI获得新行为.

老实说,我不知道合并模块,.wsi(包含)或.wixlib是否是正确的解决方案.我希望找到一个有人这样做的简单例子,但到目前为止我都失败了.

编辑: 根据Rob Mensching的 wixlib 博客文章,wixlib可能就是答案,但我仍然在寻找如何做到这一点的例子.

Ran*_*ger 6

我对.wixlib选项很满意.一旦我理解了.wixlib是什么,我花了几分钟才完成.
我做了以下内容:在VS2008中,Add-> New Project ...类型为"WiX Library Project",名为SQLDialog.使用空<Fragment></Fragment>元素创建库.wxs文件.我将UI元素从我​​现有的对话框(在我的主"WiX项目中")复制到Fragment元素中:

<Fragment>
  <UI>
    <Dialog Id="SQLServerPromptingDlg" ... Title="SQL Server Information" ...>
      <Control Id="Next" Type="PushButton" ... Text="!(loc.WixUINext)" />
      ...
    </Dialog>
  </UI>
</Fragment>
Run Code Online (Sandbox Code Playgroud)

我将wixlib项目添加到VS2008中的Release Build配置中.我从主WiX项目中删除了SQLDialog.wxs文件,并引用了SQLDialog wixlib项目.
当我重新编译解决方案时,主WiX项目完全正常工作!甜!

然后我从我的其他WiX项目引用了SQLDialog wixlib项目并从那里开始使用它.工作得很好!Build Server很高兴,因为共享的.wixlib项目是它正在编译的解决方案的一部分.因此,出于我们的目的,我认为这比"共享"目录更好.没有冒犯鲍勃.我很感激你的想法.