Creating Packages for Distribution

[Previous] [Next]

Now we can delve into the package distribution process in more detail, beginning with package creation itself. In this section, we will explore the package creation process, including identifying distribution points and creating programs.

Gathering Source Files

If your package involves the accessing of source files, such as performing a software installation, you must define a location for the source files. The location can be a shared folder on the site server or on a remote server, including a CD-ROM drive. The most important characteristic of the source file location is that it must be accessible to the SMS Service account. If your program involves using a script file or files, be sure to include them as part of your source files as well or the program will fail.

Creating a Package from Scratch

As in all things SMS, you will begin in the SMS Administrator Console. A package can be created either from scratch—one for which you provide all the configuration details—or from a package definition file that already contains all the package details. In this section, we'll look at the former technique.

To create a package from the ground up, follow these steps:

  1. Navigate to the Packages folder, right-click on it, and choose New from the context menu, and then choose Package to display the Package Properties window, shown in Figure 12-1.
  2. Figure 12-1. The Package Properties window.

  3. On the General tab, enter the name of the package, its version, its publisher, its language, and a descriptive comment if desired. The only required value here is Name. Notice that the full package name is displayed in the text box to the left of the Change Icon button.
  4. Click the Change Icon button to enter or browse for an icon file or Setup.exe file to display the correct icon for the package. The default icon is the SMS package icon.
  5. Click on the Data Source tab, shown in Figure 12-2. This tab lets you define details concerning the source files for the package. If the package contains source files—even a single file—check the This Package Contains Source Files check box to enable the options in the Source Directory section.
  6. Figure 12-2. The Data Source tab.

  7. Click the Set button to display the Set Source Directory dialog box, shown in Figure 12-3. In this dialog box, you define the location of the source files. The location can either be a local drive path or a UNC path to a remote share. Enter the location or click Browse to look for the directory. Then click OK to return to the Data Source tab.
  8. Figure 12-3. The Set Source Directory dialog box.

  9. If your source files are not likely to change or are on a removable medium such as CD-ROM, or if the source path is likely to change, select the Use A Compressed Copy Of The Source Directory option. This option causes SMS to create and store a compressed version of the source files on the site server. When the package needs to be sent to a new distribution point or updated on existing distribution points, SMS will access the compressed files, uncompress them, and send them to the distribution points.
  10. If your source files are likely to change periodically—for example, if they include a monthly virus update file—select Always Obtain Files From Source Directory. Selecting this option also allows you to check the Update Distribution Points On A Schedule check box. Setting an update schedule ensures that as the source files change, the distribution points will be updated regularly.
  11. Click on the Data Access tab, shown in Figure 12-4. The Data Access tab defines how SMS will store the package source files on the distribution points. The default setting is Access Distribution Folder Through Common SMS Package Share. With this setting, SMS will define a share point on the distribution points and place the source files in a folder in that share. The share will always be SMSPKGx$, where x represents the drive with the most free disk space. This share is a hidden share to keep prying eyes from browsing for it. When SMS runs out of disk space, it will find the next drive with the most free space and create an additional SMSPKGx$ directory and share there.
  12. Figure 12-4. The Data Access tab.

  13. If you prefer to create your own folder organization and access shares, you may do so first and then reference the share by selecting the option Share Distribution Folder and entering the UNC path to the share. This value can be a share or a share and a path, but whatever value you enter must be unique among all packages. If you enter only a share name (in the form \\server\appshare), any file or subfolders created within the share will be deleted and re-created whenever the package is updated or refreshed. If you enter a share that includes a path (\\server\appshare\word), only the down-level folder will be deleted and re-created.
  14. Check the Disconnect Users From Windows NT Distribution Points to do just that. If you want to ensure that no users are connected to the package folder on the distribution points when files are being refreshed or updated, this option will cause SMS to inform users that they will be disconnected. Users will be disconnected after the time period you specify in the User Grace Period text box. The default value is 5 minutes, but you can specify from 0 to 59 minutes. The Number Of Retries Before Disconnecting Users option indicates how many times SMS will attempt to refresh the distribution points before disconnecting users. This value can range from 0 to 99.
  15. Click on the Distribution Settings tab, shown in Figure 12-5. On this tab, you identify the sending priority and preferred sender to use when sending this package to distribution points in a child site. If you have no child sites, these settings will have no effect. (Refer to Chapter 4 for a discussion of parent-child relationships and the role of the sender in transferring information between sites in the hierarchy.)
  16. Figure 12-5. The Distribution Settings tab.

  17. Click on the Reporting tab, shown in Figure 12-6. This tab lets you identify how SMS reports installation status Management Information Format (MIF) files from the client when the package is run. Select Use Package Properties For Status MIF Matching to simply use the values you supplied on the General tab to identify status MIF files generated during installation. Or, select Use These Fields For Status MIF Matching and fill in the fields if you want to specify different values.
  18. Figure 12-6. The Reporting tab.

  19. Click on the Security tab to set class and instance security for the package. This type of security is discussed in Chapter 16.
  20. Click OK to create the package.

We haven't quite finished creating this package. If you expand the new package entry you just created in the SMS Administrator Console, as in the example shown in Figure 12-7, you'll see that three areas of configuration remain. The first area, defining access accounts, allows you to further secure who has access to the distribution source files. The other two areas are absolutely essential to the successful distribution of the package: defining distribution points, without which the client has no access to the source files, and defining programs, which specifies how to install or run the source files. Let's configure the access account first.

click to view at full size.

Figure 12-7. A sample expanded package entry.

Defining Access Accounts

By default, when SMS creates the SMSPKGx$ share, it grants Read access to the local Users and Guests groups, and Full Control to the Administrators group. The default Users, Guests, and Administrators entries map to the local Users, Guests, and Administrators groups for Windows NT distribution points. On NetWare distribution points, Users and Guests map to the Everyone group, and Administrators maps to the Supervisor account. The Administrators, Users, and Guests accounts are known as generic accounts.

Since the default share is a hidden share, the only way a client should know that a package is available to it is through the package distribution process. In other words, the client agent will see an advertisement for that package that targets a collection the client is a member of. Bear in mind that users will be users, and it is possible that they will find the hidden share, navigate to a package folder, and execute any programs they find there. This could also happen if you create your own shares.

There are a couple of ways to deal with this little breach of security. One would be for you to evaluate the share (or NTFS) security for the SMS shares or for the package folders within the share. This is a time-consuming and potentially destructive process if you happen to lock out SMS from accessing the share. The other solution is to define access accounts for the package through the SMS Administrator Console. When you define an access account, you also define the level of access or permission for the specified user or group. This is very much like creating access control lists (ACLs) in Windows NT.

To define an access account, follow these steps:

  1. Navigate to the Packages folder, find your package entry, and expand it.
  2. Right-click on Access Accounts, choose New from the context menu, and then choose the type of access account you want to create.
  3. The four types of access accounts are listed here:
    • Windows NT access account Defines a Windows NT user or group account and the level of permission to allow
    • NetWare NDS access account Defines a NetWare NDS user or group account and the level of permission to allow
    • NetWare Bindery access account Defines a NetWare Bindery user or group account and the level of permission to allow
    • Generic access account Defines additional or replacement user, guest, or administrator accounts and the level of permission to allow

    Select the appropriate option to display the Access Account Properties window, shown in Figure 12-8.

    Figure 12-8. The Access Account Properties window.

  4. Click the Set button to specify the account information as follows:
    • For a Windows NT account, the Windows NT Account dialog box will appear, as shown in Figure 12-9. Enter the user or group account in \\Domain\user format, and select User or Group.

    Figure 12-9. The Windows NT Account dialog box.

    • For a NetWare NDS account, the NetWare NDS Account dialog box will appear, as shown in Figure 12-10. Enter the tree and user name information, and select User or Group.

    Figure 12-10. The NetWare NDS Account dialog box.

    • For a NetWare Bindery account, the NetWare Bindery Account dialog box will appear, as shown in Figure 12-11. Enter the user or group account in \\Server\User format, and select User or Group.

    Figure 12-11. The NetWare Bindery Account dialog box.

    • For a Generic account, the Generic Account dialog box will appear, as shown in Figure 12-12. Select the account type.

    Figure 12-12. The Generic Account dialog box.

  5. Click OK to return to the Access Account Properties window. Select the appropriate level of permissions from the Permissions list, as shown in Figure 12-13. For most applications, Read permission will be sufficient. However, if the program requires any kind of writing back to the source directory, you will need to assign at least Change permission.
  6. Figure 12-13. The Permissions list on the General tab of the Access Account Properties window.

  7. Click OK to create the account.

Defining Distribution Points

An essential configuration detail for any package is identifying the distribution points on which the package can be found. You should have already assigned the distribution point role to one or more site systems in your SMS site, as well as at any child sites. You now need to tell SMS which of those distribution points will host the package.

NOTE
If you are distributing the package to a child site, even if the SMS administrator for that site will ultimately distribute the package to its clients, you still must identify at least one distribution point at that child site when you create the package.

To define distribution points, follow these steps:

  1. Navigate to the Packages folder, find your package entry, and expand it.
  2. Right-click on Distribution Points, choose New from the context menu, and then choose Distribution Points to activate the New Distribution Points Wizard, shown in Figure 12-14.
  3. click to view at full size.

    Figure 12-14. The New Distribution Points Wizard welcome screen.

  4. Click Next to display the Copy Package screen, shown in Figure 12-15. This screen shows a list of available distribution points. Scroll through the list and select the distribution points you want.
  5. click to view at full size.

    Figure 12-15. The Copy Package screen.

  6. Click the Select Group button to open the Browse Distribution Point Group dialog box, shown in Figure 12-16. Here you can view a list of distribution point groups and their member site systems. If you select one of the distribution point groups and click OK, all the site systems that are members of that group will be selected in the Copy Package screen.
  7. Figure 12-16. The Browse Distribution Point Group dialog box.

  8. Click Finish to add the distribution points you selected to the package details.

Once you have added a distribution point to the package, that distribution point will no longer appear in the list of available distribution points if you run the New Distribution Points Wizard again—the wizard displays only distribution points that are available. If you need to remove a distribution point from the package, select it, right-click on it, and choose Delete from the context menu. When you delete a distribution point, you will also delete the package source directory on that distribution point.

It is often desirable to group distribution points so that packages can be distributed to them as a block rather than having to name the distribution points individually. Distribution point groups are defined through the site settings of your site—in the same place that you assign the distribution point role.

To define a distribution point group, follow these steps:

  1. In the SMS Administrator Console, navigate to the Site Systems folder under Site Settings.
  2. Right-click on one of the distribution points you defined, and choose Properties from the context menu to display the Site System Properties window. Click on the Distribution Point tab, shown in Figure 12-17.
  3. Figure 12-17. The Distribution Point tab of the Site System Properties window.

  4. To add a new distribution point group, in the Group Membership section click the New button (the yellow star) to display the Distribution Point Group Properties window, shown in Figure 12-18. Enter the name of the group and indicate whether this site system is to be a member of the group. Then click OK to return to the Site System Properties window.
  5. Figure 12-18. The Distribution Point Group Properties window.

  6. Select the next site system you want to include in the distribution point group, right-click on it, choose Properties from the context menu, and click on the Distribution Point tab. Notice that any distribution point groups you have created will be listed on this tab for each site system, as shown in Figure 12-19.
  7. Figure 12-19. The updated Group Membership list on the Distribution Point tab.

  8. Select the distribution point group that this site system should be a member of and click the Properties button (the hand holding a piece of paper) to display the Distribution Point Group Properties window, shown in Figure 12-20. Select the Include This Site System In This Distribution Point Group check box, and then click OK to return to the Distribution Point tab. The site system will now show that it is a member of the distribution point group. Click OK again.
  9. Figure 12-20. The updated Distribution Point Group Properties window.

  10. Repeat step 5 for every site system that needs to be a member of a distribution point group.

If you need to remove a site system from a distribution point group, simply repeat step 5 of this procedure, but clear the Include This Site System In This Distribution Point Group check box. If you need to remove a distribution point group altogether, select any site system, open its Site Systems Properties window, and click on the Distribution Point tab. Select the distribution point group in the Group Membership list and click the Delete button (the black "X").

Creating Programs

Finally, it is necessary to create at least one program for each package. This program specifies how the package is to be executed at the client. Many packages can have more than one program associated with them. For example, a package might have different installation methods such as Custom, Typical, and Compact. This is where you really have to know your package. The command-line information you provide here will either make or break the package when it is run on the client.

To create a program, follow these steps:

  1. Navigate to the Packages folder, find your package entry, and expand it.
  2. Right-click on Programs, choose New from the context menu, and then choose Program to display the Program Properties window, shown in Figure 12-21.
  3. Figure 12-21. The Program Properties window.

  4. On the General tab, enter a descriptive name for the program—for example, Custom Installation or Unattended Installation. Enter additional descriptive information in the Comment text box.
  5. In the Command Line text box, enter the command that should be executed at the client. This could be a Setup.exe file or a batch file; however, you must include any and all command-line arguments required for successful execution. For example, if you run the Setup program, which uses a script file called Custom.inf, and this script file is invoked by the Setup program through a "/c" command-line switch, you must enter the full command as it references the script: setup.exe /c:custom.inf.
  6. In the Start In text box, enter the name and path of the directory in which you want the program to start. This field is optional, and by default the distribution folder on the distribution point is used.
  7. From the Run drop-down list, select an option—Normal, Minimized, Maximized, or Hidden—to specify how the program will be displayed to the user. Hidden does mean that nothing will be displayed; this option is best used with fully unattended, or silent, installations.
  8. From the After Running drop-down list, select an option—No Action Required, SMS Restarts Computer, Program Restarts Computer, or SMS Logs User Off—to specify what action, if any, will be performed after the program completes.
  9. Click on the Requirements tab, shown in Figure 12-22. This tab lets you specify descriptive elements regarding the program's estimated size and installation run time. More importantly, it allows you to identify which operating system platforms the program can run on. This enables you to filter out those clients on whose platform the program can't run.
  10. Figure 12-22. The Requirements tab.

  11. Click on the Environment tab, shown in Figure 12-23. On this tab, user level and drive mode requirements are defined. First specify when the program can run. The drop-down list options are Only When A User Is Logged On, which would apply to all Windows 98 and earlier clients; Whether Or Not A User Is Logged On; and Only When No User Is Logged On. These last two options are specific to Windows NT computers. If either of these options is selected, the User Input Required check box and the Run With User's Rights Run Mode option are automatically disabled.
  12. Figure 12-23. The Environment tab.

  13. If the program requires the user to click even a single OK button, you must select Only When A User Is Logged On from the Program Can Run drop-down list, and then select the User Input Required option. Clear this option only if the program is fully scripted. If the program must be run in the local administrative account, select the Run With Administrative Rights option in the Run Mode section. If you have specified a particular account to use on Windows NT computers when running programs that require administrative privileges, select the Use Windows NT Client Software Installation Account check box.
  14. In the Drive Mode section, select the option that best fits the program. As you have no doubt experienced, while most programs understand UNC paths, some do not and require at least a drive letter mapping. If you need to have the client reconnect to the distribution point each time the user logs on, check the Reconnect To Distribution Point At Logon check box. This option could be useful if the application needs to write information back to the distribution folder on the distribution point, retrieve startup files, and so on. Just remember that 16-bit clients do not support this feature.
  15. Click on the Advanced tab, shown in Figure 12-24, which provides several additional options. If you need to run another program before this one—for example, to install a service pack or a patch, select the Run Another Program First check box and then select the appropriate package and program. This assumes, of course, that you have already created the other package and program. In this example you won't need to advertise the other program separately.
  16. Figure 12-24. The Advanced tab.

  17. Some applications, especially those that register using Add/Remove Programs in Control Panel, write uninstall information to a key in the registry under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall. If this is true of your program, select the Remove Software When It Is No Longer Advertised check box and then enter the name of the key that the program writes in the Uninstall Registry Key text box. The effect of this setting is that when the program is no longer advertised to the client—say, the advertisement was deleted, it expired, or its collection membership no longer includes the client—the application will be uninstalled from the client automatically.
  18. To temporarily disable the program from being run—even if it has been assigned a specific time—select the Disable This Program On Clients Where It Is Advertised check box. This option can be handy if you need to update files, test an installation, and so on.
  19. Click OK to save the program.

If you later decide to delete a program, you would do so by right-clicking on the program in the SMS Administrator Console and choosing Delete from the context menu to activate the Delete Program Wizard. This wizard walks you through the process and helps you decide whether to delete the program. Deleting a program does produce a ripple effect for other SMS components. Any advertisements of the program will also be deleted and will no longer be made available to the client. If you selected the Remove Software When It Is No Longer Advertised option on the Advanced tab, you could end up removing the application from the client computers. The wizard displays all the affected advertisements and prompts you once more to confirm the deletion.

In Chapter 11, we examined the advantages of using collections whose membership rules are query-based when advertising programs. When a new member joins the collection, it automatically receives any advertisements made to that collection. In general, you should leave programs advertised until they are no longer needed or until they should be retired.

Creating a Package from a Definition File

We've seen what's involved in creating a package from the ground up. Now let's see how much simpler the process becomes when you're creating a package from a package definition file.

To create a package from a predefined definition file, follow these steps:

  1. Navigate to the Packages folder, right-click on it, choose New from the context menu, and choose Package From Definition. This will initiate the Create Package From Definition Wizard, shown in Figure 12-25.
  2. click to view at full size.

    Figure 12-25. The Create Package From Definition Wizard welcome screen.

  3. Click Next to display the Package Definition screen, shown in Figure 12-26. Select one of the definitions provided by SMS 2.0 from the Package Definition list, click the Browse button to search for an SMS 2.0 compatible .SMS or .PDF file, or select SMS 1.x PDF from the Publisher drop-down list to browse for or select an earlier version definition file.
  4. click to view at full size.

    Figure 12-26. The Package Definition screen.

  5. Click Next to display the Source Files screen, shown in Figure 12-27. Here you specify how SMS should manage source files.
  6. click to view at full size.

    Figure 12-27. The Source Files screen.

  7. If you select This Package Does Not Contain Any Files and click Next, you will proceed directly to step 5. If you select one of the other options and click Next, the Source Directory screen will appear, as shown in Figure 12-28. In this screen, identify either the network or local drive location of the source files and click Next.
  8. click to view at full size.

    Figure 12-28. The Source Directory screen.

  9. The Completing The Create Package From Definition Wizard screen will appear, as shown in Figure 12-29. Review your choices, and then click Finish.
  10. click to view at full size.

    Figure 12-29. The Completing The Create Package From Definition Wizard screen.

Right-clicking on the package you just created in the SMS Administrator Console will display the Package Properties window. The end result will be the creation of a package with the essential package details filled in and the appropriate programs created with their essential details filled in on the General, Data Source, and Reporting tabs of the Package Properties window. The Data Access and Distribution Settings tabs are left with the default values. Figures 12-30 through 12-37 will give you an idea of the type of information generated by the package definition file provided with SMS 2.0 for distributing Microsoft Windows 2000 Professional. Of course, while SMS 2.0 or any other application developer provides the package definition file itself, you will still need to obtain a copy of the source files for the application.

The General tab of the Package Properties window, shown in Figure 12-30, contains the package detail information.

The settings on the Data Source tab, shown in Figure 12-31, are based on the parameters you defined using the Create Package From Definition Wizard.

Figure 12-30. The General tab of the Package Properties window.

Figure 12-31. The Data Source tab of the Package Properties window.

Package definition files do not always provide status MIF information for the Reporting tab. However, the package definition file for Windows 2000 Professional provided with SMS 2.0 does fill in some information, as shown in Figure 12-32. You need to enter the MIF filename that should be used.

Figure 12-32. The Reporting tab of the Package Properties window.

The package definition file is designed to generate all appropriate programs for the application package. The package definition file for Windows 2000 Professional creates four programs, as shown in Figure 12-33.

click to view at full size.

Figure 12-33. The SMS Administrator Console showing programs generated for Windows 2000 Professional.

Right-clicking on the automated upgrade for the x86 platforms entry will display the General tab of the Automated Upgrade Program Properties window, shown in Figure 12-34, which provides the appropriate command-line executable and switches.

Figure 12-34. The General tab of the Automated Upgrade Program Properties window.

The Requirements tab, shown in Figure 12-35, displays the estimated disk space and estimated run-time settings—all provided by the package definition file.

Figure 12-35. The Requirements tab of the Automated Upgrade Program Properties window.

Because the upgrade to Windows 2000 Professional requires administrative level access at the client, the program definition file specifies that option on the Environment tab, as shown in Figure 12-36.

Figure 12-36. The Environment tab of the Automated Upgrade Program Properties window.

As for the Advanced tab, shown in Figure 12-37, the package definition file doesn't provide any property settings for you. Again, it's up to you to decide whether to run another program first, remove the program when it is no longer available, or temporarily disable the advertisement.

In general, the package definition file will provide package details for the General and Data Source tabs of the Package Properties window, which should make sense. Distribution settings, for example, define how a package is sent from one site to another, and only the SMS administrator for each site can modify those settings. On the other hand, most of the property settings in the Automated Upgrade Program Properties window usually will be provided by the package definition file. The exceptions are the options on the Advanced tab, where you'll need to set the options that apply to your package on your own.

Figure 12-37. The Advanced tab of the Automated Upgrade Program Properties window.

Package Distribution Process Flow

The process behind the creation and distribution of a package, illustrated in Figure 12-38, is fairly straightforward. We begin, as always, with the SMS administrator defining the package, distribution points, and programs. This information is written to the SMS database by the SMS Provider. This action triggers SQL Monitor to write a package notification wake-up file to Distribution Manager's inbox (\SMS\Inboxes\Distmgr.box). The wake-up file takes the form of a site code and package ID as the filename with a .PKN extension. For example, a package notification file for site A01 might be named A0100003.pkn.

The Distribution Manager component wakes up and processes the package based on the package details you provided. Distribution Manager performs the following general tasks:

  • Compresses the source files, if necessary
  • Copies the package source directory to the specified distribution points
  • Creates various instruction files for clients that are copied to the CAPs by Inbox Manager
  • Creates replication files for sending the package to child sites

click to view at full size.

Figure 12-38. The package distribution process flow.

If you specified that a compressed version of the files should be used, Distribution Manager will compress the files and store them either in the location specified when the Software Distribution component was configured (this process is discussed in the next section) or by default in the SMSPKG folder created on the drive on which SMS was installed on the site server, with the same filename and the extension .PKG.

Distribution Manager then copies the source file directory to the SMSPKGx$ folder created on each specified distribution point within the site. If the package files were compressed, Distribution Manager uncompresses them first.

Distribution Manager generates three files and writes them to the SMS\Inboxes\Pkginfo.box folder on the site server. These files (with filenames as described earlier) are:

  • .PKG Package program detail information
  • .NAL Location of distribution points
  • .ICO Icon file information

The Inbox Manager component, as it is wont to do, copies these files to the Pkginfo.box folder on each CAP. These files serve as instruction files for the client after it receives an advertisement. At this point, the process stops unless the package needs to be sent to a child site.

If the package does need to be sent to a child site, Distribution Manager writes a package replication file (.RPT) to Replication Manager's inbox (SMS\Inboxes\Replmgr.box\Outbound). If a compressed copy of the package source directory does not already exist, Distribution Manager also compresses the source directory into a temporary directory on the site server and then moves the file to the SMSPKG folder (on the SMS installation drive on the site server or the drive you specified when configuring the Software Distribution component).

Now Replication Manager takes over and begins the sending process. This process is discussed in detail in Chapter 4, so we'll look at only the highlights here. Replication Manager creates a minijob for the Scheduler and places it in the Scheduler's inbox (SMS\Inboxes\Schedule.box). The Scheduler creates the package and instruction files needed for sending the data in question, as well as a send request file for the sender. The package and instruction files are placed in the SMS\Inboxes\Schedule.box\Tosend directory. The send request file is written to the preferred sender's outbox (SMS\Inboxes\Schedule.box\Outboxes\sender, where sender is the sender folder, such as LAN, RASAsynch, RASISDN, and so on). Recall that both the sending priority and the preferred sender are identified in the Package Properties window.

When the send request file is written, the sender wakes up and reads the file. It also examines whether the address properties have placed any restrictions on when requests of this priority can be sent and whether there are any bandwidth limits. It then changes the extension of the send request file to .SRS and writes status information to it.

The sender connects to the target site's SMS_SITE share—the SMS\Inboxes\Despoolr.box\Receive directory—where the Despooler component on the target site will complete processing of the information at the target site. When the data has been completely transferred, the send request file is updated to a status of "completed," and the file is then deleted. Distribution Manager on the target site will carry out any necessary tasks. For example, if you identified distribution points at the target site, the Despooler will decompress the package and pass it to Distribution Manager, which will process the package for those distribution points.



Microsoft Systems Management Server 2.0 Administrator's Companion
Microsoft Systems Management Server 2.0 Administrators Companion (IT-Administrators Companion)
ISBN: 0735608342
EAN: 2147483647
Year: 1999
Pages: 167

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net