自定义MSI 安装

本页内容
部署示例 部署示例
创建示例应用程序 创建示例应用程序
创建 CustomSteps 库 创建 CustomSteps 库
创建安装项目并进行安装 创建安装项目并进行安装
启动条件编辑器 启动条件编辑器
小结 小结

深入了解在 Visual Studio .NET 中创建安装例程的基础知识!Vishnu Prasad H 探究了安装项目模板、编辑器、自定义安装程序以及更多内容。然后,他将所有内容放在一起,组成了一个部署数据库应用程序的示例。

与以前相比,现在部署 .NET 应用程序非常简单。现在 xcopy 部署也成为了可能。但是,简单 xcopy 部署还是有限制的。它不能用于分层应用程序部署、配置设置、细化调整等等。将应用程序层与自定义配置集成在一个分布式框架中需要专业、可自定义的部署工具。基于 Microsoft Windows Installer (MSI) 的部署能够完成所有这些任务甚至更多任务。然而,要使其得以运行还需要一些努力。幸运的是,Visual Studio .NET 的安装和部署项目使这变得相当简单。

部署示例

我创建了一个示例应用程序,以演示 MSI 部署在 Visual Studio .NET 中的功能。这是一个非常简单的应用程序,只有一个显示客户的窗体。

该应用程序具有一个 CustomSteps 类库。此库包括一个 SetupDB 组件类,它从 Installer 类继承。该组件类提供了自定义数据库安装。它对 OSQL 进程进行了自定义,并运行该进程以安装和删除数据库。我讲述的重点主要在这个类库。

然后,您就拥有了 Customer 安装,这是一个安装项目。此项目提供了与用户进行接口的组件,可用来捕获诸如服务器名、数据库名、用户 ID 等数据库信息。然后,它会将这些文件复制到目标,并创建数据库、数据库的对象和基础数据。最后,它会在 CustomSteps 类库的帮助下对配置文件中的连接字符串属性进行配置。

创建示例应用程序

即使您打算在阅读本文的同时着手创建该示例,也请您去下载本文附带的源代码。(创建这个基本的 Customer 应用程序没有什么要指出的内容,因为包括它的目的只是为了最终了解安装程序如何运行!)

创建一个空的解决方案,将其命名为 InstallerSample,然后将其添加到下载的 Customer 应用程序中。此应用程序只有一个窗体,其中带有一个显示数据库中客户的数据网格,如图 1 所示。有一个 Resources 文件夹,其中的 Customers.xml 文件配置了一些数据。请注意,该文件的 Build Action 属性被设置为 Content。引入此文件是为了演示这个 Build Action 的重要性。

App.config 具有下面的配置设置。稍后,您将看到安装程序在运行时设置的这个值。

<?xml version="1.0" encoding="utf-8" ?> 
 <configuration> 
      <appSettings> 
         <add key="connectionstring" value=""/> 
      </appSettings> 
 </configuration>

创建 CustomSteps 库

此步骤会帮助您处理这个自定义数据库安装。在安装项目中,您可以指定 Custom Actions。此项目的输出就是其中一个 Custom Action 步骤,因此在文件复制到目标之后称之为步骤。

创建一个新的类库 CustomSteps,添加一个新的 Installer 类,然后将其重命名为 SetupDB.cs。在进入实施阶段之前,您必须决定安装数据库的方法。表 1 提供了一些常用方法。

表 1. 数据库部署方法。
模式 说明

备份还原

SQL Server 提供了备份和还原数据库的选项。您可以使用 System.Data.SqlClient 命名空间以及特定的数据库存储过程进行还原。这可能是最简单的技术,但是它具有一些问题(如硬编码的名称)和其他一些配置考虑因素。

SQL-DMO

如果您打算部署基于 VB/COM/SQL 的应用程序,这就是最好的方法之一。SQL-DMO 提供了封装的 MS SQL Server 对象,以便用于管理目的。其中包括创建数据库和其他对象。您可以创建一个带有 DMO 对象的 EXE,DMO 对象会封装创建数据库的操作。

脚本文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值