最近公司要求OA要以安装的形式,方便实施人员安装到客户机器上。
之前是在好几年前用VS2003的打包过Web项目,不过早已忘却。
所以第一个想法就是使用搜索引擎查找,网上也有许多介绍,不过有些讲的比较粗,看不太明白。还是动手实践一下,或许会清爽明朗。
在测试Web项目中新建一个Web安装项目,如下图:
在新建的安装项目,右击项目如下图:
选择项目输出,选择要输出的项目,如下图:
我选一个Web网站,则只有内容输出选项,选中内容文件选择确定。
如果选Web项目,则如下图:
右击项目点击属性,则出现如下图:
再点击系统必备:
这些选择打包程序需要包含的组件,主要是我们需要.Net Framework组件,我们需要打包进来。
这里将.Net Framework 2.0(X86)打钩,并且在下面指定系统必备组件的安装位置选择第二项,这样就打钩的组件就会跟进安装包了。
第一项则是组件从微软网站上下载,第三项则是指定自定义位置。
点击确定,接下来,我们右击项目,如下图:
点击启动条件,如下图:
我们可以看到启动条件,我们来看看IIS条件,右击IIS条件,查看属性窗口,如下图:
这里可以看到设置条件,IISVERSION >= "#5"表示IIS版本需要5.0以上,如果需要6.0以上则是IISVERSION >= "#6"。
下面我们来设置安装界面。右击项目如下图:
选择点击用户界面,如下图:
这里我已经添加了三个步骤,分别是许可协议、客户信息、文本框(A)这三个。
通过右击启动,点击添加对话框,如下图:
来选择我们需要的步骤。
右击许可协议步骤,查看属性如下图:
我们知道在安装很多软件的时候都会有一步是许可协议,然后让我们点击同意,然后再下一步,就是这里啦。
我们这里添加了一个license.rtf文件到安装项目,这里就可以选择这个文件了。
由于在安装过程也需要设置数据库,所以我们还需要让安装用户在安装过程中输入数据库服务器信息,这里就是文本框(A)这个步骤啦。右击步骤查看属性窗口如下图:
这里有四个文本框可以使用,我们只需要三个数据库服务器、帐号、密码,所以第四个Visible设置为false。
由于需要配置数据库,则我们需要再建一个项目,新建一个类库项目,然后添加一个安装类,如下图:
生成一个安装类如下图,是一个继承Installer类的类。
然后我们需要在安装类中编写代码啦。
我们重写Install方法:
public override void Install(IDictionary stateSaver)
这里就是我们需要写配置数据库信息。
然后我们在安装项目中添加这个项目,如下图:
然后右击安装项目,如下图:
选择自定义操作,则出现自定义操作界面如下图:
然后我们在安装的操作中添加刚才的新建的项目,右击安装,添加自定义操作,如下图:
选中并点击确定。接下来我们需要在安装过程传递输入的数据传递这个项目中,右击安装下面的刚添加的主输出,如下图:
属性框中的CustomActionData就是指定要传递到安装程序的自定义数据。
然后我们再回到新建的那个安装类,在Install方法就可以接收安装过程中输出的数据库信息,如下:
public override void Install(IDictionary stateSaver) { base.Install(stateSaver); string databaseServer = Context.Parameters["server"].ToString(); string userName = Context.Parameters["user"].ToString(); string userPass = Context.Parameters["pwd"].ToString(); string targetdir = Context.Parameters["targetdir"].ToString(); //这里操作添加数据库,只要执行创建数据库的脚本就可以了。 //这个是测试在安装目录下添加接收到的用户填写的数据库信息 File.WriteAllText(Path.Combine(targetdir, "log.txt"), databaseServer + "/n/r" + userName + "/n/r" + userPass); }
这里Context.Parameters["server"]的Server和上面设置CustomActionData是对应的。
这样就完成了安装包的制作了,编译生成一下,我们测试一下安装包是否真的有效。
下面接一下制作完安装过程:
安装过程就这么多了。
下面我们来看看是否已经安装成功,如下图:
说明Web网站已经成功被安装到虚拟目录下了。
下载示例