6

我使用的是 Wix 3.x,用户应该能够选择目标目录。我的 Setup.wxs 目前就像这里:http ://pastebin.com/uH1EjbDQ

向用户询问自定义目标目录的最简单方法是什么?(INSTALLDIR/TARGETDIR?!)我见过人们在那里建立自己的对话页面的例子,但这并不是必需的,是吗?

更新:

当我添加

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>
<UIRef Id="WixUI_InstallDir" />

之后<UIRef Id="WixUI_Mondo" />但在</Product>我收到以下错误之前:

The primary key 'ExitDialog/Finish/EndDialog/Return/1' is duplicated in table 'ControlEvent'. Please remove one of the entries or rename a part of the primary key to avoid the collision. (LGHT0130) - C:\delivery\Dev\wix30_public\src\ext\UIExtension\wixlib\WixUI_Mondo.wxs:44

现在,当我删除时,<UIRef Id="WixUI_Mondo" />我可以构建设置。但是不再显示“选择设置类型”对话框(完整、典型、自定义)。还有一个奇怪的事情:有时会弹出一个对话框,说明它正在计算磁盘空间(它有一个取消按钮),但最终它永远不会自行关闭。当我关闭它时,我仍然可以继续。有没有办法以简单的方式解决这个问题?

谢谢,菲利普

4

2 回答 2

9

UIRef 元素指的是 WiX 提供的标准用户界面序列之一:

  • WixUI_Mondo
  • WixUI_高级
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal

您只能在安装程序中使用这些序列之一。其中每一个都有一组对话框。有关每个序列中包含哪些对话框的信息,请参阅WiX 文档

WixUI_Mondo 允许用户在选择自定义安装时指定安装目录。只有 WixUI_Mondo 允许用户选择典型、自定义或完整安装。

允许用户选择安装目录的最简单方法是使用 WixUI_InstallDir 对话框序列。

SharpDevelop 自己的安装程序使用 WixUI_FeatureTree 对话框序列。

因此,如果 WiX 提供的一组标准对话框不是您想要的,您可以考虑自定义对话框序列。创建自己的自定义对话框通常是最后的手段。

于 2011-01-15T12:18:40.453 回答
0

IsWiX 支持此功能。看一眼:

IsWiXMerges.wxs

IsWiXInstaller.wxs

诀窍是我正在使用名为 INSTALLLOCATION 的目录以及 WiXUI_* 的 UIRef。这就是 WiXUI 使用的方式,类似于 InstallShield 使用 INSTALLDIR 和 Visual Studio 使用 TARGETDIR 的方式。

于 2011-01-14T17:05:38.537 回答