如题:
我打断点跟了,Installer类中如果有异常,没有近Roollback方法,这两个方法是重载的,难道还要自己手动调?还有就是Uninstall()方法,我安装好WEB站点后,用Windows的添加/删除程序删除安装的程序,在Uninstall()里打了个debuger.break()断点也没有进来,可见这两个方法就是没有被调用过。(注:在install()方法中打断电就可以跑进来) 那位仁兄做过Installer安装的帮忙解释下。因为我想在这两个方法中删除我建的数据库。
我打断点跟了,Installer类中如果有异常,没有近Roollback方法,这两个方法是重载的,难道还要自己手动调?还有就是Uninstall()方法,我安装好WEB站点后,用Windows的添加/删除程序删除安装的程序,在Uninstall()里打了个debuger.break()断点也没有进来,可见这两个方法就是没有被调用过。(注:在install()方法中打断电就可以跑进来) 那位仁兄做过Installer安装的帮忙解释下。因为我想在这两个方法中删除我建的数据库。
解决方案 »
- C# VS2010+SQL2005 如何提取数据库中的内容
- 大家好,救急啊,c#通讯问题
- 注册码的问题
- 使用DataGridView出现的问题,修改完不能提交到数据库
- 请问 Cache 的项数对性能有多大影响?
- 读取多个网面xmlhttp还是WebRequest的异步好
- 我继承了DataGridTextBoxColumn类,和EventArgs类,实现了DataGrid行的颜色按照字段值的变化而变化.问题是如何把这两个类做可重复使用的类?
- 求助!~ c#.net 登录页面 oracle 指正一下
- 哪里有C#,Winform程序运行时首先弹出输入用户名和密码输入框的示例?
- 知道一个位图结构体的指针 如何操作这个位图
- 一个解决方案中有多个项目,怎样在点击项目时自动将该项设为启动项,而不用右键设为启动项? 看别人的demo是可以的,但不知道怎样设置
- MySQLDriverCS 绑定到dataviewgrid以后 怎么更新
namespace DBInstaller
{
[RunInstaller(true)]
public class DBInstaller : Installer
{
#region "const variable"
//webservice虚拟目录
private const string WEBSERVICE_VIRTUALPATH = "QASWebService";
#endregion #region private variable
//数据库名
private string m_dbName; //数据库服务器地址
private string m_server; //用户名
private string m_user; //密码
private string m_pwd; //连接字符串
private string m_connString;
#endregion #region Base Class's Function
/// <summary>
/// 重写OnBeforeInstall方法
/// </summary>
/// <param name="savedState"></param>
protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
{
System.Diagnostics.Debugger.Break();//这这断点安装时可以进来
//取得DB链接信息
m_dbName = this.Context.Parameters["dbname"];
m_server = this.Context.Parameters["server"];
m_user = this.Context.Parameters["user"];
m_pwd = this.Context.Parameters["pwd"];
base.OnBeforeInstall(savedState);
} /// <summary>
/// 重写Install方法
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver); //创建数据库
CreatDataBase(m_dbName); //写Web.config
WriteWebConfig(); } /// <summary>
/// 重写Commit方法
/// </summary>
/// <param name="savedState"></param>
public override void Commit(System.Collections.IDictionary savedState)
{
base.Commit(savedState);
} /// <summary>
/// 重写Rollback方法
/// </summary>
/// <param name="savedState"></param>
public override void Rollback(System.Collections.IDictionary savedState)
{
System.Diagnostics.Debugger.Break();//这里有断点
//删除数据库
ExcuteSql(true, " IF EXISTS (SELECT NAME FROM SYSDATABASES WHERE NAME='" + m_dbName + "') " +
" DROP DATABASE " + m_dbName);
base.Rollback(savedState);
} /// <summary>
/// 重写OnBeforeUninstall方法
/// </summary>
/// <param name="savedState"></param>
protected override void OnBeforeUninstall(System.Collections.IDictionary savedState)
{
System.Diagnostics.Debugger.Break();//这里有断点
//删除数据库
ExcuteSql(true, " IF EXISTS (SELECT NAME FROM SYSDATABASES WHERE NAME='" + m_dbName + "') " +
" DROP DATABASE " + m_dbName);
//卸载服务
InstallWindowsService(false);
base.OnBeforeUninstall(savedState);
} /// <summary>
/// 重写Uninstall方法
/// </summary>
/// <param name="savedState"></param>
public override void Uninstall(System.Collections.IDictionary savedState)
{
base.Uninstall(savedState);
}
}
}
[email protected]