之前没有做过安装盘,一直在做Web开发,基本上不用安装部署,只要用VS2005发布程序就OK了
这次我们的站点用到一个服务,测试那边正好忙,负责测试的同事不会部署,改配置有点麻烦~
VS2005的安装部署也挺简单的~主要安装部署服务以及改写配置可能有点麻烦
不过做过一次安装部署的话,肯定会觉得也是很简单的了~
下面是对已开发好的服务安装部署:
1.在服务的文件上右键查看设计器,打开服务文件设计视图
在设计视图上点右键,添加“安装程序”保存为ProjectInstaller.cs
设置serviceProcessInstaller的Account为LocalSystem
设置serviceInstaller的StartType为Automatic
2.然后添加安装部署项目(添加项目和服务相关的项目为主输出,添加服务为内容输出项)
3.选择安装部署项目的“自定义操作编辑器”
在安装文件夹上添加自定义操作,选择应用程序->主输出->服务所在的项目,确认
在卸载文件夹上添加自定义操作,选择应用程序->主输出->服务所在的项目,确认;设置Arguments参数为/u
4.如果要让安装过程中来完成配置的修改
则需要安装项目->用户界面里面添加文本框,要属性里设置各文本框的property属性以及label(提示)
再回到自定义操作编辑器,在安装文件夹中添加的主输出的属性设置CustomActionData项的值/dbsource=[DBSOURCE] /dbuser=[DBUSER] /dbpassword=[DBPASSWORD] /sleeptime=[SLEEPTIME]
5.打开ProjectInstaller.cs的代码,写一个继承基类Install的方法
2 {
3 base .Install(stateSaver);
4
5 string dbSource = this .Context.Parameters[ " dbsource " ];
6 string dbuser = this .Context.Parameters[ " dbuser " ];
7 string dbpassword = this .Context.Parameters[ " dbpassword " ];
8 string sleepTime = this .Context.Parameters[ " sleeptime " ];
9 AppSettings.path = this .Context.Parameters[ " assemblypath " ];
10
11 string connStr = " Data Source= " + dbSource + " ;user= " + dbuser + " ;password= " + dbpassword + " ; " ;
12
13 AppSettings.SetDBConnectionValue(connStr);
14 AppSettings.SetSleepTimeValue(sleepTime);
15
16 }
this.Context.Parameters["assemblypath"] 为安装后应用程序的路径(在保存app.config时有用)
install方法中用到的AppSettings类如下:
2 {
3 public static string path = string .Empty;
4 // 读取Value值
5 public static string GetConfigString( string key)
6 {
7 return System.Configuration.ConfigurationManager.AppSettings[key];
8 }
9 // 写操作
10 protected static void SetValue( string AppKey, string AppValue)
11 {
12 try
13 {
14 XmlDocument xDoc = new XmlDocument();
15 // 获取可执行文件的路径和名称
16 xDoc.Load(path + " .config " );
17
18 XmlNode xNode;
19 XmlElement xElem1;
20 XmlElement xElem2;
21 xNode = xDoc.SelectSingleNode( " //appSettings " );
22
23 xElem1 = (XmlElement)xNode.SelectSingleNode( " //add[@key=' " + AppKey + " '] " );
24 if (xElem1 != null ) xElem1.SetAttribute( " value " , AppValue);
25 else
26 {
27 xElem2 = xDoc.CreateElement( " add " );
28 xElem2.SetAttribute( " key " , AppKey);
29 xElem2.SetAttribute( " value " , AppValue);
30 xNode.AppendChild(xElem2);
31 }
32 xDoc.Save(path + " .config " );
33
34 }
35 catch (Exception Ex)
36 {
37 Log.WriteLog( " ----------安装配置出错!---------- " ,Ex);
38 }
39 }
40
41 public static void SetDBConnectionValue( string strValue)
42 {
43 SetValue( " ConnectionString " , strValue);
44 }
45
46 public static void SetSleepTimeValue( string strValue)
47 {
48 SetValue( " SleepTime " , strValue);
49 }