Wix - 自定义安装目录

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" />时,我可以构建安装程序。但是“选择安装类型”对话框(完整,典型,自定义)不再显示。还有另一个奇怪的事情:有时会弹出一个对话框,说明它正在计算磁盘空间(它有一个取消按钮),但最终它永远不会自动关闭。当我关闭它后,我仍然可以继续。有没有简单的方法来解决这个问题?谢谢,Philip
2个回答

9
UIRef元素是WiX提供的标准用户界面序列之一:
  • WixUI_Mondo
  • WixUI_Advanced
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal
您只能在安装程序中使用其中一个序列。每个序列都有一组对话框。有关每个序列包含哪些对话框的信息,请参见WiX文档
WixUI_Mondo允许用户在选择自定义安装时指定安装目录。只有WixUI_Mondo允许用户选择典型、自定义或完整安装。
允许用户选择安装目录的最简单方法是使用WixUI_InstallDir对话框序列。
SharpDevelop自己的安装程序使用WixUI_FeatureTree对话框序列。
因此,如果WiX提供的标准对话框集不符合您的要求,则可以查看自定义对话框序列。创建自定义对话框通常是最后的选择。

0

IsWiX 支持此功能。请查看:

IsWiXMerges.wxs

IsWiXInstaller.wxs

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接