Software Distribution Best Practices

Applying some best practices to your software distribution procedures will help to ensure success and efficiency. Consider consistently using the following practices:

  • Thoroughly test software distributions.

  • Distribute software in phases.

  • Decrease collection evaluation frequency.

  • Distinguish between package distribution and advertisement distribution.

  • Make advertisements user-initiated before they are assigned.

  • Make advertised programs not require input from users.

Test software distributions

Installing software causes a large number of changes on a computer. Testing packages that you are about to distribute will minimize the risk of problems.

Test your packages on computers that are representative of the computers that will be targeted by your software distributions. In most organizations, computers will vary by computer model, operating system, installed applications, and configuration. Where possible, your tests should include at least one computer that has each combination that will be found on computers targeted by your software distribution.

Ensure that your tests simulate the user experience as closely as possible. Use non-privileged accounts if your users do not have privileges.

Problems caused by a software installation might not be immediately apparent. Verify all aspects of the functionality of tested computers, and allow time for problems to be found.

Testing should begin on computers in a test lab, but later testing should include user computers, or clones of user computers, so that the testing is realistic.

Distribute software in phases

After thorough testing in a lab and on some user computers, there can still be a risk that the software being deployed will cause problems on some computers. Deploy the software in phases, with each phase being larger than the previous phase as your confidence in the package increases. For example, you could deploy to 10 computers on the first day, 100 computers on the next day, 1000 computers on the third, 5000 computers on the fourth, and so on. The initial phases should be a good cross-section of typical computers in your organization, but they should also be to sites where technical specialists are available to help if any problems are found with your package.

Decrease collection evaluation frequency

SMS collections are re-evaluated every 24 hours by default. Frequent updates can be useful for software distribution, because newly discovered computers will quickly receive relevant advertisements. However, in large organizations with many computers and collections, frequent collection evaluation can create considerable workload for the SMS servers. To avoid this, consider decreasing the collection evaluation frequency on some collections.

Distinguish between package distribution and advertisement distribution

In small environments, it is easiest to think of SMS software distribution as one complete process. However, for larger environments, and to minimize the potential for problems, it is best to separate SMS software distribution into at least two processes: package distribution and advertisement distribution.

When you create a package, decide which distribution points the package should be available on, and then add those distribution points to the package. Use the Package Status node under the System Status node in the SMS Administrator console to ensure that the package is successfully distributed to all target distribution points.

After the package is distributed, you can then start the advertisement process, confident that the package will be available wherever it is needed.

Make advertisements user-initiated before they are assigned

Assigned advertisements will be run on all available computers as soon as the assignment becomes due. Advertisements that must be initiated by users (from Add or Remove Programs or other client software distribution programs) will be run when the users run them. User-initiated advertisements will have their workload spread over a longer period of time, minimizing the load on the network and servers at any given time. Also, if there is a problem with a package, you can disable the program as soon as the first users report the problem, preventing other users from being affected by the problem.

Create advertised programs that do not require input from users

If your advertised programs require input from your users, there is a risk that the users might enter the input incorrectly. Another issue is if they provide valid input, but they do it in an inconsistent manner, future troubleshooting or advertised programs might be problematic because of the inconsistencies. To avoid this, ensure that your advertised programs do not require input from users. For more information, see the "Create a Setup Script" section earlier in this chapter.

Collection, package, and advertisement naming

SMS can work properly with collections, packages, or advertisements that have duplicate names. Collections, packages, and advertisements can be created with duplicate names using scripts or tools. When importing collection definitions, the SMS Administrator console does not verify that the collection names are unique. The SMS Administrator console also does not force package and advertisement names to be unique when an SMS administrator creates them. And collections defined at a parent site can have the same name as an already existing collection when they are propagated down to child sites.

However, collections, packages, or advertisements with duplicate names can be confusing to you and other SMS administrators. It can be difficult to find and maintain the correct object, or check its status, if you cannot uniquely identify the object by name. You should ensure that all collections, packages, and advertisements have unique names. If necessary, you could establish a naming convention that includes the site code or creation date to ensure uniqueness.

A naming convention for collections, packages, and advertisements can also make it easier to find the objects if you have many of them. If you have objects that serve similar purposes, you could start their names with a predefined character string that ensures they are listed together when displayed in sorted lists.

For More Information

Did you find this information useful? Please send your suggestions and comments about the documentation to smsdocs@microsoft.com.