
其中web.config中存在我们的数据库连接及系统的一些其他配置,如数据库类型等,这些配置需要在安装时进行修改。
ok,知道了我们的安装对象,现在开始做安装部署程序,首先,在解决方案中添加一个新项目,如图,项目类型为web安装项目,项目名称ehrmsetup。

项目添加完毕,选中ehrmsetup,会发现工具栏发生了一些变化,如图所示:
主要有6个工具按钮,分别代码安装部署的6大编辑器:
1、
2、
3、
4、
5、
6、
这6个编辑器不一定全部会用到,我们的demo安装就只需要用到1/4/5大部分的安装包属性均存在于ehrmsetup项目的属性中,属性界面如图:

在这里可以设置产品名称(ehrmsetup),产品编号(productcode)以及安装包全球化类型(localization)等相关的安装程序属性。除了ehrmsetup安装部署项目,我们还需要添加一个ehrmsetupcompenent项目,用来自定义安装操作,在ehrmsetupcompenent项目中添加一个新的安装程序类,如图:

名称为ehrminstaller.cs,在其中添加如下代码:
protected override void onafterinstall(idictionary savedstate) {
base.onafterinstall (savedstate);
}
public override void install(idictionary statesaver) {
base.install (statesaver);
}
protected override void onbeforeinstall(idictionary savedstate) {
base.onbeforeinstall (savedstate);
}
public override void uninstall(idictionary savedstate) {
base.uninstall (savedstate);
}
public override void rollback(idictionary savedstate) {
base.rollback (savedstate);
}
这些代码将主要负责对于安装中的操作进行自定义处理,包括建数据库,配置web.config等。为了在安装部署中调用项目ehrmsetupcompenent定义的操作,需要在项目ehrmsetup中添加ehrmsetupcompenent的主输出和项目ehrm的内容输出,具体操作是选择ehrmsetup项目后右键 —— 添加 —— 项目输出 ——选择项目ehrmsetupcompenent的主输出,添加完毕后如图:

现在回到项目ehrmsetup,打开文件系统编辑器,点击web应用程序文件夹,编辑其属性,属性界面如下:

其中比较重要的就是virtualdirectory属性,表示安装后建立的虚拟目录名称,其他属性视具体情况而定。下面通过用户界面编辑器来配置用户的安装界面,vs.net2003目前所提供的窗口比较少,如图:

基本是几个比较简单的配置窗口,所以如果需要用到一些复杂的配置,那么这些窗口就远远不够用了,不过我们可以进行部分的扩展来实现这些复杂的配置,具体方法如下:
1、在项目ehrmsetupcompenent中添加一个windows窗口frmconfig.cs,设计我们需要用的界面。
2、修改ehrminstaller.cs中的代码如下:
protected override void onafterinstall(idictionary savedstate) {
frmconfig _fc = new frmconfig();
_ fc.showdialog();
base.onafterinstall (savedstate);
}
3、这样,在安装的过程中会中断并弹出frmconfig让用户进行配置。最后就是通过自定义操作编辑器来设置安装过程中的自定义操作,从web应用程序文件夹选择主输出来自ehrmsetupcompenent(活动),添加完毕如图所示:
分别设置4个主输出的customactiondata属性为: /logicdir=[targetdir] /vitualdir=[targetvdir][targetdir]和[targetvdir]是系统部署自带属性,分别表示安装物理目录地址和虚拟目录地址。设置完这些自定义操作的传入参数后就可以直接在ehrmsetupcompenent项目的代码中进行调用,调用代码如下: public override void install(idictionary statesaver)
{
//安装物理目录
string logicdir = context.parameters["logicdir"];
//安装虚拟目录
string vitualdir = context.parameters["vitualdir"];
//根据配置安装操作
base.install (statesaver);
}
最后需要做的就是卸载时的一些文件处理:
public override void uninstall(idictionary savedstate) {
//安装物理目录
string logicdir = context.parameters["logicdir"];
//安装虚拟目录
string vitualdir = context.parameters["vitualdir"];
//处理自定义部分的安装内容,如数据库等
base.uninstall (savedstate);
}
完成了这一系列动作后,整个程序的安装雏形已经基本ok,只要在相应的地方加入实际安装中所需要进行的一系列action就可以制作一个完整的安装部署程序。
注意事项:
1、resource文件属于项目的源文件,而非内容文件,所以如果项目中有resource文件存在,则需要添加项目的源文件输出,同时利用排除筛选器设置好对*.cs文件和*.resx文件的过滤。
2、bin目录默认不在web项目中,所以打包还需要加入web项目的主输出或直接把bin目录下的文件加入到web项目中,这样生成的dll会包含在内容文件输出中。
3、安装制作过程中某些目录可能会无法创建(偶没能找到具体原因,估计是因为文件依赖性的缘故),则可以手工在web应用程序文件夹中直接创建。
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




