日期:2014-05-17  浏览次数:20921 次

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

------解决方案--------------------
点击“取消”不会触发Rollback 事件吗?
------解决方案--------------------
If(MessageBox(hwnd,_T(""),_T(""),MB_YESNO)==IDNO)
{
    MessageBox(hwnd,_T("你点击了取消!"),_T("Waring!"),MB_OK);
}

嗯,大致这样
------解决方案--------------------
太深奥了,没弄过。学习中‘、
------解决方案--------------------

估计要在安装的那个程序里面判断了吧,c#代码中不太好做
------解决方案--------------------
引用:
引用:弹出来的话 为什么不用ShowDialog  还让主页面可以点?
在弹出页面里写个取消方法
在主页面上调用
弹出的页面本来就是用的ShowDialog

那为什么还能去点别的页面的取消?
------解决方案--------------------
在安装按钮旁放个取消按钮,安装程序用线程,取消按钮可以将这个线程杀死
------解决方案--------------------
创建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.OnAfte