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

使用 .NET 应用程序安装 MSDE

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.59/5 (22投票s)

2005年11月29日

5分钟阅读

viewsIcon

115457

downloadIcon

2374

本文介绍了如何分发或安装 MSDE 到 .NET 应用程序中。

引言

通常,我们会将 MSDE 2000 与 .NET 应用程序一起分发。有几种方法可以做到这一点,例如使用合并模块或编写另一个 .NET 应用程序来专门安装 MSDE 2000。我们将在这里介绍后者。在我以前的文章中,我使用自定义操作来进行此类安装,但在这里我们不能使用自定义操作,因为 .NET 安装程序不允许在其中运行另一个安装程序。因此,在这种情况下,您需要创建一个 .NET 应用程序,该应用程序将首先安装您的主 .NET 应用程序,然后安装 MSDE 2000。请确保目标计算机上已安装 .NET Framework,因为您的起始应用程序是使用任何一种 .NET 语言构建的。您可以使用 CD 上的 AUTORUN 文件来安装 .NET Framework,然后运行您的应用程序,该应用程序将安装主应用程序和 MSDE 2000。在开始设计应用程序之前,许多人会想了解 MSDE 是什么。所以,让我们从 MSDE 的基础知识开始。

MSDE 概述

Microsoft SQL Server 2000 桌面引擎 (MSDE 2000) 是一个基于 SQL Server 核心技术构建的数据引擎。MSDE 2000 支持单处理器和双处理器桌面计算机,是企业应用程序桌面扩展的可靠存储引擎和查询处理器。SQL Server 和 MSDE 2000 共享相同的技术基础,使开发人员能够构建可以无缝从便携式计算机扩展到多处理器群集的应用程序。MSDE 2000 设计为在后台运行,支持事务性桌面应用程序,它没有自己的用户界面 (UI) 或工具。用户通过嵌入它的应用程序与 MSDE 2000 进行交互。MSDE 2000 被打包成一个自解压档案,便于分发和嵌入。此外,MSDE 2000 可以构建到应用程序中,并与 Microsoft 开发工具(如 Microsoft Visual Studio® .NET 和 Microsoft Office XP Developer Edition)一起免费分发。这使得开发人员可以将企业级的可靠性和高级数据库功能构建到他们的桌面应用程序中。作为 Microsoft JET 数据库的一个有吸引力的替代方案,MSDE 2000 主要旨在为需要易于分发和安装的数据库服务器的开发人员提供低成本选项,并为增值业务解决方案提供支持。由于它与其他版本的 SQL Server 完全兼容,开发人员可以轻松地使用相同的核心代码库同时针对 SQL Server 和 MSDE 2000。如果应用程序的存储和可伸缩性超出了 MSDE 2000 的限制,这将为从 MSDE 2000 到 SQL Server 提供无缝的升级路径。

下载 MSDE 2000

可下载文件名:SQL2kdesksp3.exe SP3a。MSDE 的 SP3a 更新包括 SQL Server 2000 桌面引擎实例的数据库组件的更新和新安装,包括:桌面数据引擎。数据库客户端连接组件包括 OLE DB Provider for SQL Server、SQL Server ODBC 驱动程序和客户端 NET-Libraries。SQL2kdesksp3.exe 包含安装桌面引擎的新实例(.msi 文件)、升级所有现有桌面引擎实例(.msp 文件)以及将合并模块(.msm 文件)集成到应用程序所需的所有文件。

MSDE 2000 设置参数

参数 描述
SAPWD="AStrongPassword" 指定分配给 sa 管理员登录名的强密码。
INSTANCENAME="InstanceName" 指定实例的名称。如果未指定 INSTANCENAME,则设置将安装一个默认实例。
DISABLENETWORKPROTOCOLS=n 指定实例是否接受来自其他计算机上运行的应用程序的网络连接。默认情况下,或如果您指定 DISABLENTWORKPROTOCOL=1,则设置将配置实例以不接受网络连接。指定 DISABLENETWORKPROTOCOLS=0 以启用网络连接。
SECURITYMODE=SQL 指定实例以混合模式安装,其中实例支持 Windows 身份验证和 SQL 身份验证登录。
DATADIR="data_folder_path"

指定设置安装系统数据库、错误日志和安装脚本的文件夹。为 data_folder_path 指定的值必须以反斜杠 (\) 结尾。对于默认实例,设置会在指定值后附加 MSSQL\。对于命名实例,设置会在指定值后附加 MSSQL$InstanceName\,其中 InstanceName 是使用 INSTANCENAME 参数指定的值。设置会在指定位置创建三个文件夹:Data、Log 和 Script。

TARGETDIR="executable_folder_path"

指定设置安装 MSDE 2000 可执行文件的文件夹。为 executable_folder_path 指定的值必须以反斜杠 (\) 结尾。对于默认实例,设置会在指定值后附加 MSSQL\Binn。对于命名实例,设置会在指定值后附加 MSSQL$InstanceName\Binn,其中 InstanceName 是使用 INSTANCENAME 参数指定的值。

您可以在同一台计算机上安装多达 16 个 MSDE 2000 和 SQL Server 2000 数据库引擎的副本或实例。其中一个实例没有实例名称,称为默认实例。其他 15 个实例必须具有唯一的实例名称,称为命名实例。在安装 MSDE 2000 Release A 的新实例时,请使用桌面引擎 Setup.exeINSTANCENAME 参数来指定命名实例的名称。如果您不指定实例名称,则安装程序将尝试安装一个默认实例。

安装程序应用程序概述

所使用的逻辑非常简单。我们只需创建一个 setup.ini 文件,通过表单收集设置参数,然后使用此 setup.ini 来运行 setup.exe

使用演示应用程序

要运行演示应用程序,您需要安装 MSDE 2000。由于大小限制(70 MB),我没有将它包含在我的应用程序中。只需将 MSDEInstaller 应用程序下载到一个文件夹中,然后将 MSDE 2000 文件夹放在同一个目录中,即可开始使用该应用程序。提供了充足的工具提示供您参考。

使用源代码

以下讨论了一些重要的函数

获取系统程序文件

您可以看到目标目录和数据目录的默认路径已设置。这是通过使用 Environment.GetFolderPath 实现的。

txtTargetDir.Text=
  Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles).Trim()+
                                                          "\\MSDE2000\\Binn";
txtDataDir.Text=
  Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles).Trim()+
                                                          "\\MSDE2000\\Data";

创建 setup.ini

从安装的角度来看,setup.ini 文件是必不可少的。MSDE 2000 安装程序从此文件中获取安装所需的所有信息。我们将把从表单收集的所有信息传递到此文件中。我们将使用 IO 操作来创建此文件。

if(rbLocal.Checked==true)
{
 intInstallMode=1;
}
else
{
 intInstallMode=0;
}

//This part will create setup.ini file in MSDE2000 
//folder in Application Startup path

FileStream fsOutput = 
   new FileStream(Application.StartupPath.Trim()+"\\MSDE2000\\setup.ini",
   FileMode.Create, FileAccess.Write);
StreamWriter srOutput = new StreamWriter (fsOutput);
string s1,s2;
s2="\"";
s1="[Options] DISABLENETWORKPROTOCOLS="+intInstallMode+"
    SECURITYMODE=SQL TARGETDIR="+s2+txtTargetDir.Text.Trim()+s2+" 
    DATADIR="+s2+txtDataDir.Text.Trim()+s2;
srOutput.WriteLine(s1.ToString());
srOutput.Close ();
fsOutput.Close ();

启动安装过程

在从 setup.ini 收集完参数后,我们将通过使用 System.Process 运行 setup.exe 来开始安装 MSDE 2000。

// This part will actually install the MSDE2000 
// in specified path. The setup will be 
// saved in Application start up path                
                
ProcessStartInfo psi = new ProcessStartInfo();
string strInstanceName="", strStrongPass="";
strInstanceName=txtInstanceName.Text.Trim();
strStrongPass=txtSPWD.Text.Trim();            
psi.FileName=Application.StartupPath.Trim()
+@"\MSDE2000\setup.exe";
psi.Arguments= "INSTANCENAME="+strInstanceName+"
  SAPWD="+strStrongPass+" DISABLENETWORKPROTOCOLS="+intInstallMode+
  " SECURITYMODE=SQL TARGETDIR="+
  s2+txtTargetDir.Text.Trim()+s2+" 
  DATADIR="+s2+txtDataDir.Text.Trim()+s2 +"/qb";
            
// Here we start the process 
p.StartInfo=psi;            
p.Start();
© . All rights reserved.