.NET Installer 自动安装 MSDE






3.63/5 (7投票s)
此项目使开发人员能够创建一个自动安装 MSDE 并附加数据库的安装包
引言
程序员通常希望构建一个单一的安装程序包,该包可以安装应用程序以及先决条件和数据库。幸运的是,对于数据库,程序员可以使用 MSDE,它可以与你的应用程序一起分发,但 MSDE 缺少用户界面,因此为了配置它,我们通常需要使用命令行。
场景
这是场景
- 程序员希望有一个单一的包,该包自动安装 .NET Framework,然后安装 MSDE,并使用程序员编写的应用程序的数据库。
- 在本教程中,安装将创建一个新的数据库实例,其名称由程序员指定,并且可以检测该实例是否存在以及是否需要移除,因此为了安全起见,程序员只需创建一个唯一的数据库实例名称。
- 然后,该库会自动将数据库附加到这个新安装的数据库实例。首先,我编写了两个项目,它们需要包含在你的解决方案中。第一个是
JohnKenedy.DataAccess
,第二个是JohnKenedy.DataAccessModule
。这是因为安装代码与该库一起提供。 - 该项目的目标是,用户获取安装文件,双击 EXE,然后点击下一步、下一步,按照说明操作,而无需了解如何连接数据库、数据库名称、用户名、密码等,用户只需点击下一步、下一步,应用程序将自动安装 .NET 先决条件、数据库,并附加程序员创建的所有数据库,程序员编写的应用程序将运行并连接到数据库,而用户无需了解如何配置它们。用户唯一需要了解的是如何使用程序员编写的应用程序。
步骤
- 下载我附带的示例代码,并将其解压缩到 D:\Software Pekerjaan\Makanan(我在此示例中使用)。
- 假设
MenuMakanan
项目是你正在创建的 Windows 应用程序项目,并且将要部署。从该项目中,添加对名为JohnKenedy.DataAccess
的库的引用。 - 通过点击 这里 下载 MSDE。双击 .exe 文件,默认情况下它将提取到你的 C:\sql2ksp3 目录。将提取的内容复制到
MenuMakanan
项目的 bin\debug\MSDE2000 文件夹。 - 分离你的应用程序的数据库,使其成为 MDF 文件,然后仅复制 MDF 文件到
MenuMakanan
项目的 bin\debug\MSDE2000 文件夹。在此示例中,它是 Food_Data.MDF,它包含在示例下载中。 - 在你的应用程序 (
MenuMakanan
) 中,添加一个应用程序配置文件或 app.config(在本示例中,它已存在),并在AppSettings
部分创建两个新键,有关更多信息,请阅读示例中的 App.Config。请记住设置IsInstall=0
和IsRestart=0
,如下所示,因为这将告诉你的应用程序在运行前安装,如果安装完成并且需要重启计算机以便新安装的 MSDE 服务运行,则IsRestart
将为1
。<add key="IsInstall" value="1"/> <add key="IsRestart" value="0"/>
- 在你的启动窗体或应用程序启动时第一个运行的窗体(在本示例中为 Login.cs)的构造函数中,在
InitialilzeComponent
之后,添加类似如下的代码public Login() { InitializeComponent(); Installation _ins = new Installation( "Food", "JOHN", "MenuMakanan", "Food", "JOHNKENEDYDAL", "FOOD_Data.MDF"); if (_ins.IsDone == false) _ins.ShowDialog(); if (_ins.IsRestart == true) { Application.Exit(); this.Close(); return; } }
请记住添加 using JohnKenedy.DataAccess;
,以便找到 Installation 类。这个 Installation 类接受 6 个参数,我将在下面解释
- 第一个是
Food
,这是你的安装进度中显示的应用程序名称。 - 第二个是
JOHN
,这是你的计算机名称,你可以简单地使用 "(local)" 来代替 "JOHN",表示安装是在运行 Setup 的计算机上完成的。 - 第三个是
MenuMakanan
,这是将要安装的新数据库实例,这类似于 Microsoft 在我们安装 VS 2005 时安装的 (local)\SQLExpress 数据库实例,尽管这是一个 MSDE 实例。此名称必须是唯一的,并且此数据库实例将只包含一个数据库名称,该名称将在第四个参数中定义,并且仅供你的应用程序使用。 - 第四个是
Food
,这是应用程序安装的数据库名称。 - 第五个是
JOHNKENEDYDAL
,这是新安装的 MSDE 的 sa 密码,使用 Enterprise Manager (SQL 2000) 连接到数据库实例时需要此密码。 - Food_Data.MDF 是你的 MDF 文件名,存储在
MenuMakanan
项目的 bin\debug\MSDE2000 文件夹中。你可以根据需要更改它。
正如你所注意到的,将有代码检查 IsDone
和 IsRestart
,请保留这两个检查,因为它们是 Installation
类为我们设置的条件,用于告诉主启动窗体该做什么,是关闭应用程序还是显示窗体。
现在编译应用程序。你的已编译的 MenuMakanan.exe 将自动安装你的应用程序,因为配置是 IsInstall=1
和 IsRestart=0
,如果安装成功,这两个值将被应用程序自动设置为 0
,然后应用程序将正常启动。
创建 Setup 和 Deployment 包
- 创建一个新的 Setup 和 Deployment 项目,在本示例中,它已存在,名为
SetupMakanan
。 - 在应用程序文件夹中,创建一个名为 MSDE2000 的新文件夹,在该文件夹内创建三个名为 Msi、MSM 和 Setup 的文件夹。然后,在 MSM 文件夹内,创建一个名为 1033 的文件夹。此结构与第 3 步中 MSDE 提取的文件夹结构相同,我们然后根据 MSDE 提取的文件夹将文件添加到这些 MSDE2000、Msi、MSM、1033 和 Setup 文件夹中。
- 将 Food_Data.MDF 添加到 MSDE2000 文件夹,因为
Installation
类将在该文件夹中查找文件名。在完成第二步和第三步之后,它看起来会像这样 - 现在右键单击
SetupMakanan
项目,选择属性,然后点击 Prerequisites 按钮 - 构建整个解决方案,然后构建
SetupMakanan
项目,你将在SetupMakanan
项目的 debug 文件夹中看到 Setup.exe、SetupMakanan.msi,以及两个新文件夹,一个是 Windows Installer 3_1,另一个是 DotNetFX35,它们是 .NET 先决条件。
然后选择第二个单选按钮。从我的应用程序的相同位置下载先决条件。点击 OK,然后保存。
现在你可以将这些文件刻录到 CD 或将其压缩以便分发,Setup 应用程序将安装先决条件,然后将你的应用程序安装到指定文件夹。当用户运行你的应用程序时,它会检查 IsInstall
和 IsRestart
参数以确定是否需要数据库安装,如果需要,则为用户安装,然后要求重启,重启后它会再次检查是否需要附加数据库,如果需要,则会附加,最后,它将运行你的应用程序。
历史
这个库并非完全用于安装,相反,该库具有数据访问功能,有关文章可以在 这里 找到。
安装是我最近开发的库中的一项功能。我已经在从未安装过 .NET 和数据库的计算机上测试了 Setup 包,它成功地安装了 .NET 和 MSDE,并顺利运行了应用程序。