2.5 使用 zman 命令行实用程序创建分发包

ZENworks Configuration Management 可让您创建不同类型的分发包,如 Windows 分发包、“文件”分发包、“指令”分发包和“映像”分发包。每种分发包都有自己的一组数据和配置设置。由于在命令行中以参数形式传递数据过于复杂,zman 实用程序使用 XML 文件作为输入来创建分发包。要使用 zman 命令行实用程序创建分发包,必须已通过“ZENworks 控制中心”创建了相同类型的分发包,并将其导出到 XML。有关使用“ZENworks 控制中心”创建分发包的详细信息,请参见部分 2.0, 创建分发包。您可以将导出的 XML 文件用作模板,使用 zman 来创建分发包。

例如,您可以将通过“ZENworks 控制中心”创建的“文件”分发包导出到 XML 文件,并通过 zman 使用此文件来创建另一个“文件”分发包。

分发包可以包含相关联的文件内容。例如,要安装的 MSI 文件就是与“Windows MSI 分发包”关联的文件内容。

分发包还可以与其他分发包相依。

要使用 zman 命令行实用程序创建分发包,请查看以下各节:

2.5.1 创建不含内容或不与其他分发包相依的分发包

  1. 在“ZENworks 控制中心”内创建分发包。

    例如,使用“ZENworks 控制中心”创建一个名为 google 的“Web 应用程序”分发包,用于启动 Google 网站

  2. 使用以下命令将分发包导出到 XML 文件:

    zman bundle-export-to-file 分发包名称 分发包文件名.xml

    例如,使用 zman bundle-export-to-file google google.xml 命令可以将 google 分发包导出到 google.xml。

    如果要使用新数据创建新分发包,请继续步骤 3。如果要使用与 google 分发包相同的数据创建新分发包,请跳到步骤 4

  3. 根据需要修改 XML 文件。

    例如,在 XML 文件的 Launch ActionSet 中的 Launch URL Action 这一部分,将 <URL> 的值从 http://www.google.com 更改为 http://www.yahoo.com,如下所示。

       <ns2:ActionSets>
    
            <Id>104e5d74804052eb7ddc4a2f54358d97</Id>
    
           <Type>Launch</Type>
    
            <Version>1</Version>
    
            <Modified>false</Modified>
    
            <Data>
    
                <ns1:Launch/>
    
            </Data>
    
            <Actions>
    
                <Id>2ef5c645774759e9868ba2c157301949</Id>
    
                <Type>Launch URL Action</Type>
    
                <Data>
    
                    <ns1:LaunchUrlActionData>
    
                        <URL>http://www.yahoo.com</URL>
    
                        <WaitForExit>false</WaitForExit>
    
                    </ns1:LaunchUrlActionData>
    
                </Data>
    
                <ContinueOnFailure>false</ContinueOnFailure>
    
                <Enabled>true</Enabled>
    
                <Properties />
    
            </Actions>
    
        </ns2:ActionSets>
    
  4. 使用以下命令创建新的分发包:

    zman bundle-create 新分发包名称 分发包 xml 文件名.xml

    例如,要创建 yahoo 分发包,请在控制台提示符处输入 zman bundle-create yahoo google.xml 命令。

2.5.2 创建含有内容并与其他分发包相依的分发包

  1. 在“ZENworks 控制中心”内创建两个分发包。

    例如,使用“ZENworks 控制中心”创建名为 officeXP 和 officeXPSP1 的两个 MSI 应用程序分发包。officeXP 分发包会通过 MSI 安装 Microsoft Office XP。officeXPSP1 分发包会安装 Microsoft Office XP 的 Service Pack 1。在 officeXP 分发包中,添加“安装分发包”操作以安装 officeXPSP1。

  2. 使用以下命令将与另一个分发包相依的分发包导出到 XML 文件:

    zman bundle-export-to-file 分发包名称 分发包文件名.xml

    这会创建分发包文件名.xml分发包文件名_ActionContentInfo.xml 这两个文件。

    例如,使用 zman bundle-export-to-file officeXP officeXP.xml 命令将 officeXP 分发包导出到 officeXP.xml。即会创建 officeXP.xmlofficeXP_ActionContentInfo.xml 文件。

    xml 格式模板的示例(WindowsMSIBundle.xmlActionInfo.xml)可从 Linux 服务器上 /opt/novell/zenworks/share/zman/samples/bundles 中及 Windows 服务器上 %ZENWORKS_HOME%\Novell\Zenworks\share\zman\samples\bundles 中取得。有关 ActionContentInfo.xml 的详细信息,请参见部分 2.5.3, 了解 zman 分发包 XML 文件格式

    如果要使用新数据创建新分发包,请继续步骤 3。如果要使用与 officeXP 分发包相同的数据创建新分发包,请跳到步骤 4

  3. 根据需要修改 officeXP.xmlofficeXP_ActionContentInfo.xml 文件。

    例如,要创建用于安装 ApplicationX 及其支持包的新分发包,请执行以下操作:

    • officeXP_ActionContentInfo.xml 文件中,将对 officeXP.msi 的所有参照都改为 ApplicationX.msi

    • 创建另一个名为 ApplicationX-SP1 的分发包,用于安装 Application X 的支持包。

    • officeXP_ActionContentInfo.xml 中,将相依 OfficeXPSP1 分发包的路径改为 ApplicationX-SP1,以便同时安装 ApplicationX 及其支持包。

    officeXP_ActionContentInfo.xml 的示例如下:

    <ActionInformation>
    
       <ActionSet type="Install">
    
            <Action name="Install MSI" index="1">
    
                <Content>              
    
                    <ContentFilePath includeAllFilesinFolder="false"
    
    includeAllFilesinSubFolders="false">E:\files\ApplicationX.msi</ContentFilePath>
    
                </Content>                            
    
            </Action>
    
            <Action name="Install Bundle" index="2">
    
             <DependentBundlePath>bundlefolder/ApplicationX-SP1</DependentBundlePath>             
    
            </Action>
    
        </ActionSet>
    
        <ActionSet type="Uninstall">
    
            <Action name="Undo Install Actions" index="1">
    
                <Content>                
    
                    <ContentFilePath includeAllFilesinFolder="false" includeAllFilesinSubFolders="false">E:\files\ApplicationX.msi</ContentFilePath>
    
                </Content>
    
            </Action>
    
        </ActionSet>
    
    </ActionInformation>
    
  4. 使用以下命令创建分发包:

    zman bundle-create 新分发包名称 分发包 xml 文件名.xml 分发包位置 --actioninfo 分发包名称_ActionContentInfo.xml

    如果未指定创建分发包的位置,则分发包默认会在根文件夹(/分发包)中创建。

    例如,使用以下命令会在根文件夹(/分发包)中创建名为 ApplicationX 的分发包。

    zman bundle-create ApplicationX officeXP.xml --actioninfo officeXP_ActionContentInfo.xml

    您也可以指定要在其中创建分发包的文件夹。

    例如,使用以下命令会在根文件夹下的软件文件夹(/分发包/软件)中创建名为 ApplicationY 的分发包。

    zman bundle-create ApplicationY officeXP.xml /分发包/软件 --actioninfo officeXP_ActionContentInfo.xml

2.5.3 了解 zman 分发包 XML 文件格式

bundle-export-to-file 命令会将储存于数据库中的分发包信息序列化为 XML 文件。每个分发包所含的操作都会分组到各操作集(如“安装”和“起动”)。导出的分发包 XML 文件包含分发包的各种信息,如 UID、名称、路径、主类型、子类型、类别、系统要求,以及所有操作集及其操作的信息。不包含分发包的设备或用户指派信息,也不包含分发包的附加映像的相关信息。

XML 格式模板的示例 (WindowsMSIBundle.xml),可从 Linux 服务器上 /opt/novell/zenworks/share/zman/samples/bundles 中及 Windows 服务器上 %ZENWORKS_HOME%\Novell\Zenworks\share\zman\samples\bundles 中取得。

注:如果导出的 XML 文件包含扩展 ASCII 字符,则必须在编辑器中使用 UTF-8 编码(而非 ANSI 编码)将其打开,因为 ANSI 编码会将扩展 ASCII 字符显示为乱码。

通过 XML 文件创建分发包时,zman 会使用文件的 <Description><SubType><Category><ActionSets><SysReqs> 元素中指定的信息。“名称”和“父文件夹”的值取自命令行。其余元素使用默认值。

按照下列指示使用 XML 文件:

  • 如果要创建不含内容或不与其他分发包相依的分发包,只需使用分发包 XML 文件创建分发包。

  • 如果要创建包含内容或与其他分发包相依的分发包,则必须提供另一个 XML 文件(其中包含内容文件或相依分发包的路径),作为 bundle-create 命令的 --actioninfo 选项的参数。

    XML 格式模板的示例 (ActionInfo.xml) 可从 Linux 服务器上 /opt/novell/zenworks/share/zman/samples/bundles 中及 Windows 服务器上 %ZENWORKS_HOME%\Novell\Zenworks\share\zman\samples\bundles 中取得。

  • 如果要修改导出的 XML 文件中操作的 <Data> 元素,请确保新数据正确无误且符合纲要。zman 实用程序只会对数据做最基本的验证,并不会检查数据中是否有错误。因此,成功创建的分发包也有可能包含无效数据。在受管设备上部署此类分发包时,操作将会失败。

  • 文件内容或分发包依赖项与 <ActionSet> 中的特定操作相关联。“操作内容信息”XML 文件应包含要与文件内容相关联的文件的路径,以及 <ActionSet> 中操作的索引。

    例如,创建“Windows MSI 分发包”时要安装的 MSI 文件与此分发包的“安装”操作集中的第一个“安装 MSI”操作相关联。

  • <ActionSet>type 属性指定,应与分发包 XML 文件的“操作集”类型相同。

  • <Action> 元素具有名称属性(此属性可选),目的是为了方便用户理解。

  • index 属性是必需的。它可以指定内容或依赖项应与之关联的操作。<ActionSet> 中第一个操作的索引值为 1。

  • 每项操作都可以有多个 <Content> 元素,而每个 <Content> 元素都包含一个 <ContentFilePath> 元素。<ContentFilePath> 元素包含要与“操作”关联的文件内容的路径。请确保此文件名与分发包 XML 文件中该操作的 <Data> 元素中指定的文件名相同。

  • 确保 <Content> 元素的顺序与分发包 XML 文件中的顺序一致。例如,Windows MSI 分发包的第一个 <Content> 元素中应指定 MSI 文件,其后的各 <Content> 元素应指定 MST 文件的路径,顺序与该操作的 <Data> 中指定的顺序相同。

  • 创建 Windows MSI 分发包时,可以将 includeAllFilesinFolderincludeAllFilesinSubFolders 属性设置为 True,以加入文件夹或子文件夹中的所有文件。通过将 <DependentBundlePath> 元素的值设为另一个分发包路径,可以指定与该分发包相依。指定的分发包路径应当相对于 /分发包,如下所示。

    <ActionSet type="Install">
    
    <Action name="Install MSI" index="1">
    
    <Content>
    
    <ContentFilePath includeAllFilesinFolder="false" includeAllFilesinSubFolders="false">E:\files\ApplicationX.msi</ContentFilePath>
    
    </Content>
    
    <Content>
    
    <ContentFilePath includeAllFilesinFolder="false"
    
    includeAllFilesinSubFolders="false">E:\files\ApplicationX_MST1.mst</ContentFilePath>
    
    </Content>
    
    </Action>
    
    <Action name="Install Bundle" index="2">
    
    <DependentBundlePath>bundlefolder/ApplicationX-SP1</DependentBundlePath>
    
    </Action>
    
    </ActionSet>
    
  • 要获取对象的 UID,请使用 object-get-GUID 命令。下列几种情况下,您必须手动在分发包 XML 文件中编辑对象 UID:

    • 在“已安装分发包”系统要求中,必须在 <SysReqs> 元素下的 <BundleInstalledReq> 元素中更改分发包的路径和 UID。

    • 在“映像”分发包中,必须在“ZENworks 映像”和“多路广播映像集”操作中手动更改包含 .img 文件的服务器 UID。而且,必须在“链接的应用程序分发包”和“多路广播映像集”操作中手动更改链接的应用程序分发包的 UID。请确保链接的分发包已有一个手动创建的附加映像,因为当分发包链接到映像分发包时,系统不会自动创建附加映像。