使用对话框后退按钮
Using dialog back button
我在 SetupProgress
对话框之前插入了一个简单的自定义操作,该对话框显示 AskOptions
对话框,其中提供了一些快捷方式选项。
在大多数情况下,我的行为符合预期,但有一种行为我无法弄清楚。如果用户单击后退按钮,我希望它转到上一个对话框而不是继续 SetupProgress
对话框。我将以下代码用于我的对话框(减去实际创建快捷方式的代码)。
function MyFunction(hMSI)
NUMBER nResult;
STRING szMsg, szText1, szText2, szText3;
NUMBER nReturn, nValue, nvCheck1, nvCheck2, nvCheck3;
begin
SetDialogTitle(DLG_ASK_OPTIONS, "More Options");
szMsg = "Select from the additional options below.";
szText1 = "Shortcut option 1";
szText2 = "Shortcut option 2";
szText3 = "Shortcut option 3";
nvCheck1 = TRUE;
nvCheck2 = TRUE;
nvCheck3 = FALSE;
// Display the check box (NONEXCLUSIVE) dialog.
nValue = NONEXCLUSIVE;
nResult = AskOptions (nValue, szMsg,
szText1, nvCheck1,
szText2, nvCheck2,
szText3, nvCheck3);
//This is the troublesome code... Not sure how to handle this...
//if (nResult = BACK) then
// goto [Where?];
//endif;
end;
如您所见,底部附近有一条线,我可以在那里处理后退按钮,我只是不知道如何实际返回到上一个对话框。
我建议不要尝试将 Basic MSI table 驱动的对话框和 InstallScript 代码驱动的对话框交织在一起。这将很困难,最好的情况下可能会导致一些奇怪的育儿问题,最坏的情况下可能会导致注意力不集中。
goto <previous dialog label>;
方法作为显示多个对话框的脚本的一部分工作。通过向后跳转,它会将该标签之后的对话框显示为下一个对话框。所以你想以某种方式模拟它。如果您从控制事件中显示此 InstallScript 对话框,也许您应该设置一个 属性,使您能够确定下一个要显示的对话框。例如,如果您将 属性 DLGBUTTON 设置为 NEXT 或 BACK,您可以根据 DLGBUTTON 的值创建两个具有互斥条件的 NewDialog 控件事件。如果在其他地方调用此自定义操作,请相应地调整调用程序。
但是,如果可能的话,请尝试使用 MSI tables 实现此对话框,并避免非内聚 UI 的许多困难。
我在 SetupProgress
对话框之前插入了一个简单的自定义操作,该对话框显示 AskOptions
对话框,其中提供了一些快捷方式选项。
在大多数情况下,我的行为符合预期,但有一种行为我无法弄清楚。如果用户单击后退按钮,我希望它转到上一个对话框而不是继续 SetupProgress
对话框。我将以下代码用于我的对话框(减去实际创建快捷方式的代码)。
function MyFunction(hMSI)
NUMBER nResult;
STRING szMsg, szText1, szText2, szText3;
NUMBER nReturn, nValue, nvCheck1, nvCheck2, nvCheck3;
begin
SetDialogTitle(DLG_ASK_OPTIONS, "More Options");
szMsg = "Select from the additional options below.";
szText1 = "Shortcut option 1";
szText2 = "Shortcut option 2";
szText3 = "Shortcut option 3";
nvCheck1 = TRUE;
nvCheck2 = TRUE;
nvCheck3 = FALSE;
// Display the check box (NONEXCLUSIVE) dialog.
nValue = NONEXCLUSIVE;
nResult = AskOptions (nValue, szMsg,
szText1, nvCheck1,
szText2, nvCheck2,
szText3, nvCheck3);
//This is the troublesome code... Not sure how to handle this...
//if (nResult = BACK) then
// goto [Where?];
//endif;
end;
如您所见,底部附近有一条线,我可以在那里处理后退按钮,我只是不知道如何实际返回到上一个对话框。
我建议不要尝试将 Basic MSI table 驱动的对话框和 InstallScript 代码驱动的对话框交织在一起。这将很困难,最好的情况下可能会导致一些奇怪的育儿问题,最坏的情况下可能会导致注意力不集中。
goto <previous dialog label>;
方法作为显示多个对话框的脚本的一部分工作。通过向后跳转,它会将该标签之后的对话框显示为下一个对话框。所以你想以某种方式模拟它。如果您从控制事件中显示此 InstallScript 对话框,也许您应该设置一个 属性,使您能够确定下一个要显示的对话框。例如,如果您将 属性 DLGBUTTON 设置为 NEXT 或 BACK,您可以根据 DLGBUTTON 的值创建两个具有互斥条件的 NewDialog 控件事件。如果在其他地方调用此自定义操作,请相应地调整调用程序。
但是,如果可能的话,请尝试使用 MSI tables 实现此对话框,并避免非内聚 UI 的许多困难。