//部署桌面快捷方式*******************#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"里的"主输出"和"内容文件",如下图: 主输出一般是dll文件,内容文件包括aspx文件/web.config/images目录等等. (2)"web应用程序文件夹"--新建目录"install",然后"install"右键"项目输出" 选择"WebSetupLib"里的"主输出"和"内容文件" 2.打开"用户界面"视图. (1)."安装"--"启动"-->右键"添加对话完"--"许可协议". 添加完毕后在"许可协议"的"属性窗口"中添加刚才的UserProtocol.rtf文件. (2).用上面一样的方法添加"文本框(A)",在其属性里设置服务器和数据库信息 下图是上面是两个对话框添加完毕后的"用户界面"视图.
3.打开"自定义操作"视图. (1)"安装"-->右键"添加自定义操作"选择"install"目录下的"主输出来自WebSegtupLib",命名为Install 它是设置自定义的数据/快捷方式/开菜单等.
(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 这样卸载的时候将删除数据库/快捷方式/开菜单等.下图是两个子定义操作后的"自定义操作"视图. 4."启动条件"视图使用默认值. 五.编译安装项目 编译后将生成WebSetup.msi安装文件.这样就可以安装了.下面是安装效果图
|