设置

使用 Systems Management Server 2003 部署 Microsoft Dynamics CRM for Outlook

发布日期: 五月 8, 2008

Microsoft Systems Management Server (SMS) 2003 或其后续版本 Microsoft System Center Configuration Manager 2007 可以以最灵活的方式在网络上部署软件。通过这些应用程序,您可以更有效地管理控制用户目标或系统目标,增强用户的安装权限,并指定何时可以进行安装等等。本文将主要介绍管理员是如何使用 SMS 2003 为网络用户和计算机部署 Microsoft Dynamics CRM for Microsoft Office Outlook 的。

当前页内容
要求和限制 要求和限制
分发应用程序的最佳方法 分发应用程序的最佳方法
创建和分发应用程序 创建和分发应用程序
在安装之后自动配置任务 在安装之后自动配置任务
验证 Microsoft Dynamics CRM for Outlook 安装的 VBS 脚本 验证 Microsoft Dynamics CRM for Outlook 安装的 VBS 脚本

要求和限制

在尝试使用 SMS 2003 部署 Microsoft Dynamics CRM for Outlook 之前,请注意以下要求和限制。

  • 建议使用 SMS 2003 SP3 或 System Center Configuration Manager 2007。

  • 必须使用 ClientSetup.exe 安装程序部署该应用程序。而不能使用 Microsoft 安装程序 (MSI) 文件。

  • 必须安装和配置 SMS 2003 服务器,以便将应用程序推送到客户端系统上。例如,您必须配置后台智能传送服务 (BITS) 和 SMS 2003 服务器以便在 Active Directory 中进行应用程序播发和分发。有关如何配置 SMS 2003 服务器以分发应用程序的详细信息,请参阅 SMS 2003 文档。

  • 虽然您可以使用 SMS 2003 以无提示方式部署 Microsoft Dynamics CRM for Outlook(桌面客户端),但不能在无人参与(无提示)下部署 带脱机访问功能的 Microsoft Dynamics CRM for Outlook。这是因为在安装 SQL Server 2005 Express Edition 时需要用户特定的信息,而该软件是 带脱机访问功能的 Microsoft Dynamics CRM for Outlook 的必需组件。

页首

分发应用程序的最佳方法

本主题介绍了一种方法,您可以使用该方法,通过适用于大部分环境的 SMS 2003 来部署 Microsoft Dynamics CRM for Outlook。有关 SMS 2003 的详细信息,请参阅以下 Microsoft TechNet 网站:

Systems Management Server 2003 技术库

带脱机访问功能的 Microsoft Dynamics CRM for Outlook 安装提示。

  • 在运行 Microsoft Dynamics CRM for Outlook 之前,必须首先安装该应用程序,然后再为每个用户配置它。虽然您可以使用 SMS 来安装该应用程序,但在使用 SMS 配置该应用程序时,则需要首先创建一个脚本。因此,为了减少配置错误,请务必在安装 XML 配置文件中预填充所有选项。然后,提示用户 只需在安装向导中单击“下一步”,即可完成安装。并指示用户不要更改预先选择好的任何选项。

    或者,可以编写一个脚本来运行安装程序并使用 XML 配置文件以无提示方式配置 Microsoft Dynamics CRM for Outlook。此脚本可以由 SMS 进行分发。

    有关在命令行运行安装程序以及如何使用安装 XML 配置文件的详细信息,请参阅《Microsoft Dynamics CRM 实施指南》中的安装指南。

  • 在成功安装后,手动重新启动客户端计算机。

  • 创建一个脚本来配置 带脱机访问功能的 Microsoft Dynamics CRM for Outlook,或手动运行配置向导。

页首

创建和分发应用程序

假设在执行以下步骤之前,您已在自己的组织中安装、配置并运行了 SMS 2003 SP3。此外,还假设您已安装了 SMS 2003 客户端代理,并且要在其中部署 Microsoft Dynamics CRM for Outlook。有关如何配置 SMS 2003 的详细信息,请参阅 SMS 2003 文档。

  1. 将以下两个源文件夹中所有的 Microsoft Dynamics CRM for Outlook 安装文件和文件夹复制到一个网络共享文件夹中,您可以通过 SMS 2003 服务器来访问该文件夹:

    • Client。此文件夹包含了所有 Microsoft Dynamics CRM for Outlook 安装文件和文件夹。

    • Redist\i386。在此文件夹中,可以找到在安装 Microsoft Dynamics CRM for Outlook 过程中安装的所有可再发行必备组件,例如 MSXML、SQL Server 2005 Express Edition 和 Microsoft Visual C++ 可再发行程序包。

    重要提示

    若要执行无提示安装,必须将可再发行必备组件 (Redist\i386) 复制到源文件夹和文件中,它们位于 Microsoft Dynamics CRM for Outlook 下载程序包中。也可以通过 DVD 进行安装,Microsoft Dynamics CRM for Outlook 安装文件位于该磁盘上。若要避免出现过多的网络通信,可以将安装文件复制到正在运行 SMS 2003 的计算机中。

  2. 创建一个集合。SMS 集合包含了用于软件分发的一组资源。在本例中,这些资源是您要安装 Microsoft Dynamics CRM for Outlook 的客户端计算机。若要创建集合,请执行以下步骤:

    1. 在 SMS 2003 服务器上,以管理员身份登录并启动 SMS 管理员控制台。

    2. 展开“站点数据库”,右键单击“集合”,指向“新建”,然后单击“集合”。

    3. 在“集合属性”对话框中,键入集合名称,例如 Microsoft Dynamics CRM for Outlook。

    4. 单击“成员身份规则”选项卡,单击“新建”,然后使用以下信息完成创建直属成员身份规则向导的操作。

      1. 在创建直属成员身份规则向导的欢迎页上,单击“下一步”。

      2. 在“搜索资源”页的“资源类”列表中,选择“系统资源”,在“属性”名称列表中,选择“名称”,然后在“值”框中,键入百分比符号 (%)。这将返回资源。

      3. 单击“下一步”。

      4. 在“集合限制”页上,单击“下一步”。

      5. 在“选择资源”页上,选择您要安装 Microsoft Dynamics CRM for Outlook 的计算机。

      6. 单击“完成”,然后在“集合属性”对话框中,单击“确定”。

  3. 分发 Microsoft Dynamics CRM for Outlook。

    1. 在 SMS 2003 服务器上,以管理员身份登录并启动 SMS 管理员控制台。

    2. 展开“站点数据库”和“集合”,然后右键单击先前创建的集合。

    3. 指向“所有任务”,然后单击“分发软件”。

    4. 在将软件分发给集合向导的欢迎页上,单击“下一步”。

    5. 在“数据包”页上,单击“创建一个新数据包和程序”选项,然后单击“下一步”。

    6. 在“数据包标识”页上,键入数据包的名称。可以在其他字段中输入用于描述版本、发布者和语言的信息。单击“下一步”。

    7. 在“源文件”页上,单击“创建源的压缩版本”,然后单击“下一步”。

    8. 在“源文件压缩”页上,单击“站点服务器上的本地驱动器”,然后键入该位置,或单击“浏览”以输入 Microsoft Dynamics CRM for Outlook 安装文件所在的文件夹。

      重要提示

      您指定的源目录必须包含 SetupClient.exe 文件。

    9. 在“分发点”页上,选择 SMS 服务器,然后单击“下一步”。

    10. 在“程序标识”页上,输入用于运行 Microsoft Dynamics CRM for Outlook 安装程序的程序名称和命令行。

      在确定程序名和命令行信息时,请使用以下列表。

      • 名称。键入描述该应用程序或此数据包分发意向的名称。

      • 命令行。输入用于运行安装程序的命令。例如,以下命令会将 Microsoft Dynamics CRM for Outlook(仅限桌面)安装到 c:\program files\Microsoft Dynamics CRM 文件夹,并且在安装过程中无需任何用户操作。

        SetupClient.exe /Q /L "c:\clientinstalllog.txt" /targetdir "c:\program files\Microsoft Dynamics CRM" INSTALLLEVEL=3

        请注意以下参数:

        • /targetdir。客户端的安装位置。

        • INSTALLLEVEL。将要安装的客户端:2 是指 Microsoft Dynamics CRM for Outlook(必须为联机的桌面客户端),3 是指 带脱机访问功能的 Microsoft Dynamics CRM for Outlook(便携式客户端)。

        • /L。日志的存储位置。

        • /Q。表示无提示安装。如果您要部署 带脱机访问功能的 Microsoft Dynamics CRM for Outlook,请不要使用此选项。

    11. 在“程序属性”页上,选择以下选项。

      • 在“程序可以运行”列表中,选择“仅当用户登录时”。

      • 选择“使用管理员权限运行”。

        重要提示

        如果您要安装 带脱机访问功能的 Microsoft Dynamics CRM for Outlook(便携式客户端),必须选择“允许用户与此程序交互”。这样才能安装必备组件。如果您要以无提示方式(使用 /Q 参数)安装 Microsoft Dynamics CRM for Outlook(桌面客户端),则不选择此选项。

      • 在“运行之后”列表中,选择“不需要任何操作”。

    12. 在“播发某个程序”页上,选择“是”,然后单击“下一步”。

    13. 在“选择某个要播发的程序”页上,可以在“注释”框中添加注释,但不能进行其他任何更改。单击“下一步”。

    14. 在“播发名称”页上,请不要进行任何更改。单击“下一步”。

    15. 在“播发至子集合”页上,请不要进行任何更改。单击“下一步”。

    16. 在“播发计划”页上,请确保播发始终不会过期。单击“下一步”。

    17. 在“分配程序”页上,单击“是”,选择您要在“在下列时间之后分配”列表中为程序分配的日期,然后单击“下一步”。

    18. 在“正在完成将软件分发给集合向导”页上,单击“完成”。

  4. 为播发配置 BITS,它将从分发点运行程序。如果客户端中断了与网络的连接,则安装程序将会失败。对于大部分部署,在 SMS 服务器尝试运行播发程序之前,需要使用 BITS 将数据包下载到客户端计算机上。如果客户端中断连接,SMS 服务器将从中断连接点开始运行。请注意,如果不使用 BITS,播发程序将不显示在客户端缓存 (c:\WINDOWS\System32\CCM\Cache) 中。在完成上述步骤后,请执行以下步骤确保 BITS 用于下载该程序。

    1. 在 SMS 2003 服务器上,以管理员身份登录并启动 SMS 管理员控制台。

    2. 展开“站点数据库”,单击“播发”,右键单击在先前步骤中创建的播发,然后单击“属性”。

    3. 单击“高级客户端”选项卡,然后单击“从分发点下载程序”。 单击“确定”。.

    4. 右键单击 Microsoft Dynamics CRM for Outlook 播发,指向“所有任务”,然后单击“重新运行播发”。

    5. 单击“是”确认该操作。

  5. 验证分发状态。在构建并播发数据包后,SMS 将安装文件上载到先前指定的客户端计算机上。

    • 对于 32 位的计算机,文件将上载到客户端文件夹 c:\WINDOWS\System32\CCM\Cache 中。

    • 对于 64 位的计算机,文件将上载到客户端文件夹 c:\WINDOWS\SysWOW64\CCM\Cache 中。

    可以使用以下步骤,在 SMS 服务器上验证数据包的分发和执行状态。

    1. 在 SMS 2003 服务器上,以管理员身份登录并启动 SMS 管理员控制台。

    2. 依次展开“站点数据库”、“系统状态”和“播发状态”。

    3. 右键单击先前创建的播发,指向“显示消息”,然后单击“全部”。

    4. 播发状态消息将显示在“SMS 状态消息查看器”窗口中。若要更新此列表,在“查看”菜单上,单击“刷新”。

将在将软件分发给集合向导所指定的客户端上进行该安装。在安装期间,客户端计算机将显示通知区域图标,以宣布新的数据包可用。如果不是无提示安装,用户必须双击该图标,选择 Microsoft Dynamics CRM for Outlook 数据包,然后单击“运行”。如果系统显示一则错误消息称数据包不可用,请稍等几分钟,然后尝试再次运行该安装。发生这种情况是由于已知问题造成的,因而 SMS 2003 将在所有文件完成上载之前为 SMS 客户端显示数据包。

页首

在安装之后自动配置任务

若要自动配置 Microsoft Dynamics CRM for Outlook,可以将若干个命令添加到用于配置该应用程序的 .CMD 文件,然后重新启动计算机。

首先,创建 Microsoft Visual Basic 脚本文件 (VBS),该文件将查看安装日志状态,以等待完成 Microsoft Dynamics CRM for Outlook 安装。在以下“验证 Microsoft Dynamics CRM for Outlook 安装的 VBS 脚本示例”部分,提供了一个脚本示例,您可以使用该脚本进行安装验证。

然后,创建一个运行以下命令序列的命令文件,该顺序用于配置 Microsoft Dynamics CRM for Outlook,然后重新启动计算机。

SetupClient.exe /q /targetdir "c:\program files\Microsoft CRM" INSTALLLEVEL=2 /l c:\log.txt 

Cscript //nologo CRMSetupLogParser.vbs c:\log.txt Client V4 > ParserOutput.txt 

Shutdown –r
页首

验证 Microsoft Dynamics CRM for Outlook 安装的 VBS 脚本

'************************************************************************************* 

'CRM Setup Log Parser - 

' Server setup only gets called once the log is done, so we loop once checking for an ERROR| 

' Client setup gets called over and over as the log is being generated,
' so we'll loop until we get a setup completed successfully message or see a failure 

' 

'Incoming Parameters Examples: 

' FileToParse = "C:\CRM_Server_Install.txt" 

' LogType = Client|Server|ConfigureClient 

' ClientVer = "V4" or "V3" 

'************************************************************************************* 

Option Explicit 

Dim objFileSystem 

Dim objFile 

Dim FileToParse 

Dim InstallSuccesSearchString 

Dim UninstallSuccesSearchString 

Dim FailSearchString 

Dim StringFound 

Dim LogType 

Dim LogToPS 

Dim ClientVer 

Dim PassFail 

Dim WaitTime 

Dim LineFromFile 

Dim LineNumber 

Dim TestCaseNumber 

Dim BuildNumber 

Dim RunPurpose 

Dim Owner 

Dim CRMServerName 

Dim ClientMode 

Dim ServerConfig 

Dim PSLoggerArgs 

Const ForReading = 1 

Const TristateTrue = -1 

Const CreateFile = False 

StringFound = "False" 

FileToParse = WScript.Arguments(0) 

LogType = WScript.Arguments(1) 

IF LogType = "ConfigureClient" THEN 

IF WScript.Arguments.Count > 2 THEN 

LogToPS = "False" 

PSLoggerArgs = Split(WScript.Arguments(2),",") 

TestCaseNumber = PSLoggerArgs(0) 

BuildNumber = PSLoggerArgs(1) 

RunPurpose = PSLoggerArgs(2) 

Owner = PSLoggerArgs(3) 

CRMServerName = PSLoggerArgs(4) 

ClientMode = PSLoggerArgs(5) 

ServerConfig = PSLoggerArgs(6) 

END IF 

ELSEIF LogType = "Server" THEN 

IF WScript.Arguments.Count > 2 THEN 

LogToPS = "False" 

PSLoggerArgs = Split(WScript.Arguments(2),",") 

TestCaseNumber = PSLoggerArgs(0) 

BuildNumber = PSLoggerArgs(1) 

RunPurpose = PSLoggerArgs(2) 

Owner = PSLoggerArgs(3) 

CRMServerName = PSLoggerArgs(4) 

ClientMode = PSLoggerArgs(5) 

ServerConfig = PSLoggerArgs(6) 

END IF 

ELSEIF LogType = "Client" THEN 

ClientVer = Ucase(WScript.Arguments(2)) 

IF WScript.Arguments.Count > 3 THEN 

LogToPS = "False" 

PSLoggerArgs = Split(WScript.Arguments(3),",") 

TestCaseNumber = PSLoggerArgs(0) 

BuildNumber = PSLoggerArgs(1) 

RunPurpose = PSLoggerArgs(2) 

Owner = PSLoggerArgs(3) 

CRMServerName = PSLoggerArgs(4) 

ClientMode = PSLoggerArgs(5) 

ServerConfig = PSLoggerArgs(6) 

END IF 

END IF 

WaitTime = 1000 * 15 'The amount of time we'll wait 

LineNumber = 1 

'Call correct log parsing function 

' The ConfigureClient and Server are the same setup logic 

IF LogType = "Client" THEN 

ClientSetupLogParser() 

ELSEIF LogType = "ConfigureClient" THEN 

ServerSetupLogParser() 

ELSEIF LogType = "Server" THEN 

ServerSetupLogParser() 

END IF 

'Write final Pass/Fail to the WTT logger 

IF PassFail = "Pass" THEN 

WScript.Quit(0) 

ELSE 

WScript.Quit(1) 

END IF 

'************************************************************************************* 

'ClientSetupLogParser - 

'************************************************************************************* 

Function ClientSetupLogParser() 

IF ClientVer = "V4" THEN 

InstallSuccesSearchString = "INSTALL.*1" 
'Regular Expression, search for case sensitive "INSTALL (anything) 1" 

UninstallSuccesSearchString = "INSTALL.*1" 
'Regular Expression, search for case sensitive "INSTALL (anything) 1" 

FailSearchString = "Installation failed" 

ELSEIF ClientVer = "V3" THEN 

InstallSuccesSearchString = "Info\| Exit code: 0" 

UninstallSuccesSearchString = "has been successfully uninstalled" 

FailSearchString = "Error\|" 

END IF 

Wscript.sleep(WaitTime) 

Set objFileSystem = CreateObject("Scripting.FileSystemObject") 

Set objFile = objFileSystem.OpenTextFile(FileToParse, ForReading, CreateFile, TristateTrue) 

Dim Timer, TimeLimit ' We'll only loop for %TimeLimit% minutes as a fallback 

Timer = 0 

TimeLimit = 20 

DO WHILE PassFail = "" 

DO WHILE NOT objFile.AtEndOfStream 

LineFromFile = objFile.ReadLine 

'Check for failure 

IF (RegExMatch(FailSearchString, LineFromFile)) THEN 

PassFail = "Fail" 

ELSEIF (RegExMatch(InstallSuccesSearchString, LineFromFile)) THEN 

'If we've already set it to Fail, we don't want to overwrite it if the success line appears further 
' down the line 

IF PassFail <> "Fail" THEN 

PassFail = "Pass" 

END IF 

ELSEIF (RegExMatch(UninstallSuccesSearchString, LineFromFile)) THEN 

'If we've already set it to Fail, we don't want to overwrite it if the success line appears further 
' down the line 

IF PassFail <> "Fail" THEN 

PassFail = "Pass" 

END IF 

END IF 

LineNumber = LineNumber + 1 

LOOP 

IF PassFail = "" THEN 

Wscript.sleep(1000 * 60) 

Timer = Timer + 1 

END IF 

IF Timer > TimeLimit AND ClientVer = "V4" THEN ' Didn't find a result in time, 
' assume a pass and move on 

PassFail = "Pass" 

END IF 

LOOP 

End Function 

'************************************************************************************* 

'ServerSetupLogParser 

'************************************************************************************* 

Function ServerSetupLogParser() 

FailSearchString = "Error|" 

Set objFileSystem = CreateObject("Scripting.FileSystemObject") 

Set objFile = objFileSystem.OpenTextFile(FileToParse, ForReading, CreateFile, TristateTrue) 

WScript.Sleep (WaitTime) 

DO WHILE NOT objFile.AtEndOfStream 

LineFromFile = objFile.ReadLine 

IF (INSTR(1, LineFromFile, FailSearchString, 1) > 0) THEN 

PassFail = "Fail" 

END IF 

LineNumber = LineNumber + 1 

LOOP 

IF PassFail <> "Fail" THEN 

PassFail = "Pass" 

END IF 

End Function 

'************************************************************************************* 

'PSLogger 

'************************************************************************************* 

Function PSLogger(PassFail) 

Dim sh 

Dim wsx 

Dim cmd 

Set sh = CreateObject("WScript.Shell") 

End Function 

' Runs an external program and pipes it's output to 

' the StdOut and StdErr streams of the current script. 

' Returns the exit code of the external program. 

Function Run (ByVal cmd) 

Dim sh:Set sh = CreateObject("WScript.Shell") 

Dim wsx:Set wsx = Sh.Exec(cmd) 

If wsx.ProcessID = 0 And wsx.Status = 1 Then 

' (The Win98 version of VBScript does not detect WshShell.Exec errors) 

Err.Raise vbObjectError,,"WshShell.Exec failed." 

End If 

Do 

Dim Status:Status = wsx.Status 

WScript.StdOut.Write wsx.StdOut.ReadAll() 

WScript.StdErr.Write wsx.StdErr.ReadAll() 

If Status <> 0 Then Exit Do 

WScript.Sleep 10 

Loop 

Run = wsx.ExitCode 

End Function 

'************************************************************************************* 

'Regular Expression comparison function 

'************************************************************************************* 

Function RegExMatch(Pattern,StringToSearch) 

Dim RegEx, Match 

Set regEx = new RegExp 

regEx.Pattern = Pattern 

regEx.IgnoreCase = False 

regEx.Global = True 

RegExMatch = regEx.Test(StringToSearch) 

End Function

相关链接

是否找到了所需的信息?
是     否 
如果未找到,请问您需要什么信息?(可选)

© 2009 Microsoft Corporation。保留所有权利。