2016-06-07 90 views
0

我有一个简单的自定义操作,我在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; 

正如你可以看到,有接近底部在那里我能胜任后退按钮一条线,我只是不知道是如何真正回到前一个对话框。

回答

1

我会建议不要试图交错基本MSI表驱动的对话框和InstallScript代码驱动的对话框。这将是困难的,并可能会导致一些奇怪的育儿问题充其量,或在最坏的情况下失去焦点。

goto <previous dialog label>;方法作为显示多个对话框的脚本的一部分。通过向后跳转,它会将该标签后面的对话框显示为下一个标签。所以你想以某种方式模拟。如果您从控件事件中显示此InstallScript对话框,则可能应该设置一个属性,使您可以确定下一个要显示的对话框。例如,如果你设置一个属性DLGBUTTONNEXTBACK,您可以创建基于的DLGBUTTON值互斥条件的两个NewDialog控制活动。如果此自定义操作正在其他地方被调用,请相应地调整调用者。

但是,如果可能的话,尝试使用MSI表实现此对话框,并避免使用非内聚UI的很多困难。

+0

绝对回到使用MSI对话框。并从此取得成功。我去InstallScript对话框的原因是我最初使用MSI对话框,但误解了事件的工作方式。现在全部整理出来。 –

相关问题