折腾了整整一天,终于将 MSDE 2000 SP4  和 N 年前用 VB6 开发的一个系统完整的打包到一张光盘上。想当初,VB6 用提供那个安装部署向导制作的安装包需要用户把系统要用到 N 个程序安装 N  遍……甚至 N + X  遍 !且不说用户抱怨,我也不省其繁。

1、从  
http://www.microsoft.com/downloads/details.aspx?familyid=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5&displaylang=zh-cn 下载 MSDE 2000 SP4,打包备用;
2、在 Installshield 12 Premier  创建一个 InstallScript  项目。要创建这种项目需要现安装 Installshield Installscript Objects,这个部件可以从
http://www.installshield.com 下载;
选择 InstallScript  项目的原因是我们要利用 InstallScript 脚本代码来完成 MSDE 2000 SP4  的安装。设置 InstallScript  项目具体过程没什么别需要说明的,整个过程很比较简单。唯一要注意的是在“Build Installation”这一步骤是选择“CD-ROM”以便于随后我们向这个安装影像中添加 MSDE 2000 SP4 的安装目录;
3、编写 InstallScript 代码。在 Installation Designer 卡片中,单击左边那棵树中的“InstallScript” 结点。在右边的 Setup.Rul 窗格中顶部第一个DropDownList 中选中“After Move Data” ,在第二个DropDownList 中选中“OnFirstUIAfter”,系统自动添加 OnFirstUIAfter() 函数。对各位大侠来说,这些代码简直是小菜一碟。

用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤//---------------------------------------------------------------------------
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// OnFirstUIAfter
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
//
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// First Install UI Sequence - After Move Data
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
//
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// The OnFirstUIAfter event called by OnShowUI after the file transfer
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// of the setup when the setup is running in first install mode. By default
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// this event displays UI that informs the end user that the setup has been
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// completed successfully.
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
//
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// Note: This event will not be called automatically in a
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
// program用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤endprogram style setup.
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
//---------------------------------------------------------------------------
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
function OnFirstUIAfter()
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    STRING szTitle, szMsg1, szMsg2, szOpt1, szOpt2;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    NUMBER bvOpt1, bvOpt2;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    NUMBER bShowUpdateServiceDlg;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    STRING szWaitText;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    STRING szServiceName;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    NUMBER svServiceState;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    STRING szMsde2000, szCmdLine,szStartServiceArgs;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤begin
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 如果安装程序以“维护”模式启动
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    if (MAINTENANCE) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
goto EndProcess;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 检查系统是否安装了 MSDE 2000 SP4
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szWaitText = "正在检查系统是否安装了 MSDE2000 SP4 …….";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    SdShowMsg( szWaitText, TRUE);    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szServiceName 
= "MSSQLSERVER";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
if(ServiceGetServiceState(szServiceName, svServiceState) < ISERR_SUCCESS) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
// 没有安装 MSDE,转安装处理
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
        goto InstallMSDE;    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
goto StartMSDE; 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤InstallMSDE:  
// 安装数据库服务  
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szWaitText = "正在安装 MSDE2000 SP4。这个过程需要几分钟,请稍等用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    SdShowMsg(szWaitText, TRUE); 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szMsde2000 
= SRCDIR ^ "MSDE" ^ "setup.exe";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 将 MSDE 2000 SP4 安装到系统 Program File 目录下
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szCmdLine = "TARGETDIR=\"" + PROGRAMFILES + "\" /q";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
if(LaunchAppAndWait(szMsde2000, szCmdLine, LAAW_OPTION_WAIT|LAAW_OPTION_MAXIMIZED) < 0 ) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        MessageBox (
"安装 MSDE2000 SP4 失败,请联系系统管理员!", SEVERE);
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
goto EndProcess;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤StartMSDE: 
// 启动 MSDE2000 服务
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szWaitText = "正在启动 MSDE2000 SP4 …….";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    SdShowMsg( szWaitText, TRUE);    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤   
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 安装了 MSDE 2000, 试着启动服务
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szStartServiceArgs = "";    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
if(svServiceState != SERVICE_RUNNING) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
if (ServiceStartService (szServiceName, szStartServiceArgs) < ISERR_SUCCESS ) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤            MessageBox (
"启动服务" + szServiceName + "出错。", SEVERE);
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤            
goto EndProcess;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        endif;        
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 加载用户数据库
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szWaitText = "正在创建所需数据库用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤.";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    SdShowMsg(szWaitText, TRUE);
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    Delay(
2); 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 先试着分离先前已经加载的数据库
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szCmdLine = "-E -Q \"exec exec sp_detach_db TestDB \"";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
if(LaunchAppAndWait("osql.exe ", szCmdLine, LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN) < 0) then 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        MessageBox (
"分离原来的数据库失败!请确认系统中已安装 MSDE 2000 SP4 并且服务已启动。\n如问题仍无法解决,请与联系统管理员联系!", SEVERE); 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif; 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 将数据文件复制到程序安装目录
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    CreateDir( TARGETDIR ^ "Data");
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    CopyFile( SRCDIR 
^ "Data" ^ "TestDB.mdf", TARGETDIR ^ "Data" ^ "TestDB.mdf");
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    CopyFile( SRCDIR 
^ "Data" ^ "TestDB.ldf", TARGETDIR ^ "Data" ^ "TestDB.ldf");    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 附加数据库    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    szCmdLine = "-E -Q \"exec sp_attach_db 'TestDB''"+  TARGETDIR ^ "Data" ^ "TestDB.mdf''" +  TARGETDIR ^ "Data" ^ "TestDB.ldf' \""
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
if (LaunchAppAndWait("osql.exe ", szCmdLine, LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN) < 0) then 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤          MessageBox (
"数据库创建失败!请确认系统中已安装 MSDE 2000 SP4 并且服务已启动。\n如问题仍无法解决,请与联系统管理员联系!", SEVERE); 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    SdShowMsg(szWaitText, FALSE);     
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤EndProcess:    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// 以下代码是系统自动插入的
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    ShowObjWizardPages(NEXT);
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szTitle 
= "";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szMsg1 
= ""
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szMsg2 
= "";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szOpt1 
= "";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    szOpt2 
= "";
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    bvOpt1   
= FALSE;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    bvOpt2   
= FALSE;    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// Set this to true if you have the update service enabled, and if you want to check for updates.
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// Note: the ISUS Starter Edition does not support checking for updates programatically.  So, 
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
// only set this to true if you have at least the ISUS Professional Edition.
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    bShowUpdateServiceDlg = FALSE;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
//{{IS_SCRIPT_TAG(Dlg_SdDinishEx)    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
if ( BATCH_INSTALL ) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 
0 );
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
else
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
// If the update service is enabled, show finish dialog that includes
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
// update check option.
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
        if( bShowUpdateServiceDlg && ( ENABLED_ISERVICES & SERVICE_ISUPDATE ) ) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤            
if( SdFinishUpdateEx( szTitle, szMsg1, szMsg2, szOpt1, szOpt2, TRUE ) ) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤                
// Don't check for updates in silent mode.
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
                if( MODE != SILENTMODE ) then
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤                    UpdateServiceCheckForUpdates( 
"", FALSE );
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤                endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤            endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        
else
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤            SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bvOpt1 , bvOpt2 );
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤        endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    endif;
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤    
//}}IS_SCRIPT_TAG(Dlg_SdDinishEx)    
用 Installshield 12 Premier 制作 MSDE2000 SP4 安装包方法和步骤
end; 

4、按F7 制作安装影像。生成的安装影像文件位于 [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1
5、向影像中添加 MSDE 2000 SP4 的安装文件。
    5a)请先参照 MSDE 2000 ReadmeSql2k32desksp4.htm 中《4.1 再分发 MSDE 2000 SP4》的说明。
    5b)打开文件夹 [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1, 然后创建两个子文件 MSDE  和 Data 。
            [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1\MSDE    用于存放 MSDE 2000 SP4  安装文件;
            [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1\Data   用于存放你要安装的数据库文件;
 6、说明:MSDE 2000 ReadmeSql2k32desksp4.htm 中《4.1 再分发 MSDE 2000 SP4》中的说明并太确切。实际上,为了让 MSDE 2000 SP4 的Setup.exe 正确运行,还需要将所下载并解压 MSDE 2000 SP4 中 *.dll  和 *.rll 复制到 [盘符:]\InstallShield Express Projects\[安装项目名称]\Media\cdrom\Disk Images\Disk1\MSDE  中

相关文章:

  • 2021-09-09
  • 2021-04-21
  • 2021-09-23
  • 2022-01-15
  • 2022-12-23
  • 2021-11-28
猜你喜欢
  • 2022-12-23
  • 2021-09-17
  • 2021-07-02
  • 2022-03-07
  • 2021-12-29
  • 2021-11-24
  • 2021-05-16
相关资源
相似解决方案