情况是这样的:
我在安装的时候加了创建数据库和创建用户,这两个界面是自己加的另外弹出来的,如果在这两个界面弹出来的情况下,点击另外一个系统默认的安装进度的取消按钮达不到效果,也不会取消,界面又不会关闭,就死在那

解决方案 »

  1.   

    点击“取消”不会触发Rollback 事件吗?
      

  2.   

    If(MessageBox(hwnd,_T(""),_T(""),MB_YESNO)==IDNO)
    {
        MessageBox(hwnd,_T("你点击了取消!"),_T("Waring!"),MB_OK);
    }嗯,大致这样
      

  3.   

    弹出来的话 为什么不用ShowDialog  还让主页面可以点?
    在弹出页面里写个取消方法
    在主页面上调用
      

  4.   

    弹出的页面本来就是用的ShowDialog
      

  5.   

    你在开玩笑吧   安装页面 ShowDialog创建数据库  然后还可以点回安装页面?
      

  6.   

    创建Installer1.cs 文件,在里面把所有事件继承一次,然后把这个文件添加到打包工程中,在打包工程[用户界面编辑器]中,自己添加一个带有按钮的窗体,然后在Installer1.cs文件中访问那个按钮被按下就可以了
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
            public override void Rollback(IDictionary savedState)
            {
                base.Rollback(savedState);
                MessageBox.Show("Rollback");
            }        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
            public override void Uninstall(IDictionary savedState)
            {
                base.Uninstall(savedState);
                MessageBox.Show("Rollback");
            }        protected override void OnAfterInstall(IDictionary savedState)
            {
                base.OnAfterInstall(savedState);
                MessageBox.Show("OnAfterInstall");
            }        protected override void OnAfterRollback(IDictionary savedState)
            {
                base.OnAfterRollback(savedState);
                MessageBox.Show("OnAfterRollback");
            }        protected override void OnAfterUninstall(IDictionary savedState)
            {
                base.OnAfterUninstall(savedState);
                MessageBox.Show("OnAfterUninstall");
            }        protected override void OnBeforeInstall(IDictionary savedState)
            {
                base.OnBeforeInstall(savedState);
                MessageBox.Show("OnBeforeInstall");
            }        protected override void OnBeforeRollback(IDictionary savedState)
            {
                base.OnBeforeRollback(savedState);
                MessageBox.Show("OnBeforeRollback");
            }        protected override void OnBeforeUninstall(IDictionary savedState)
            {
                base.OnBeforeUninstall(savedState);
                MessageBox.Show("OnBeforeUninstall");
            }        protected override void OnCommitted(IDictionary savedState)
            {
                base.OnCommitted(savedState);
                MessageBox.Show("OnCommitted");
            }        protected override void OnCommitting(IDictionary savedState)
            {
                base.OnCommitting(savedState);
                MessageBox.Show("OnCommitting");
            }        public void OutPutLog(string strMsg)
            {
            }
      

  7.   


    你要是动手试下,会发现用了ShowDialog了但是界面都会显示在底层,被系统默认的安装界面盖住
      

  8.   

    可以利用win32的api,在设置数据库的时候,把系统默认安装的界面隐藏掉,这样应该可以解决问题吧,但是具体做法不知道诶