MSI安装数据库

原创 2004年12月29日 13:32:00

关键字 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

Win8.1以及win10以上系统 安装msi文件方法

Win8.1以及win10以上系统 安装msi文件方法 一、临时安装方法 1、按WIN+X键,然后选择“命令提示符(管理员)”; 2、在命令提示符窗口中输入: msiexec /package "你...
  • horsequan
  • horsequan
  • 2015年08月12日 11:00
  • 19205

MySQL之MySQL5.7安装包(msi文件)在Windows8下安装

这是一篇关于MySQL安装包(msi)的安装过程,希望这篇文章可以帮到你,如果在Blog中有什么建议欢迎前来打扰。...
  • qq_30276065
  • qq_30276065
  • 2016年10月28日 00:18
  • 2253

自动安装msi文件包

有向客户机安装一个msi软件包,想采用自动安装方式。 查看MSDN发现微软为Msi命令行的安装模式 msi软件包静默安装方式为 ***.msi /qn (不会显示任何窗口,直接在后台自动安装。)   ...
  • jonahzheng
  • jonahzheng
  • 2013年09月27日 23:13
  • 6121

安装VMware虚拟机出现the msi ''c:\user_x64.msi failed报错信息解决方案

做Python的一个项目的时候,安装VMware出现连续的报错不成功信息,更换版本和删除服务均无法解决。最后删除所有的杀毒软件后,重启电脑,完美安装成功。...
  • kangqianglong
  • kangqianglong
  • 2016年10月11日 10:16
  • 2001

自定义msi安装包的执行过程

有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程。...
  • powertoolsteam
  • powertoolsteam
  • 2016年03月24日 16:07
  • 2596

windows上使用非msi安装mysql

mysql community版本(我用的是5.5.14),提供两种安装方式一个是msi,直接双击就能启动GUI的安装界面。另一种方式是一个zip压缩包,只要解压就算安装好啦。这里我就来记录一下我使用...
  • Chinese521
  • Chinese521
  • 2016年08月25日 13:25
  • 620

如何下载Chrome离线安装包 MSI系统级安装包

http://blog.163.com/yangji008@126/blog/static/70036935201010200270623/
  • liups
  • liups
  • 2014年06月25日 00:04
  • 3987

MySQL5.7MSI安装详解

可以从MSQL官网下载MySQL服务器安装软件包,我下载为版本“mysql-installer-community-5.7.3.0-m13.msi”不多说 1 双击进入安装,如下图...
  • luckcircle
  • luckcircle
  • 2017年06月30日 18:48
  • 813

一些常用软件静默安装参数(nsis,msi,InstallShield ,Inno)

打包的时候,经常需要安装一些其它的环境库,而又不想让用户繁锁的去选择,这时就需要静默安装,而不同的文件所加的参数了不一致,比如VS的环境库vcredist_x86.exe(这是32位的环境库)后面加/...
  • zhaobangyu
  • zhaobangyu
  • 2014年01月17日 14:43
  • 8105

关于win10无法打开.msi文件的解决方法

一下只是我的一些建议和安装.msi两天的一些经验,不一定有用。但是在一天半的倒腾之下结果可以打开.msi文件了。 一、可能是我将.msi文件添加了一个右击->以管理员身份运行。下面就来说一下怎么设置:...
  • qq_35661436
  • qq_35661436
  • 2016年07月27日 21:30
  • 8312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSI安装数据库
举报原因:
原因补充:

(最多只允许输入30个字)