用visualstudio制作web安装程序.doc
如何用VS2005制作WEB安装程序网站完成后,需要部署到目标机器上,方法有很多,直接把文件COPY到目标机器上,执行SQL脚本,配置IIS,这样可以做到;也可以使用INSTALLSHIELD这样到专业制作软件来打包。本篇文章是使用VS2005自带到安装部署工具来制作安装文件。涉及到到内容包括使用安装部署工具,建立数据库,配置IIS,文件操作,注册表等。参考了网上关于使用VS制作安装程序的文章。环境WINDOWS2003VS2005SQL2005。注本文只是为了实现,没有强调方法,变量等的写法标准。使用VS2005制作安装程序的时候,有多种选择,如下图我想一般常用的可能就最上面的两种。当使用WEB安装项目时,执行制作好的MSI安装文件时,会发现实际上是添加虚拟目录而不是添加网站,而且无法选择安装目录,当然,可以自己写脚本来对IIS进行修改。不过在这篇文章里,将不采用此模式。本篇文章用的是使用“安装项目”,就和打包WIN程序一样,把WEB文件部署到目标机器上,然后重写INSTALL方法,配置IIS,执行SQL脚本,修改WEBCONFIG文件等。在开始整个过程之前,需要先了解一下“预编译”的概念,MSDN上的说明是默认情况下,在用户首次请求资源(如网站的一个页)时,将动态编译ASPNET网页和代码文件。第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率。请查阅MSDN“预编译”相关文档。准备一个文件DBSQLTXT,在里面包含连接数据库后需要执行的SQL脚本,在本例中使用了简单的一个CREATETABEL的SQL。好了,现在开干,吼吼打开VS2005,打开一个网站项目,这里是打开的本地LOCALHOST,如图新加一个页面,随便取个名字(本文中为CLIENTCALLBACKASPX),然后写一个简单的按钮事件即可,这不是本文的重点,由你随意处理_再添加WEB配置文件即WEBCONFIG,在下添加此文件到时候是需要发布到目标机器上的。(关于连接数据库字符串,VS2005里面有专门的CONNECTIONSTRINGS,本文未使用,可查阅帮助)点击生成网站,访问页面,OK选择菜单生成=发布网站点击确定后,网站已经生成,这些就是需要部署到目标机器上的所有文件。点击菜单文件=添加=新建项目,添加安装部署项目,如图添加安装项目类库删除默认的CLASS1CS,新加一个安装程序类文件,名为MYINSTALLERCS在此项目中,添加对SYSTEMENTERPRISESERVICES和SYSTEMDIRECTORYSERVICES的引用,在操作IIS的时候,需要用到。在文件中添加USINGSYSTEMUSINGSYSTEMIOUSINGSYSTEMDIRECTORYSERVICESUSINGSYSTEMREFLECTIONUSINGSYSTEMDATAUSINGSYSTEMDATASQLCLIENTUSINGSYSTEMCONFIGURATIONINSTALLUSINGSYSTEMMANAGEMENTUSINGSYSTEMCOLLECTIONSUSINGMICROSOFTWIN32USINGSYSTEMCOLLECTIONSSPECIALIZED如果编译的时候出错,请添加相关引用。修改文件如下图注意要手动添加INSTALLER将DBSQLTXT文件放到此项目中,在属性中设置为“嵌入的资源”回到MYWEBSETUP项目,点击查看属性,可以设置安装文件到显示相关信息,如图选择文件系统,如图然后(在文件系统中,在属性里面可以设置安装程序默认到安装路径)添加一个叫BIN文件夹并添加在生成网站时BIN目录下的DLL文件,如图在应用程序文件夹下在生成网站时目录下的文件,添加后如图选择“用户界面编辑器”,添加两个文本框A和B,A将作为安装新站点后的IIS设置,B将作为数据库操作时的参数设置,调整位置后如下调整A的属性,这里只选择了显示两个输入框,属性分别为IISSERVER和PORT,值为LOCALHOST和9998,其他的你可以自己调整。如图文本框B的设置如下OK,文本框设置完毕。当然,你还可以选择其他的多种文本框,如协议什么的。打开自定义操作面板然后在CUSTOMACTIONDATA中输入/DBNAMEDBNAME/SERVERDBSERVERNAME/USERUSERNAME/PWDPASSWORD/IISIISSERVER/PORTPORT/TARGETDIR“TARGETDIR\“这些参数就是文本框A和B上的输入框的值,在安装过程中可以获得,然后进行处理。至此,基本的安装文件已经制作完毕。进行生成,然后点击安装,可以看到文件已经复制到了相应到目录。接下来就要接收参数对IIS和数据库进行处理。打开SETUPCLASSLIBRARY项目下的MYINSTALLERDESIGNERCS,修改此文件。申明几个变量PRIVATESYSTEMDATASQLCLIENTSQLCONNECTIONSQLCONNPRIVATESYSTEMDATASQLCLIENTSQLCOMMANDCOMMANDPRIVATESTRINGDBNAMEPRIVATESTRINGSERVERNAMEPRIVATESTRINGADMINNAMEPRIVATESTRINGADMINPWDPRIVATESTRINGIISPRIVATESTRINGPORTPRIVATESTRINGDIRPUBLICSTATICSTRINGVIRDIRSCHEMANAME“IISWEBVIRTUALDIR“PRIVATESTRING_TARGETPRIVATEDIRECTORYENTRY_IISSERVERPRIVATEMANAGEMENTSCOPE_SCOPEPRIVATECONNECTIONOPTIONS_CONNECTION连接数据库服务器到方法REGIONCONNECTDATABASE连接数据库PRIVATEBOOLCONNECTDATABASE{IFCOMMANDCONNECTIONSTATECONNECTIONSTATEOPEN{TRY{COMMANDCONNECTIONOPEN}CATCHEXCEPTIONE{RETURNFALSE}}RETURNTRUE}ENDREGION如果不能正确连接数据库服务器,请检查你的连接字符串,或者将连接字符串写入文件查看。不好意思,我不知道如何对这种安装部署程序进行DEBUG,SORRY咯读取SQL文件的方法REGIONGETSQL从文件中读取SQL,在读取包含SQL脚本的文件时需要用到,参考自MSDNPRIVATESTRINGGETSQLSTRINGNAME{TRY{ASSEMBLYASMASSEMBLYGETCUTINGASSEMBLYSTREAMSTRMASMGETMANIFESTRESOURCESTREAMASMGETNAMENAME““NAMESTREAMREADERREADERNEWSTREAMREADERSTRMRETURNREADERREADTOEND}CATCHEXCEPTIONGETEXCEPTION{THROWNEWAPPLICATIONEXCEPTIO