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

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

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

编辑:
基于Rob Mensching's wixlib blog entry,wixlib可能是答案,但是我仍在寻找如何执行此操作的示例。

最佳答案

我对.wixlib选项感到非常满意。一旦了解了.wixlib是什么,我只花了几分钟就完成了工作。
我做了以下事情:
在VS2008中,类型为“ WiX Library Project”的Add-> New Project ...名为SQLDialog。
使用空的<Fragment></Fragment>元素创建一个Library .wxs文件。
我将UI元素从现有对话框(在主“ WiX项目”中)复制到Fragment元素中:

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


我在VS2008的Release Build配置中添加了wixlib项目。
我从Main WiX Project中删除了SQLDialog.wxs文件,而是引用了SQLDialog wixlib项目。
当我重新编译解决方案时,Main WiX项目之前的工作方式完全相同!!甜!

然后,我从另一个WiX项目中引用了SQLDialog wixlib项目,并从那里开始使用它。很棒! Build Server很高兴,因为共享的.wixlib项目是其正在编译的解决方案的一部分。因此,就我们的目的而言,我认为这比“共享”目录更好。没有冒犯鲍勃。感谢您的想法。

10-07 12:25