如何从WixUI_Advanced中删除FeaturesDlg

时间:2013-04-14 20:46:16

标签: wix

我的应用程序只有一个“功能”,所以我想省略WixUI_Advanced中的FeaturesDlg。我已经制作了wixui_advanced.wxs的副本并调整了一些东西以使其按原样运行。

为了看看会发生什么,我评论了这一行:

<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="4">WIXUIDONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>

但是,正如人们所预料的那样,我的更改导致InstallDirDlg上的Next按钮变为NOP。我猜我想要InstallDirDlg Next按钮“完成”所有内容并开始安装。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您基本上想要复制Install中的FeaturesDlg按钮。这看起来像是:

<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Hidden="yes" Text="!(loc.FeaturesDlgInstall)">
    <Condition Action="show">NOT Installed AND ALLUSERS</Condition>
    <Condition Action="default">NOT Installed</Condition>
    <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
    <Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
    <Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
    <Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
</Control>
<Control Id="InstallNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Hidden="yes" Text="!(loc.FeaturesDlgInstall)">
    <Condition Action="show">NOT Installed AND NOT ALLUSERS</Condition>
    <Condition Action="default">NOT Installed</Condition>
    <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
    <Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
    <Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
    <Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
</Control>

是的,那里有很多事情,因为Install按钮是完成所有磁盘空间检查的地方。

答案 1 :(得分:0)

你的下一个是NOP,因为你还没有为该控件的事件发布任何内容。

如果您希望“下一步”按钮转到最终安装对话框,即安装程序在继续安装之前要求用户进行确认,请将“值”设置为“VerifyReadyDlg”而不是“FeaturesDlg”。然后,您必须为“VerfiyReadyDlg”设置“后退”按钮控件,以便它将您带回到您来自的位置。

否则,如果您不想这样,那么只需将“安装”按钮(如Rob的回答中)放在您认为是最终对话框的对话框上。