InstallShield的安装程序中,要安装MSDE(SQL SERVER桌面板),如何实现,脚本怎么写??急用呀,谢谢了!

解决方案 »

  1.   

    不一定用installshield
    建立和导入MS Data Engine解决方案
    2000-04-10· -·台湾微软
      Microsoft Data Engine (MSDE)是和SQL Server 7.0相容的资料储存服务,随附在Office 2000企业版以及Office 2000程式开发版中,不过两个产品所附的版本在行为上有些许的差异。在Office企业版中的版本会以本机伺服程式的形式运作,同时支援新的专案类型─Access Data Projects (ADP)的建立。这个版本的MSDE包含了一些支援视觉化的ADP专案开发环境所需的档案,而且是不允许随意散布的。至於在Office 2000程式开发版光碟中所附的MSDE则是一个可以自我解压缩并安装的执行时期引擎,不提供任何使用者介面相关的元件。这个版本的MSDE是可以伴随您的解决方案散布的。 在本文中主要是讨论如何将共存在同一台电脑上的资料及解决方案的专案加以包装,以利发行的方法。这类型的专案在设计上很像原本利用Access的Jet资料库引擎所开发的专案。我们会讨论到如何利用Office 2000程式开发版所提供的的VBA Package and Deployment wizard来建立结合Access执行时期引擎及MSDE引擎的安装程式,并进行发行的步骤。您可以在Office 2000程式开发版的光碟中找到一个ADP范例专案和MDF资料库范例档案,它们位在光碟的\ODETools\v9\Samples\MSDE资料夹中。这个范例中的程式码和本文中使用到的程式码很相近,但是更适於重复运用的场合来使用。 
    注意事项   
      如果所建立的ADP解决方案使用的是既有伺服器中的资料,就不需要伴随发行MSDE,而能够轻易的导入到公司的环境,利用能连接上SQL 7.0 Server并进行资料存取的工作站执行解决方案。
    安装Office内附的MSDE
      如果是为了开发的需求要安装MSDE,请执行在Office 2000企业版第一片光碟中的安装程式SETUPSQL.EXE,它是位在\SQL\x86\Setup资料夹下。安装的程序很简单,直接使用预设值进行安装即可。请参考Access 2000的线上辅助说明取得更进一步的细节。
    建立一个新的ADP解决方案 
      在本文中所提到的解决方案必须建立一个新的资料库进行操作。您可以选择档案选单,然後选择开新档案,再选择专案(新资料库)图示。至於详细的操作步骤,请参考Access 2000线上辅助说明中有关ADP解决方案相关的说明。
    撰写发行ADP解决方案的程式 
      MSDE的散布牵涉到一些程式设计的动作,您必须利用程式进行以下的几个步骤:
    1. 在使用者的电脑上安装MSDE。 
    2. 启动MSDE。 
    3. 载入资料库到MSDE中。 
    在使用者的电脑上安装MSDE 
      VBA Package and Deployment wizard提供了一个选项在安装程式执行完毕後,紧接著执行一个执行档或是一个批次档。在我们的范例中使用到这个功能来启动一个批次档,批次档中包含了一列命令,会对档案解除压缩,并安装MSDE 到使用者的电脑上。
    这个批次档的内容如下:
    start /wait msdex86.exe s a f1 "sql70ins.iss"
    这行命令利用了预设的.iss档来指示msdex86.exe执行档安装时采用的选项。
    您也可以在命令中要求采用自订的.iss档决定安装选项: 
    start /wait msdex86.exe -s -a -f1 "c:\Progra~1\Adp1\MSDETemp\MSDEInst.iss"
    在命令中您必须提供.iss档案完""的路径名称,这是您复制到使用者的电脑上的资料夹及档案名称。
      这行叙述会自行展开经过包装的档案,并将MSDE安装到使用者的电脑上。它会以指定的MSDEInst.iss档做为安装过程中决定选项的依据,而不会在画面上提出问题。此外,命令中的 "start /wait"参数会要求在安装过程都完成後,才将系统的控制权归还给批次档。
      您必须要把上例中的资料夹名称"Adp1"改成配合您专案的适当名称。也许您会设计这个批次档采用引数来决定使用者要求的安装位置,同时也能适当的修改.iss 档案的内容。您可能也会希望在安装完成後移除MSDETemp资料夹。至於有关.iss档案的内容等相关细节,可以在MSDN Library的\Platform SDK\Database and Messaging Services\Microsoft SQL Server Programmer's Toolkit资料夹中找到参考资讯。
    在使用者电脑上启动MSDE 
      启动MSDE的方式有两种,您可以在安装程序结束後透过Windows NT的命令列模式进行,或是透过SQL DMO的程式码处理。
    在 Windows NT的命令列叙述如下:
    net start mssqlserver
      而以下的SQL DMO程式码也能进行相同的工作,而且可以同时在Windows® 95/Windows 98或是Windows NT下运作。注意到使用SQL DMO时需要参照到 Microsoft SQLDMO Object Library:
    Sub TurnOnMSDE()
    Dim oSvr As SQLDMO.SQLServer
         Set oSvr = CreateObject("SQLDMO.SQLServer")
         On Error GoTo StartError
         oSvr.LoginTimeout = 60 ' 这个值要大一些以免产生逾时错误.
         oSvr.Start True, "(local)", "sa", ""ExitSub:
         Exit SubStartError:
    If Err.Number = -2147023840 Then
    '当伺服程式已在执行且NT上已执行Server.Start叙述时会引发此错误
             oSvr.Connect "(local)", "sa", ""
             Resume Next
         End If
    End Sub
    在使用者电脑上载入数据库到 MSDE中 
      以下的程式码只需要执行一次即可,但是它做了一些假设,所以您可能会针对您的需要做些修改。
      第一,它假设安装程式要复制的MDF资料档和ADP专案档是在相同的资料夹中,而且目前的资料夹就存放有该MDF资料档。它同时也假设该档案应该是要复制到MSSQL7\Data 资料夹中。事实上我们并不一定要把MDF资料档放在MSSQL7\Data资料夹中,不过它是一个标准的位置。这个副程式同时也需要参照到Microsoft Scripting Runtime来处理档案复制的工作。
    Sub ConnectData()
    Dim strMsg As String
    Dim strCurDir as String
    Dim FSO As Scripting.FileSystemObject
    Dim oSvr As SQLDMO.SQLServer      Set FSO = CreateObject("Scripting.FileSystemObject")
          Set oSvr = CreateObject("SQLDMO.SQLServer")'登入到资料库中
          oSvr.Connect "(local)", "sa", ""'复制档案到资料目录中
          strCurDir = CurDir & "adp1sql.mdf"
          FSO.CopyFile strCurDir, "c:\mssql7\data\adp1sql.mdf", True'连接上资料库档产生资料库
          strmessage = oSvr.AttachDBWithSingleFile("DemoDatabase", "c:\mssql7\data\adp1SQL.mdf")'显示成功或示败的讯息
          MsgBox strmessage      oSvr.Disconnect      Set oSvr = NothingEnd Sub 
      您可能为了测试的缘故需要透过程式来卸除已连结的资料库,以便重新执行上面的程式码。您可以透过SQLDMO的DetachDB方法来进行卸除的工作。
    准备包装MSDE到安装程式中 
      在Office 2000程式开发版的光碟中的MSDE资料夹内提供了一个范本,供您设计自订的MSDE解决方案。在MSDEInst .bat档中包含有「安装Office内附的MSDE」一节中所描述的命令列叙述,您可以加以修改并利用。
    而MSDEx86.dep这个档案则列出了MSDEx86.exe的相关档案,内容如下:
    ; Dependency file for MSDEx86.exe; Default Dependencies -----------
      
    [MSDEx86.exe]
    Dest=$(AppPath)\MSDETemp
    Uses1=MSDEInst.iss
    Uses2=MSDEInst.bat[MSDEInst.bat]
    Dest=$(AppPath)\MSDETemp
    Uses1=[MSDEInst.iss]
    Dest=$(AppPath)\MSDETemp
    Uses1= 
      这个档案主要是用来通知VBA Package and Deployment wizard要包装那些档案,以及要安装在使用者电脑中的什麽位置。目前的设定是把档案都放在应用程式资料夹的\MSDETemp资料夹中,让您可以在稍後进行删除。
      您可能也需要依据需求修改MSDEInst.iss档的内容,而在执行时必须要指向正确的硬碟安装位置。
      要使用要这些范本档案,请将它们(MSDEx86.exe、MSDEx86.dep、MSDEInst.bat以及MSDEInst.iss) 都复制到您的电脑上独立的资料夹中,并为每一个专案做适当的修正。
    利用VBA Package and Deployment Wizard包装ADP 解决方案 
      您可以在Visual Basic for Applications 6. 0的开发环境中透过增益集选单找到VBA Package and Deployment wizard。至於使用这个精灵的详细操作步骤可以参考Office 2000程式开发版的线辅助说明。
      利用VBA Package and Deployment wizard包装以MSDE为基础的解决方案
    1. 在VBA的环境中选取增益集选单的Package and Deployment wizard 。 
    2. 在Included Files的画面中,选择Add File并浏览到您的解决方案所使用的MDF资料档所在的资料夹,并加入到您的专案中。 
    3. 再次选择Add File ,并浏览到含有MSDEx86.exe和它的相关档案的资料夹。将这个档案复制到您的解决方案中。注意到在您的MSDEx86.dep档案中指定的相关档案也会被加到清单中。 
    4. 取消所有将会在使用者电脑上找到的相关档案的选取,例如SQLDMO.rll。 
    5. 在Installation Options的画面中,选择Run this command when installation is finished 选项,并输入以下的叙述:
    MSDETemp\MSDEInst.bat. 
      这个命令会自动将MSDE安装到C:\MSSQL7资料夹中。如果您希望让使用者决定要安装到那一个硬碟中,请自行建立一个安装执行档,并将上述命令改成该执行档的名称。这个执行档必须要要求使用者输入安装位置,然後修改MSDEInst.iss档案中的内容,把szDir 和szDataDir参数指向新的安装位置。
    在完成上述的修正後,透过安装执行档启动MSDEInst.bat。
    接下来请按照一般的程序继续解决方案包装的工作,来产生安装程式。
    针对开发、测试及发行的重要""题 
    · 只有在Office 2000程式开发版光碟中的MSDE才是可重复散布的,在Office 2000企业版光碟片中的版本并不允许您自行散布。 
    · MSDE能够和SQL Server 7.0充份相容。利用MSDE建立的解决方案可以透过资料转换工具轻易的""合到SQL Server的环境,这些工具都是Office MSDE以及SQL Server 7.0的一部份,或者您也可以透过SQL DMO 的 AttachDBWithSingleFile方法。在使用AttachDBWithSingleFile方法时,会以系统预设值建立一个交易纪录档(log file)。如果您希望安装自己的交易纪录档,请使用Att