1、Net Web项目安装包制作在测试Web项目中新建一个Web安装项目,如下图:在新建的安装项目,右击项目如下图:选择项目输出,选择要输出的项目,如下图:我选一个Web网站,则只有内容输出选项,选中内容文件选择确定。如果选Web项目,则如下图:右击项目点击属性,则出现如下图:再点击系统必备:这些选择打包程序需要包含的组件,主要是我们需要.Net Framework组件,我们需要打包进来。这里将.Net Framework 2.0(X86)打钩,并且在下面指定系统必备组件的安装位置选择第二项,这样就打钩的组件就会跟进安装包了。第一项则是组件从微软网站上下载,第三项则是指定自定义位置。点击确定,接下
2、来,我们右击项目,如下图:点击启动条件,如下图:我们可以看到启动条件,我们来看看IIS条件,右击IIS条件,查看属性窗口,如下图:这里可以看到设置条件,IISVERSION = #5表示IIS版本需要5.0以上,如果需要6.0以上则是IISVERSION = #6。下面我们来设置安装界面。右击项目如下图:选择点击用户界面,如下图:这里我已经添加了三个步骤,分别是许可协议、客户信息、文本框(A)这三个。通过右击启动,点击添加对话框,如下图:来选择我们需要的步骤。右击许可协议步骤,查看属性如下图:我们知道在安装很多软件的时候都会有一步是许可协议,然后让我们点击同意,然后再下一步,就是这里啦。我们这
3、里添加了一个license.rtf文件到安装项目,这里就可以选择这个文件了。由于在安装过程也需要设置数据库,所以我们还需要让安装用户在安装过程中输入数据库服务器信息,这里就是文本框(A)这个步骤啦。右击步骤查看属性窗口如下图:这里有四个文本框可以使用,我们只需要三个数据库服务器、帐号、密码,所以第四个Visible设置为false。由于需要配置数据库,则我们需要再建一个项目,新建一个类库项目,然后添加一个安装类,如下图:生成一个安装类如下图,是一个继承Installer类的类。然后我们需要在安装类中编写代码啦。我们重写Install方法:public override void Install
4、(IDictionary stateSaver)这里就是我们需要写配置数据库信息。然后我们在安装项目中添加这个项目,如下图:然后右击安装项目,如下图:选择自定义操作,则出现自定义操作界面如下图:然后我们在安装的操作中添加刚才的新建的项目,右击安装,添加自定义操作,如下图:选中并点击确定。接下来我们需要在安装过程传递输入的数据传递这个项目中,右击安装下面的刚添加的主输出,如下图:属性框中的CustomActionData就是指定要传递到安装程序的自定义数据。然后我们再回到新建的那个安装类,在Install方法就可以接收安装过程中输出的数据库信息,如下:public override void I
5、nstall(IDictionary stateSaver) base.Install(stateSaver); string databaseServer = Context.Parametersserver.ToString(); string userName = Context.Parametersuser.ToString(); string userPass = Context.Parameterspwd.ToString(); string targetdir = Context.Parameterstargetdir.ToString(); /这里操作添加数据库,只要执行创建数
6、据库的脚本就可以了。 /这个是测试在安装目录下添加接收到的用户填写的数据库信息 File.WriteAllText(Path.Combine(targetdir, log.txt), databaseServer + /n/r + userName + /n/r + userPass);这里Context.Parametersserver的Server和上面设置CustomActionData是对应的。这样就完成了安装包的制作了,编译生成一下,我们测试一下安装包是否真的有效。下面接一下制作完安装过程:安装过程就这么多了。下面我们来看看是否已经安装成功,如下图:说明Web网站已经成功被安装到虚拟
7、目录下了。上一节是讲述如何制作Web安装包的过程,只要按照步骤做就可以了。这一节将讲述安装过程中如何部署数据库,以及执行其他组件的安装。在这里使用直接执行sql脚本来创建数据库。(也可以使用附件数据库文件的形式)只要在Install方法中添加执行sql脚本的方法,就是使用SqlConnection连接数据库操作。using(SqlConnectionconnection =newSqlConnection(connectionString) connection.Open(); ExecuteSQL(connection, GetResource(createdatabase.sql);/ /
8、 执行sql语句/ / / void ExecuteSQL(SqlConnection connection, string sql) SqlCommand cmd = new SqlCommand(sql, connection); cmd.ExecuteNonQuery();/ / 获取数据库登录连接字符串/ / 数据库名称/ private string GetConnectionString(string databasename) return server= + Context.Parametersserver.ToString() + ;database= + (string.I
9、sNullOrEmpty(databasename) ? master : databasename) + ;User ID= + Context.Parametersuser.ToString() + ;Password= + Context.Parameterspwd.ToString();在这里使用嵌入式资源的形式打包sql脚本。我们添加createdatabase.sql和dropdatabase.sql添加到项目中,如下图:右击createdatabase.sql查看属性,如下图:设置生成操作为嵌入的资源。dropdatabase.sql也是如此操作。下面我们来使用代码如何读取资源的
10、脚本,就是上面代码中的GetResource方法。/ / 获取资源文件中的脚本/ / / string GetResource(string resourceName) Assembly ass = Assembly.GetExecutingAssembly(); using (Stream stream = ass.GetManifestResourceStream(ass.GetName().Name + . + resourceName) using (StreamReader reader = new StreamReader(stream, System.Text.Encoding.
11、Default) return reader.ReadToEnd(); 这样再来看install方法的全部代码,如下:/ / 安装/ / public override void Install(IDictionary stateSaver) base.Install(stateSaver); string connectionString = GetConnectionString(null); try using (SqlConnection connection = new SqlConnection(connectionString) connection.Open(); Execut
12、eSQL(connection, GetResource(createdatabase.sql); catch (Exception ex) MessageBox.Show(数据库安装失败!n数据库配置有误,请正确配置信息!n + ex.Message, 出错啦!); this.Rollback(stateSaver); 这样就完成了安装中数据库的创建。在卸载中删除数据库则需要重写Uninstall方法,来执行dropdatabase.sql中的脚本。/ / 卸载 / / public override void Uninstall(IDictionary savedState) base.U
13、ninstall(savedState); /* /这里要获取保存的链接字符串 string connectionString = try using (SqlConnection connection = new SqlConnection(connectionString) connection.Open(); ExecuteSQL(connection, GetResource(dropdatabase.sql); catch (Exception ex) MessageBox.Show(数据库卸载失败!n数据库配置有误,请正确配置信息!n + ex.Message, 出错啦!); */
14、创建表、创建示例数据的操作就是类似操作,就是打包新的资源。Web项目的数据库连接都是在Web.config中的,所以安装过程还要修改Web.config的数据库连接,这里使用简单的替换。如下:/* * 设置webconfig连接字符串 */string webconfigpath = Path.Combine(this.Context.Parameterstargetdir.ToString(), web.config);string webcofnigstring = File.ReadAllText(webconfigpath).Replace(#constring#, GetConnec
15、tionString(hxjdatabasename);File.WriteAllText(webconfigpath, webcofnigstring);Web 项目中WebConfig中配置就是替换#constring#为安装过程中生成的新的链接字符串。还有在我们的OA项目中还是用微软的AJAX库,所以还要安装Ajax包。我们将AJAX包打包进安装项目。我们执行ajax 2.0.msi的代码,如下:/* * 安装ajax2.0框架 */System.Diagnostics.Process process = new System.Diagnostics.Process();process.StartInfo.FileName = Path.Combine(this.Context.Parameterstargetdir.ToString(), Ajax 2.0.msi);process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;process.Start();process.WaitForExit();这样在安装过称中就会安装这个ajax包了。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1