现在的位置: 首页 > 综合 > 正文

InstallShield2008中集成安装SQLServerExpress2005的方法

2014年02月17日 ⁄ 综合 ⁄ 共 2697字 ⁄ 字号 评论关闭

1) SQL Server 2005的版本有哪些
如下是关于SQL Server的版本信息:
NO SQL Server名称 RTM SP1 SP2 SP3
1 SQL Server 2008 10.00.1600.22
2 SQL Server 2005 9.0.1399 9.0.2047 9.0.3042 9.00.4035
3 SQL Server 2000 8.00.194 8.00.384 8.00.532 8.00.760
4 SQL Server 7.0 7.00.623 7.00.699 7.00.842 7.00.961

关于该版本号在注册表中的位置, 对于SQL Server 2005, 我们可以使用如下的方法来准确的获得类似上面的表格的版本号信息:
1) HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/InstalledInstance
该键值的内容是所有的已安装的实例的名称, 类型是REG_MULTI_SZ, 就是一个字符串列表. 枚举其中的所有的实例名, 对每一个实例名, 执行如下步骤.
2) HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/Instance Names/SQL
在该键值下, 以之前得到的实例名为键名, 得到一个字符串值, 该字符串就是该实例的ID.
3) 用第2步中取得的ID名, 组成如下的注册表路径:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/ID/MSSQLServer/CurrentVersion
如果第2步中没有取得ID名, 则直接用实例名代入. 取该键下面的"CurrentVersion"字符串, 即可得到指定实例的版本号.

2) 如何在InstallShield中包含SQL Server 2005的安装包
有两种方法可以将SQL Server的安装包包含进来:
1) 将安装文件打包到安装包的压缩文档中
2) 直接将安装文件放到安装包的Disk1目录下
第一种封装性更好一些, 不过加大了安装包启动时的解压缩时间.

步骤为:
1) 打开InstallShield 2008并载入工程文件
2) 在"Installation Designer"视图, 定位到"Behavior and Logic" -> "Support Files/Billboards" -> "Support Files" -> "Language Independent". 在右侧的文件列表中添加SQL Server的安装文件.

3) SQL Server 2005的安装包的命令行安装的式样是什么
SQL Server 2005允许无人值守的安装方式, 只要事先在配置文件中写好相应的内容即可:
[Options]
ADDLOCAL=SQL_Engine
INSTANCENAME=MyInstanceName
DISABLENETWORKPROTOCOLS=2
SECURITYMODE=SQL

将以上内容保存到如"sqlinstall.ini"文件中, 并与SQL Server的安装包一样放置到2)中所述的位置, 安装的时候通过如下的命令行, 将该配置文件传递给安装程序:
例如: SUPPORTDIR+SQLEXPR.exe "/q /qn /settings SUPPORTDIR+sqlinstall.ini";
其中, "SQLEXPR.exe"就是SQL Server 2005 Express SP2的安装包, "SUPPORTDIR"是InstallShield的宏, 即InstallShield的解压目录.

4) InstallShield中如何编写安装脚本
如下安装SQL Server时的脚本代码, 供参考.

// 构造安装命令行所要用到的一些变量
szPath = SUPPORTDIR;
LongPathToShortPath( szPath );

szApplication = szPath ^ SQL_INSTALL_EXE_FILEPATH;

szCommand = "/q /qn /settings " + szPath ^ SQL_INSTALL_INI;
szCommand = szCommand + " SAPWD=" + g_szSapwd;

// 显示"等待安装..."的提示信息
SdShowMsg( @LOC_AR_INSTALLING_SQL_SERVER, TRUE );
LaunchApplicationInit();
nResult = LaunchAppAndWait(szApplication, szCommand, WAIT);
if ( nResult < 0 ) then
// 安装程序运行失败,如果安装失败, 则提示用户是否需要显示SQL Server的Log文件. 该Log文件是由SQL Server安装程序生成的
SdShowMsg( @LOC_AR_INSTALLING_SQL_SERVER, FALSE );

// 询问是否打开Log文件
nResult = PmAskYesNo( szStringListOut, "", SEVERE );
if ( nResult = YES ) then
LaunchAppAndWait( "notepad.exe", SQL2005LOG, NOWAIT );
endif;
return FALSE;
endif;
SdShowMsg( @LOC_AR_INSTALLING_SQL_SERVER, FALSE ); // 关闭提示对话框

if (LAAW_PARAMETERS.nLaunchResult = 0) then
// 检查是否成功安装
if (ElExistInstance2(g_szInstance) != g_szInstance) then
// 询问是否打开Log文件
nResult = PmAskYesNo( szStringListOut, "", SEVERE );
if ( nResult = YES ) then
LaunchAppAndWait( "notepad.exe", SQL2005LOG, NOWAIT );
endif;
return FALSE;
else // 如果安装成功则创建数据库
if ( FALSE = CreateDB() ) then
PmMessageBox( "Create Database Failed!", "", SEVERE );
return FALSE;
endif;
endif;
else
nResult = PmAskYesNo( szStringListOut, "", SEVERE );
if ( nResult = YES ) then
LaunchAppAndWait( "notepad.exe", SQL2005LOG, NOWAIT );
endif;
return FALSE;
endif;

抱歉!评论已关闭.