zoukankan      html  css  js  c++  java
  • MSI安装数据库

    关键字 MSI安装数据库
    原作者姓名 李争

    介绍
    本文主要介绍如何通过添加自定义动作让MSI安装包自动安装数据库。

    正文
    数据库(以SQL SERVER为例)的安装通常有以下几种办法: 通过数据库备份恢复数据库、通过附加数据库文件、执行脚本安装。

         在这几种方式中,前两种方式通常需要操作人员手工的操作,才能给数据库系统添加数据库。这样一来提高了对软件使用者的要求,并且还具有账号权限的问题(只有数据库管理员等一系列具有很高权限的账号才允许有恢复、附加数据库能力)。所以,通过执行数据库安装脚本安装数据库是一种比较灵活的选择。

         在Visual Studio.NET 中为我们提供了安装和部署应用程序的项目模板,通过Setup Project项目模板可以创建MSI安装包。要想让MSI安装包具有安装数据库的功能,那就只有使用自定义动作来完成了。

         步骤如下:

         第一、要创建一个类库工程(Class Library)。为的是创建一个能让MSI安装包调用的程序集。这个程序集中的类需要派生于System.Configuration.Install.Installer。这个Installer类是所有自定义动作类的基类。

         第二、在这个项目中编写一个数据库安装函数。其主要原理是使用了SQL SERVER的控制台工具osql.exe。通过-E参数进行信任登陆,通过-i参数让osql.exe去执行一个数据库脚本文件。由于安装包的位置是不定的(用户可以把MSI文件放到硬盘的任何一个位置上)。所以,要利用.NET反射临时得到当前安装包的位置。具体代码如下:

                     //得到当前正在运行的程序集实例
              System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
                
                //得到当前程序集的路径
               string Path = assembly.Location;
                //去掉本程序集的文件名
                Path = Path.Replace("installdb.dll","");
                //加上脚本文件的文件名
                string SqlPath = Path + "DemoSql.sql";
                
                //创建数据库安装进程
               System.Diagnostics.Process P = new Process();
                //设定进程参数
                P.StartInfo = new ProcessStartInfo("osql.exe"," -E -i "+SqlPath);
              
                //打开进程
                P.Start();
        


    正文完

    附件:

  • 示例工程 SetupDemo.rar

申明

非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

博文欢迎转载,但请给出原文连接。

查看全文
  • 相关阅读:
    go语言浅析二叉树
    Go语言冒泡、选择、插入、快速排序实战浅析
    go语言教程之浅谈数组和切片的异同
    实测Maven上传jar包到私服的方法归纳
    干货|Dubbo社区开发者日经验分享
    Go语言系列开发之延迟调用和作用域
    mysql中间件分享(Mysql-prxoy,Atlas,DBProxy,Amoeba,cobar,TDDL)
    时间操作
    大型网站架构设计方向初探
    C#输入法
  • 原文地址:https://www.cnblogs.com/Athrun/p/661273.html
  • Copyright © 2011-2022 走看看