Home > Database > Mysql Tutorial > 项目打包时自定义安装属性,如数据库名等

项目打包时自定义安装属性,如数据库名等

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 15:16:57
Original
1186 people have browsed it

项目打包总结 实现功能:根据用户自定义指定的数据库名及其他一些文件的安装如 (iewebcontrols) 步骤: 新建一项目: visual C# 项目 , 选中类库模板 , 如命名为 myInstall, 在此项目下面添加一新项:选择安装程序类( Installer1.cs ),在此我采用默认名。

项目打包总结

实现功能:根据用户自定义指定的数据库名及其他一些文件的安装如(iewebcontrols)

步骤:

新建一项目:visual C#项目  , 选中类库模板 ,如命名为myInstall,在此项目下面添加一新项:选择安装程序类(Installer1.cs),在此我采用默认名。此安装类库将实现数据库的安装及其他一些文件的安装。

installer1.cs里我们将重写安装类的方法:见参考1

Install    Commit    Rollback      Uninstall

install方法中来实现自定义的安装:

首先我们要得到一些用户变量(用户在安装时所做的操作,如数据库管理帐号等)

对于这些变量我们可以通过上下文环境来得到this.Context.Parameters["DataBaseName"];(在安装项目里将会进行设置)

在此我们一共得到五个变量。安装数据库的服务器,指定的数据库名,数据库管理员帐号,密码。以及数据库备份文件。

我们来看一下具体的代码,很简单:)

private void InstallDateBase()

{

System.Reflection.Assembly  Asm;

//                 Asm= System.Reflection.Assembly.GetExecutingAssembly();

//            System.IO.FileInfo FileInfo = new System.IO.FileInfo(Asm.Location);

//            也可以得到当前安装的目录,如wwwroot目录下myweb/你的安装工程名.dll

//下面是进行数据库连线及命令

              SqlConnection sqlConnection1 = new SqlConnection();

              string DBName = this.Context.Parameters["DataBaseName"];

              string DBServer = this.Context.Parameters["ServerName"];

              string DBUser = this.Context.Parameters["InStallAdmin"];

              string DBKey = this.Context.Parameters["InstallPassword"];

              string dir=this.Context.Parameters["dir"];

             

              StreamWriter ss=new StreamWriter(@"c:/aaa.txt",true);

              ss.WriteLine("data source=" + DBName + ";database=master;uid=" + DBUser +";password=" + DBKey);

              ss.Close();

              string CONSTR = "data source=" + DBServer +";database=master;uid=" + DBUser +";password=" + DBKey;

              sqlConnection1.ConnectionString =  CONSTR;

              //数据库将安装到system32

              string CurDir = Directory.GetCurrentDirectory() + @"/TestData/database";

              if(!Directory.Exists(CurDir))//不存在就新建一个

              {

                   Directory.CreateDirectory(CurDir);

              }

              string MSQL = "RESTORE DATABASE " + DBName +

                   " FROM DISK = '" + dir + @"/database/myDataBase.bak' " +

                   " WITH MOVE 'myDate_dat' TO '" + CurDir + @"/" + DBName + ".mdf', " +

                   " MOVE 'myDate_log' TO '" + CurDir + @"/" + DBName + ".ldf' " ;

 

              SqlCommand cmd = new SqlCommand(MSQL,sqlConnection1);

              cmd.Connection.Open();

              cmd.ExecuteNonQuery();

              cmd.Connection.Close();

              if(sqlConnection1.State == ConnectionState.Open)

              {

                   sqlConnection1.Close();

              }

              //安装TreeView

              ProcessStartInfo psi = new ProcessStartInfo();

              psi.WorkingDirectory = dir+"//database";

              psi.FileName = dir + @"/database/iewebcontrols.msi ";

              psi.UseShellExecute=true; //msi文件,如是exe不用设

             

              Process.Start(psi);

             

//有哪位兄弟帮忙看一下。下面的代码。在执行时会说有一个进程在运行,导致安装这些控件时无法运行。一定要关了。才可以.但是下面的代码比上面的代码有一点好处,下面的进程等到结束后继续整个install方法的其他代码。而上面的代码,在实际运行时,整个安装已结束了。而安装TreeView的工作才刚开始。有点不同步

//            System.Diagnostics.Process myproc=new System.Diagnostics.Process();

//            myproc.EnableRaisingEvents=true;

//      

//            string file=dir+@"/database/iewebcontrols.msi";

//      

//            myproc.StartInfo.UseShellExecute=true;

//            myproc.StartInfo.FileName = file;

//            myproc.Start();

//            myproc.WaitForExit();//此方法可以无限期等到进程运行完成,才执行下面的代码

//            if(myproc.HasExited==true)

//            {

//                 //   myproc.Kill();

//           

//            }

}

public override void Install(System.Collections.IDictionary stateSaver)

        {

            try

            {

                base.Install(stateSaver);

              this.InstallDateBase();//调用上面的方法

}

catch

{

     throw;

}

}

public override void Uninstall(System.Collections.IDictionary stateSaver)

        {

           

            base.Uninstall(stateSaver);

           

            //UnInstallDataBase();

 

               

        }

 

        public override void Commit(System.Collections.IDictionary stateSaver)

        {

            base.Commit(stateSaver);

        }

 

        public override void Rollback(System.Collections.IDictionary stateSaver)

        {

            base.Rollback(stateSaver);

 

     

          

        }

 

参考1

ms-help://MS.VSCC/MS.MSDNVS.2052/Vbcon/html/vbtskoverridingdefaultmethodsoninstallationcomponent.htm

ms-help://MS.VSCC/MS.MSDNVS.2052/vsintro7/html/vxwlkWalkthroughUsingCustomActionToCreateDatabaseDuringInstallation.htm

 

现在我们再此工程下面添加一个新的项目

安装和部署项目,选中web 项目模板,如命名为websetup2.

 

创建部署项目

  1. 文件菜单上,选择添加项目”->“新建项目

  2. 添加项目对话框中,选择项目类型窗格中的安装和部署项目,然后选择模板窗格中的“WEB安装项目。在名称框中,键入 websetup2(我是默认的,没改。这些语句懒得打,抄来的,:))

  3. 属性窗口中,选择 ProductName 属性并键入 mywebTest

  4. 在文件系统编辑器中,选择应用程序文件夹。在操作菜单上,选择添加”->“项目输出

  5. 添加项目输出组对话框中,为“myInstall”项目选择主输出。

 

在前面的操作与一般打包一样,将你的WEB工程里的一些文件添加进来。及一些其他打包设置(产品名等),我就不多说了。

我们这里仅仅要加入一个数据库备份文件(myDataBase.bak

首先打开websetup2的文件系统窗口,选中web应用程序文件夹,在此文件夹下面添加一个文件夹我们用来存放数据库,如database,再将mydatabase.bak文件复制到此目录下面。

现在我们要添加一个安装时的窗口,用来让用户输入数据库帐号等。我们只要打开用户界面窗口就可以进行操作了。

 

创建自定义安装对话框

  1. 在解决方案资源管理器中选择websetup2项目。在视图菜单上指向编辑器,然后选择用户界面

  2. 在用户界面编辑器中,选择安装下的启动节点。在操作菜单上,选择添加对话框

  3. 添加对话框对话框中选择文本框 (A)”对话框。

  4. 操作菜单上选择上移。重复此步骤,直到文本框 (A)”对话框位于安装文件夹节点之上。

  5. 属性窗口中,选择 BannerText 属性并键入 自定义数据库安装

  6. 选择 BodyText 属性并键入自定义数据库安装

  7. 选择 Edit1Label 属性并键入服务器名:

  8. 选择 Edit1Property 属性并键入 SERVERNAME

  9. 选择 Edit2Label 属性并键入创建数据库名:

  10. 选择 Edit2Property 属性并键入 DATABASENAME

  11. 选择 Edit3Label 属性并键入数据库管理员帐号:

  12. 选择 Edit3Property 属性并键入 INSTALLADMIN

  13. 选择 Edit4Label 属性并键入管理员密码:INSTALLPASSWORD

  14. 选择 Edit4Property 属性并键入 SERVERNAME

 

创建自定义操作

  1. 在解决方案资源管理器中选择websetup2项目。在视图菜单上指向编辑器,然后选择自定义操作

  2. 在自定义操作编辑器中选择安装节点。在操作菜单上,选择添加自定义操作

  3. 选择项目中的项对话框中,双击应用程序文件夹

  4. 选择主输出来自 DBCustomAction(活动)项。

属性窗口中,选择 CustomActionData 属性并键入 /InstallPassword=[INSTALLPASSWORD] /InStallAdmin=[INSTALLADMIN] /ServerName=[SERVERNAME] /DataBaseName=[DATABASENAME] /dir="[TARGETDIR]/"
注意各个 用户数据之间是有空格的。如/aaa=[fdfad] /bfff=[fdafdfd]

  1. 生成菜单上选择生成websetup2

上面的customActionData将会在安装类中引用的。注意各个之间一定要有空格。

/dir=[“TARGETDIR”],取的是最终安装的WEB目录

到此一个项目打包就此结束了

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template