代码之家  ›  专栏  ›  技术社区  ›  devios1

取消MSI而不显示“安装中断”对话框

  •  3
  • devios1  · 技术社区  · 15 年前

    如果用户取消了 已经启动 ,但如果安装尚未启动(如果在欢迎屏幕上单击“取消”按钮,则情况并非如此)。

    我尝试过各种方法,但我对Windows安装程序的工作原理缺乏正确的理解,无法理解解决方案。

    开始工作了!最后我把这两个建议结合起来——我希望我能给你们两个答案,但我会给雷,因为他代表的票数最低。但我会给他们两个都投赞成票。我是这样做的(我仍然很惊讶它的工作原理):

    Publish 元素,但我没有调用事件(没有名为“Finish”的事件),而是将属性“AbortInstall”设置为 1

    <Publish Dialog="SimpleDlg"
                        Control="Cancel"
                        Property="AbortInstall"
                        Value="1">1</Publish>
    

    我是在Wix/Fragment/UI下的自定义集文件WixUI\u Simple.wxs中完成的

    然后,在UserExit.wxs内部,我修改了InstallUISequence,如下所示:

    <InstallUISequence>
                <Show Dialog="Simple_UserExit"
                        OnExit="cancel">NOT AbortInstall = 1</Show>
            </InstallUISequence>
    

    谢谢你们俩!

    3 回复  |  直到 15 年前
        1
  •  1
  •   Ray Dey    15 年前

    您可能可以在Cancel button控件上为WelcomeDlg创建一个Publish元素,如下所示:

    <Publish Dialog="WelcomeDlg" Control="Cancel" Event="Finish" Value="Exit">1</Publish>
    

        2
  •  3
  •   Christopher Painter    15 年前

    请查看InstallUISequence表:

    http://msdn.microsoft.com/en-us/library/aa369543(VS.85).aspx

    请注意带有-1、-2和-3序列的特殊对话框。注意,您还可以在对话框上设置一个条件。有了一点creativity,您就可以使用一个属性作为标志来确定您的安装是否真正开始,并阻止或显示有问题的对话框。

        3
  •  1
  •   Dimiano    12 年前

    仅供参考;很有趣。
    在里面 :
    按照你的习惯 在下面 <UI> 标记位置

    <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return">1</Publish>
    <Publish Dialog="MyNewDlg" Control="Ok" Event="EndDialog" Value="Return" Order="1">1</Publish>
    

    低于 <Product> 标签插入:

    <Property Id="ExitSuccess" Value="1" />
    

    以及

    <InstallUISequence>
      <Show Dialog="MyNewDlg" After="SomeAction">Installed</Show>
      <Show Dialog="ExitDialog" OnExit="success">NOT ExitSuccess = 1</Show>
    </InstallUISequence>
    

    这就是全部。