65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET Installer 自动安装 MSDE

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.63/5 (7投票s)

2008年7月27日

GPL3

6分钟阅读

viewsIcon

46996

downloadIcon

574

此项目使开发人员能够创建一个自动安装 MSDE 并附加数据库的安装包

引言

程序员通常希望构建一个单一的安装程序包,该包可以安装应用程序以及先决条件和数据库。幸运的是,对于数据库,程序员可以使用 MSDE,它可以与你的应用程序一起分发,但 MSDE 缺少用户界面,因此为了配置它,我们通常需要使用命令行。

场景

这是场景

  1. 程序员希望有一个单一的包,该包自动安装 .NET Framework,然后安装 MSDE,并使用程序员编写的应用程序的数据库。
  2. 在本教程中,安装将创建一个新的数据库实例,其名称由程序员指定,并且可以检测该实例是否存在以及是否需要移除,因此为了安全起见,程序员只需创建一个唯一的数据库实例名称。
  3. 然后,该库会自动将数据库附加到这个新安装的数据库实例。首先,我编写了两个项目,它们需要包含在你的解决方案中。第一个是 JohnKenedy.DataAccess,第二个是 JohnKenedy.DataAccessModule。这是因为安装代码与该库一起提供。
  4. 该项目的目标是,用户获取安装文件,双击 EXE,然后点击下一步、下一步,按照说明操作,而无需了解如何连接数据库、数据库名称、用户名、密码等,用户只需点击下一步、下一步,应用程序将自动安装 .NET 先决条件、数据库,并附加程序员创建的所有数据库,程序员编写的应用程序将运行并连接到数据库,而用户无需了解如何配置它们。用户唯一需要了解的是如何使用程序员编写的应用程序。

步骤

  1. 下载我附带的示例代码,并将其解压缩到 D:\Software Pekerjaan\Makanan(我在此示例中使用)。
  2. 假设 MenuMakanan 项目是你正在创建的 Windows 应用程序项目,并且将要部署。从该项目中,添加对名为 JohnKenedy.DataAccess 的库的引用。

  3. 通过点击 这里 下载 MSDE。双击 .exe 文件,默认情况下它将提取到你的 C:\sql2ksp3 目录。将提取的内容复制到 MenuMakanan 项目的 bin\debug\MSDE2000 文件夹。
  4. 分离你的应用程序的数据库,使其成为 MDF 文件,然后仅复制 MDF 文件到 MenuMakanan 项目的 bin\debug\MSDE2000 文件夹。在此示例中,它是 Food_Data.MDF,它包含在示例下载中。
  5. 在你的应用程序 (MenuMakanan) 中,添加一个应用程序配置文件或 app.config(在本示例中,它已存在),并在 AppSettings 部分创建两个新键,有关更多信息,请阅读示例中的 App.Config。请记住设置 IsInstall=0IsRestart=0,如下所示,因为这将告诉你的应用程序在运行前安装,如果安装完成并且需要重启计算机以便新安装的 MSDE 服务运行,则 IsRestart 将为 1
    <add key="IsInstall" value="1"/>
    <add key="IsRestart" value="0"/>    
  6. 在你的启动窗体或应用程序启动时第一个运行的窗体(在本示例中为 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 个参数,我将在下面解释

  1. 第一个是 Food,这是你的安装进度中显示的应用程序名称。
  2. 第二个是 JOHN,这是你的计算机名称,你可以简单地使用 "(local)" 来代替 "JOHN",表示安装是在运行 Setup 的计算机上完成的。
  3. 第三个是 MenuMakanan,这是将要安装的新数据库实例,这类似于 Microsoft 在我们安装 VS 2005 时安装的 (local)\SQLExpress 数据库实例,尽管这是一个 MSDE 实例。此名称必须是唯一的,并且此数据库实例将只包含一个数据库名称,该名称将在第四个参数中定义,并且仅供你的应用程序使用。
  4. 第四个是 Food,这是应用程序安装的数据库名称。
  5. 第五个是 JOHNKENEDYDAL,这是新安装的 MSDE 的 sa 密码,使用 Enterprise Manager (SQL 2000) 连接到数据库实例时需要此密码。
  6. Food_Data.MDF 是你的 MDF 文件名,存储在 MenuMakanan 项目的 bin\debug\MSDE2000 文件夹中。你可以根据需要更改它。

正如你所注意到的,将有代码检查 IsDoneIsRestart,请保留这两个检查,因为它们是 Installation 类为我们设置的条件,用于告诉主启动窗体该做什么,是关闭应用程序还是显示窗体。

现在编译应用程序。你的已编译的 MenuMakanan.exe 将自动安装你的应用程序,因为配置是 IsInstall=1IsRestart=0,如果安装成功,这两个值将被应用程序自动设置为 0,然后应用程序将正常启动。

创建 Setup 和 Deployment 包

  1. 创建一个新的 Setup 和 Deployment 项目,在本示例中,它已存在,名为 SetupMakanan
  2. 在应用程序文件夹中,创建一个名为 MSDE2000 的新文件夹,在该文件夹内创建三个名为 MsiMSMSetup 的文件夹。然后,在 MSM 文件夹内,创建一个名为 1033 的文件夹。此结构与第 3 步中 MSDE 提取的文件夹结构相同,我们然后根据 MSDE 提取的文件夹将文件添加到这些 MSDE2000MsiMSM1033Setup 文件夹中。
  3. Food_Data.MDF 添加到 MSDE2000 文件夹,因为 Installation 类将在该文件夹中查找文件名。在完成第二步和第三步之后,它看起来会像这样

    create_setup.JPG
    点击这里查看大图

  4. 现在右键单击 SetupMakanan 项目,选择属性,然后点击 Prerequisites 按钮

    set_prerequisites.JPG

  5. 然后选择第二个单选按钮。从我的应用程序的相同位置下载先决条件。点击 OK,然后保存。

  6. 构建整个解决方案,然后构建 SetupMakanan 项目,你将在 SetupMakanan 项目的 debug 文件夹中看到 Setup.exeSetupMakanan.msi,以及两个新文件夹,一个是 Windows Installer 3_1,另一个是 DotNetFX35,它们是 .NET 先决条件。

现在你可以将这些文件刻录到 CD 或将其压缩以便分发,Setup 应用程序将安装先决条件,然后将你的应用程序安装到指定文件夹。当用户运行你的应用程序时,它会检查 IsInstallIsRestart 参数以确定是否需要数据库安装,如果需要,则为用户安装,然后要求重启,重启后它会再次检查是否需要附加数据库,如果需要,则会附加,最后,它将运行你的应用程序。

历史

这个库并非完全用于安装,相反,该库具有数据访问功能,有关文章可以在 这里 找到。

安装是我最近开发的库中的一项功能。我已经在从未安装过 .NET 和数据库的计算机上测试了 Setup 包,它成功地安装了 .NET 和 MSDE,并顺利运行了应用程序。

© . All rights reserved.