SVS Best Practices: Layer Creation and Packaging
This best practices guide is a consolidation of the experience of the Altiris SVS development, consulting, and support teams. This document is a combination of a number of very good articles that are available here on the Juice. This guide is targeted specifically at the layer creation and packaging process.
- Single Program Capture vs. Global Capture
- Simple Applications
- Easy Applications
- Windows InStaller (MSI) Applications
- Applications That Install Drivers
- Applications That Have Dependencies
- Applications That Require a Reboot
It should be noted that this document covers the creation of the layer on a single machine, called the Packaging Machine, and the export of that layer to a Virtual Software Archive (VSA) file. This process will be called the Packaging Process.
Steps in the Packaging Process
There are three distinct steps in the packaging process:
- Packaging Machine Setup
- Application Discovery
- VSA Package Creation
Packaging Machine Setup
The machine that will be used to create the original SVS layer is called the Packaging Machine. The packaging machine should be as "clean" as possible. A clean machine is considered to be a PC with the Windows Operating System and latest Service Packs for that Operating System.
It is important to have as little other software on the Packaging machine as possible. The reason behind this is not an SVS issue but an application installation issue. The SVS Admin Capture tool and the Wise Package Studio Setup Capture tool monitor the installation process. What the tools are unable to monitor is the logic in the vendor installation. A vendor may check to see if a file is previously installed on a machine and if so not lay it down again. If this were the case, when the SVS layer is exported and that file were not on a destination machine the application may fail.
When creating SVS layers use a machine with only the operating system and service packs available.
If you are certain that the application is very simple and there is no chance of the install not add the correct files and registry entries to the layer, you can create the layer on any machine. Another exception would be the capture of an application which depends on another application, like Microsoft Office. In this case, it is ok to preload Microsoft Office prior to the capture.
Layer Creation Tool
Users that have licensed Wise Package Studio Professional have the choice of using the Setup Capture tool. The Setup Capture tool uses the same capture engine as the SVS Admin tool. The Setup Capture tool adds functionality through the use of the exclusion list. The exclusion list removes files and registry entries from the VSA package that are known to be Windows "noise."
Additionally, the Setup Capture removes all user specific (SID) information from the VSA package. The SVS Admin tool will store the SID information of the user that created the layer in the VSA package. This will not effect any other users of the layer since the SID is user / machine/ / domain specific and will not occur on any other machine than the capture machine.
The Wise tool will also autocreate extension based exclusions by examining the HKCR registry keys the captured installation creates. Registered file extensions will have their exclusions generated automatically, using a similar process to the Juice tool "ExcludeGen" http://www.symantec.com/connect/download/162/exclu...
SVS Admin and Wise Package Studio Setup Capture use the same capture engine: either tool will be acceptable for VSA creation. If the VSA will be distributed throughout the enterprise, it is recommended that Wise Package Studio be used to create the VSA packages to avoid sending any user specific data to client desktops.
Operating System Selection
SVS has been developed to ensure all SVS layers are as portable as possible between different operating systems. All system and user locations are variablized which allow them to be resolved on the target machine, so in almost all cases it is possible to use Windows 2000 or higher to create layers. When capturing SVS layers on the Windows Vista operating system, you should disable UAC (User Account Control) during the layer creation stage. SVS does not have a requirement that UAC be disabled for the actual use of SVS layers.
One point of consideration as mentioned earlier is that neither SVS nor Wise Package Studio monitor the logic of the installation. It is possible for the installation author to add logic to only install files or registry keys on certain operating systems. If you are experiencing problems with an application created on a different operating system, you should try recreating the layer on the target operating system.
Create layers on the operating system that the application will be targeted for. If creating a layer for each operating system, it is also recommended that you use SVS Pro. SVS Pro provisions the appropriate version of the application based on the operating system the user is currently logged in to.
If you are creating layers that will be used on multiple operating systems, it is a best practice to create the layer on the oldest operating system and use that layer on the new operating systems.
SVS layers are portable between operating systems. If you are certain that the application does not install operating system specifics you can create the layer on any OS (Windows 2000 or higher) and it will be portable to any other operating system (Windows 2000 or higher). If creating packages for a number of operating systems, create the layer on the oldest operating system and use that layer on the new operating systems.
Before creating the layer you need to make sure you know the installation process. This information will be used to make decisions about the proper capture method. During the discovery process make sure to get the following information:
- The application components required
- Whether or not the application will require a reboot
- Post installation configuration actions
VSA Package Creation
Single Program Capture Vs. Gobal Capture
Both SVS Admin and Wise Package Studio provide the option of capturing an application using a Single Program Capture mode, or a Global Capture mode. Single Capture mode monitors just the application that has been specified for creation. Global Capture mode monitors all changes made to the file system and registry.
While SVS will usually be able to correctly handle extraneous data captured into a layer, it is important to keep layers as clean as possible, which is accomplished using Single Program Capture.
At this point in time there are very few applications that require the use of Global Capture. An example of an application that does require Global Capture is Adobe Acrobat. The Adobe Acrobat installation calls the Windows Spooling system to install the Adobe PDF Writer virtual printer. This process falls outside the process being watched by the Single Program capture. This is an instance where you must use Global Capture.
The Best Practice is to use Single Program Capture. If for some reason you need to use Global Capture it is important to edit your layer to remove extraneous data.
What defines an easy application is an application that installs a self contained application, that does not require a reboot, that does not serve as a runtime for other application (i.e. Java), and does not install drivers or fonts. Examples of this type of application are Winzip and WinRAR.
Wise Package Studio
If you have access to Wise Package Studio, run a Setup Capture job. Specify the output file as a WVP (Wise Virtual Package). Use Single Program capture to create the layer. Compile the package to a VSA using the Virtual Package Editor and the layer is ready for deployment.
SVS Admin Tool
To create an layer with the SVS Admin tool, select Create Layer, use Single Program Capture, and run the setup program. To avoid concerns about distributing an application with user SID information as part of the VSA, users should deactivate the layer and open the Edit Advanced Layer Properties tool. Remove any SID information from the Writeable layer, export the layer to a VSA and the layer is ready for deployment.
Easy applications are applications that meet all of the criteria of Simple Applications, but require post installation configuration. Other examples, that fall into this category are situations where you may want to install two applications into a single layer. Please note that neither application can require a reboot. Examples of post installation configuration include the need to set the default homepage after installing Firefox, a requirement to accept the EULA after installing Adobe Reader, a specification to stop Quicktime from checking for updates on the Internet, or if there is an application patch released that you would like to add to the layer prior to distribution.
Wise Package Studio
Wise Package Studio does not currently support the capture of more that one application during the Setup Capture process. This limitation will be addressed in Wise Package Studio Service Pack 3, which is scheduled to be released in February 2008. If you need to have multiple setup programs for the creation of a single layer, you will need to either repackage the different setup programs into a single MSI and create the layer using that MSI, or user the SVS Admin tool. (Why can't you use WPS to capture CMD.EXE as well?)
SVS Admin Tool
For Easy Application, you chose the Create New Layer option in the SVS Admin tool. Use the Install Application Option, provide the layer name. Select Single Program capture, but rather than capture the actual application, select C:\WINDOWS\SYSTEM32\CMD.EXE. When the command window opens up execute the installation. If you want to perform post installation configuration use the command prompt to execute the application and perform the post configuration steps. If you need to run an additional installation, execute that installation from the command prompt. This can be done as many times as necessary to complete the installation and configuration. Once all steps have been performed simply type exit at the command prompt and the capture will end.
Windows Installer (MSI) Applications
Converting Windows Installer packages is as straight forward as any other application. The only difference is that the application that you specify for capture is MSIEXEC.EXE. You then place the remainder of the Windows installer command line options as part of the command line parameters for MSIEXEC.EXE.
Wise Package Studio
In Wise Package Studio you can actually browse directly to the Windows Installer (MSI) package. The Setup Capture tool will replace the MSI with MSIEXEC and move the path to the MSI to the Command Line section. If you need to add additional switches do so in the command line text box. An example of a command line text box would be:
/i "C:\Wise Share Point\Projects\Repackage Adobe Acrobat into MSI\Adobe505.msi" TRANSFORMS="C:\Wise Share Point\Projects\Repackage Adobe Acrobat into MSI\Adobe505.mst" DISABLEADVTSHORTCUTS=1
SVS Admin Tool
Using the SVS Admin tool, use <Path to Windows\System32 folder>\MSIEXEC.EXE as the Program Name. You will then add the appropriate Windows Installer command line switches to the Parameters input text box. The example above is what would be placed in the parameters section for the same package.
Applications That Install Drivers
The SVS layer creation process can usually detect and correctly capture user level device drivers. SVS cannot be used for kernel level drivers at this time. There are times when an installer calls a process that the SVS layer creation tool is unable to detect. An example of this is the Adobe Acrobat product. If you attempt to user Single Program Capture and the devices are not available when the VSA imported to a different machine you will be required to use Global Capture.
Always attempt to capture the layer using the Single Program Capture. Make sure to set the layer to Start Automatically. Import the VSA to a machine that has not previously installed the application before and reboot the machine. This will ensure that the device is properly loaded at boot time. If the device is not present attempt to recreate the layer using a Global Capture and repeat the steps above.
Applications That Have Dependencies
A common example of an application that has dependencies would be any application that requires the Java Runtime to be installed for the application to work. There is an excellent article on the Juice http://www.symantec.com/connect/article/1710 that deals with Java specifically, but the concepts can be extended to most applications that have dependencies.
The key concepts revolve around how the applications interact with the dependency, whether or not there are multiple instances of the dependency on the same machine, and whether or not it is beneficial from a deployment standpoint to have the applications and dependencies in the same package or in different packages.
Best Practice 1
The simplest way to package applications with dependencies is to include all dependencies and applications in a single layer. This will insure that the application will use the correct dependencies. To package the application, you would use the process for the Easy Application to create the layer.
While it is easy to create SVS packages that contain the application and dependencies, this packaging format is the most difficult to maintain on an on-going basis. If there is a need to modify (patch or upgrade) any portion of the package, the entire package would have to be recreated. You would need to create the entire package with all of the dependencies, including all of those that are not being upgraded.
Best Practice 2
Another option for applications that have dependencies is to put the application and dependencies in their own layers. SVS has the technical advantage of being able to utilize layers as if they were part of the base OS. To create the packages for these types of applications, you will need to create the dependency layers on the clean machine prior to creating the layer for the application. When you create the layer for the application, you will need to install the dependencies into the base OS and then create layer for the application. Neither SVS Admin nor Wise Package Studio currently supports the creation of layers while other layers are active.
If you will not be using multiple versions of one of the layers, there is really no trade-off to this approach. It makes the ongoing maintenance of the application easier. If any one of the layers has an update or a patch, only that layer needs to be repackaged and deployed. The packaging practices for this type of application will use either the simple or easy packaging process. If there will be multiple version of the dependency on the machine, please consult the Altiris Juice article http://www.symantec.com/connect/node/94 which discusses how to correctly set layer priorities.
Applications That Require A Reboot
Currently neither the SVS Admin tool nor Wise Package Studio allow for an SVS layer to be updated after a reboot. This does not mean that applications that require a reboot cannot be converted to SVS VSA packages. This topic was originally covered in the Altiris Juice article http://www.symantec.com/connect/tech-tip/115.
It is important to note the reasons that application installations require reboots. There are three primary reasons that applications require reboots.
- The installation is attempting to overwrite an in use file.
- The installation has installed a service or driver that will be started when the machine is rebooted.
- The application has added information to the registry that will fire off a post installation configuration process.
Due to the redirection of the files by the SVS filter driver, there is no chance that an installation would ever attempt to overwrite an in-use file, so that installation would never require a reboot.
Installation will often require a reboot to insure that any new drivers or services that it added are recognized by the system. During the layer creation process drivers and services will be captured into the SVS layer. SVS attempts to start all services and drivers upon machine startup if the layer has been set to Start Layer Automatically. These applications will have their drivers and services started correctly and will not need any special consideration during the layer creation and packaging process. (SVS spins up services, ect. during activation even if the layer is not set to start automatically.)
The one area where special consideration need to be taken into account when creating SVS VSA packages are application that create registry entries or Startup Menu options that perform post installation configuration steps. Search the following areas of the layer for any information that was added by the installation:
- %SystemDrive%\Documents and Settings\USERPROFILE\Start Menu\Programs\Startup
- %SystemDrive%\Documents and Settings\ALL USERS\Start Menu\Programs\Startup
If there are entries in these locations make note of what they command are. You should now be able to use the process for an Easy package. Run the original installation from the command line, and then run any commands that were located in the locations above.
Identify any post configuration commands in the locations identified above, and then use the Easy process identified above and run the commands from the command line prior to ending the capture.
SVS Pro Shortcut Considerations
When creating VSA Packages that will be used with the SVS Pro streaming technology, it is important to make sure that the application shortcuts are not Windows Installer (MSI) advertised shortcuts. If you are creating a VSA package from a Windows Installer installation (MSI) use the following syntax. Please note that additional command line parameters may be required based on the specific package.
- MSIEXEC.EXE /I <path to MSI package> DISABLEADVTSHORTCUTS=1
SVS Pro Path Length Considerations
The SVS Pro technology uses a hidden folder to store applications that have been streamed to the desktop. This hidden folder adds to the entire path length for the application. All Windows operating systems have a path length limitation of 256 characters. If you have an application that has extremely long paths to files, you should consider using a Windows Installer Transform to remove as much of the beginning of the path as possible.
It is possible to shorten the directory name of the path where streamed applications are stored. This setting is located in the setupCfg.txt file. The entry is the Cache entry and it is usually a good idea to accept the predefined C:\AC folder in the CACHE= line. You must remove the semicolon at the beginning of the line for the change to be applied.