mysql的开始菜单_asp.net 部署数据库、开始菜单、桌面快捷方式实例(下)

asp.net 部署数据库、开始菜单、桌面快解方式实例(上)

3.添加安装程序类文件WebSetupTest.cs 里面重载Install和Uninstall方法.

public override void Install(IDictionary stateSaver)

{

bool TrustedConnection=false;

base.Install (stateSaver);

try

{

if(this.Context!=null)

{

StringDictionary parameters = Context.Parameters  ;

string[] keys =new string[parameters.Count];

parameters.Keys.CopyTo(keys,0);

"把数据库\服务器名\数据库用户名\数据库密码\安装路径写进 stateSaver"#region "把数据库\服务器名\数据库用户名\数据库密码\安装路径写进 stateSaver"

//MessageBox.Show(this.Context.Parameters["target"].ToString());

stateSaver.Add("database",this.Context.Parameters["database"].ToString());

stateSaver.Add("server",this.Context.Parameters["server"].ToString());

stateSaver.Add("username",this.Context.Parameters["username"].ToString());

stateSaver.Add("password",this.Context.Parameters["password"].ToString());

stateSaver.Add("target",this.Context.Parameters["target"].ToString());

#endregion

//测试连接#region //测试连接

//can encrypt here

string connectionstring= "Data Source=" + stateSaver["server"].ToString() ;

connectionstring+= ";Initial Catalog=" + stateSaver["database"].ToString() ;

if(stateSaver["username"]!=null && stateSaver["username"].ToString().Length!=0)

{

SqlConnection conn =new SqlConnection( "server=" + stateSaver["server"].ToString()

+ ";database=master;Uid=" + stateSaver["username"].ToString() +";Password=" + stateSaver["password"].ToString());

conn.Open();

conn.Close();

conn.Dispose();

connectionstring+= ";User ID=" + stateSaver["username"].ToString() ;

connectionstring+= ";Password=" + stateSaver["password"].ToString() ;

}

else

{

//信任连接

SqlConnection conn =new SqlConnection( "Data Source=" + stateSaver["server"].ToString()

+ ";Initial Catalog=master;trusted_connection=yes");

conn.Open();

conn.Close();

conn.Dispose();

TrustedConnection=true;

stateSaver.Add("trustedconnection",true);

connectionstring+=";Trusted_connection=yes";

}

#endregion

//把数据库连接字符串写进web.config文件.#region //把数据库连接字符串写进web.config文件.

XmlDocument doc = new XmlDocument();

doc.Load(stateSaver["target"].ToString()+ @"Web.config");

XmlNode connectionNode = doc.SelectSingleNode(@"configuration/appSettings/add[@key='Conn_WebSetupTest']");

if(connectionNode!=null)

{

connectionNode.Attributes["value"].Value = connectionstring;

doc.Save( stateSaver["target"].ToString()+ @"Web.config");

EventLog.WriteEntry("安装数据","Configuration file processed"); //写日志

}

else

{

//This error will ensure installation is uncomplete

throw new InstallException("没有数据库连接串!");

}

#endregion

//执行数据库脚本,安装数据库#region //执行数据库脚本,安装数据库

DataBase dbInstall =null;

if(TrustedConnection)

{

dbInstall= new DataBase(stateSaver["server"].ToString(),stateSaver["database"].ToString(),

stateSaver["target"].ToString());

}

else

{

dbInstall= new DataBase(stateSaver["server"].ToString(),stateSaver["database"].ToString(),

stateSaver["username"].ToString(),stateSaver["password"].ToString(),stateSaver["target"].ToString());

}

dbInstall.CreateDataBase();

dbInstall.InsertDate();

#endregion

//部署桌面快捷方式*******************#region//部署桌面快捷方式*******************

StreamWriter sw2=System.IO.File.CreateText(Context.Parameters["des"].ToString()+"WebSetupTest.url");

stateSaver.Add("DeskQuick",Context.Parameters["des"].ToString()+"WebSetupTest.url"); //保存桌面快诫方式文件绝对地址

//Context.Parameters["des"].ToString()是对应的桌面地址

string webdirs=Context.Parameters["webdir"].ToString();

//Context.Parameters["webdir"].ToString()对应的路径,在安装项目里面作为参数传入

string webdirsNew = webdirs.Substring(0,webdirs.Length-1);

webdirs = webdirsNew.Substring(webdirsNew.LastIndexOf(@"\")+1);

string Urls=@"URL=http://localhost/"+webdirs+@"/index.aspx";

sw2.WriteLine("[InternetShortcut]");

sw2.WriteLine(Urls);

sw2.WriteLine("modified=228928983");

sw2.WriteLine("IconIndex=0");

//sw2.WriteLine("IconFile="+webdirsNew+"\\Resources\\usa_folder_dialup.ico");

sw2.WriteLine("IconFile="+webdirsNew+"\\images\\usa_folder_dialup.ico");

sw2.Flush();

sw2.Close();

#endregion

部署开始菜单 ***************#region 部署开始菜单 ***************

string startMenue=Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);

if(File.Exists(startMenue+"\\WebSetupTest.url"))

{

if(MessageBox.Show("开始菜单已经存在,是否有覆盖它?","安装开始菜单",MessageBoxButtons.YesNo,MessageBoxIcon.Question,

MessageBoxDefaultButton.Button1) == DialogResult.Yes)

{

File.Copy(Context.Parameters["des"].ToString()+"WebSetupTest.url",startMenue+"\\WebSetupTest.url",true);

}

else

{

throw new InstallException("开始菜单已经存在,安装取消");

}

}

else

{

File.Copy(Context.Parameters["des"].ToString()+"WebSetupTest.url",startMenue+"\\WebSetupTest.url",false);

}

stateSaver.Add("StartMenueFile",startMenue+"\\WebSetupTest.url"); //保存开始菜单文件绝对地址

#endregion

}

}

catch(Exception ex1)

{

throw new System.Configuration.Install.InstallException(ex1.ToString());

}

}

public override void Uninstall(IDictionary savedState)

{

try

{

if(savedState!=null)

{

base.Uninstall (savedState);

删除快捷键,删除开始菜单#region 删除快捷键,删除开始菜单

//删除快捷键

if(File.Exists(savedState["DeskQuick"].ToString()))

{

File.Delete(savedState["DeskQuick"].ToString());

}

//删除开始菜单

if(File.Exists(savedState["StartMenueFile"].ToString()))

{

File.Delete(savedState["StartMenueFile"].ToString());

}

#endregion

//删除数据库#region //删除数据库

if(MessageBox.Show("要删除数据库吗?" +savedState["database"].ToString()+".\n ","确认删除数据库",MessageBoxButtons.YesNo,MessageBoxIcon.Question  ,MessageBoxDefaultButton.Button2)== DialogResult.No)

{

return;

}

DataBase dbInstall=null;

if(savedState["trustedconnection"]!=null && (bool)savedState["trustedconnection"])

{

dbInstall= new DataBase(savedState["server"].ToString(),savedState["database"].ToString(),

savedState["target"].ToString());

}

else

{

dbInstall= new DataBase(savedState["server"].ToString(),savedState["database"].ToString(),

savedState["username"].ToString(),savedState["password"].ToString(),savedState["target"].ToString());

}

dbInstall.DropDataBase();

#endregion

}

else

{

MessageBox.Show("Saved state was nullsome error.");

throw new ApplicationException("卸载需要的参数不存在!");

}

}

catch(InstallException inst)

{

throw new InstallException(inst.Message);

}

catch(Exception generic)

{

throw new InstallException(generic.Message);

}

}

(四)在同一解决方案里添加'Web安装项目"WebSetup

1.打开"文件系统"视图

(1)"web应用程序文件夹"-->右键"添加"-->"项目输出" 选择"WebSetupTest"里的"主输出"和"内容文件",如下图:

672e5d50b32c9acf097ad6cb1463c3b0.gif

主输出一般是dll文件,内容文件包括aspx文件\web.config\images目录等等.

(2)"web应用程序文件夹"--新建目录"install",然后"install"右键"项目输出" 选择"WebSetupLib"里的"主输出"和"内容文件"

2.打开"用户界面"视图.

(1)."安装"--"启动"-->右键"添加对话完"--"许可协议".

添加完毕后在"许可协议"的"属性窗口"中添加刚才的UserProtocol.rtf文件.

(2).用上面一样的方法添加"文本框(A)",在其属性里设置服务器和数据库信息

42e7e3ac089e00e98c3f276df6c6a1a6.gif

下图是上面是两个对话框添加完毕后的"用户界面"视图.

4ca781e78b3de2774031b3b90f41fa9a.gif

3.打开"自定义操作"视图.

(1)"安装"-->右键"添加自定义操作"选择"install"目录下的"主输出来自WebSegtupLib",命名为Install

它是设置自定义的数据/快捷方式/开菜单等.

2dfa024d60119cc613a237b18ed4b788.gif

(2)在上面的install属性窗口里"CustomActionData"的值为/server=[SERVER_NAME] /target="[TARGETDIR]\" /database=[DATABASE_NAME] /username=[USER_NAME] /password=[PASSWORD] /version=[WINDOWSVERSION] /des="[DesktopFolder]\" /webdir="[TARGETDIR]\"

(3)"卸载"--右键"添加自定义操作"选择"install"目录下的"主输出来自WebSegtupLib".命名为UnInstall

这样卸载的时候将删除数据库/快捷方式/开菜单等.下图是两个子定义操作后的"自定义操作"视图.

23a72fd0259091882feca4638391178c.gif

4."启动条件"视图使用默认值.

五.编译安装项目

编译后将生成WebSetup.msi安装文件.这样就可以安装了.下面是安装效果图

f7567efd048b82f79421a6cc1b25f124.gif

3aa95fc88ea62ebf76344c05dce49efd.gif

323febc0282200fdd157d209c883fc7b.gif

六.参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值