Dependent Packages let you specify an association between Packages. Dependent package processing is supported for XPF packages only and is streamed from the same server as the package that defines dependency. On streaming a package, all its dependencies will initially be processed and the base package will finally be streamed to the client.
For example, let's say Oracle client dependents on JRE 1.6, we then configure Oracle layer as the base package and JRE as its dependent package. When Oracle client layer is streamed, the JRE layer streaming is auto initiated and then Oracle client layer is streamed.
Workspace Streaming lets you stream applications along with all its dependent or pre-requisite applications that are required by it. When a user streams an application, any dependent application that is not present in the endpoint will also be streamed automatically. Dependency processing can be altered to either install an application or remove an application from the endpoint, based on the requirement. Dependent packages are typically streamed from the same server as the application that defines the dependency.
Dependent packages will be activated automatically when the base package that contains the dependency is activated. But when the base package is deactivated, its dependent packages will not be deactivated. A base package has visibility into the packages it depends on but dependent packages don't have any visibility into the base package.
Here are the different types of dependencies that are processed:
- Single Dependency: Pkg A → Pkg B [Package-A depends on Package-B]
- Multiple Dependency: Pkg A → Pkg B and Pkg A → Pkg C [Package-A depends on Package-B & Package-C]
- Chain of Dependencies: Pkg A →Pkg B → Pkg C [Package-A depends on package-B, which in turn depends on package-C]
- Cyclic Dependency: Pkg A → Pkg B → Pkg A [Package-A depends on package-B, which depends on package-A]
Package dependency is defined at packaging time and processed on the end point based on the configuration key 'PROCESS_PACKAGE_DEPENDENCIES' in streaming agent config file, namely, "appstreamcfg.txt". If this parameter is marked 'false', package dependency will NOT be processed. [Note: At the time of this article, dependency processing is done ONLY at initial stream time].
All dependent packages should be explicitly provisioned to a user for all dependent packages to be streamed. While streaming a package to the client, if the package has dependency defined, the main package streaming is suspended, its dependencies are processed and finally the base package streaming is resumed. If two packages are marked dependent on each other, Streaming Agent resolves cyclic dependencies correctly and streams both applications.
[Note: Although simultaneous package streaming is possible, dependent packages are processed sequentially].
Configuring Package dependencies
While packaging an application you can indicate other packages that this application requires. Dependencies are set directly on the virtual software layer using SWV Admin. [Note: At the time of publishing this article, configurations for dependent packages are done ONLY in the Virtual Composer / SWV Admin, there are no settings on the Streaming Console.]
Steps to configure a package as dependent to another package:
The Advanced Package Editor allows you to manually edit a package and its settings as follows:
- Open the SWV admin and import all the dependent packages
- In the Virtual Composer Home screen, Click 'Edit Package' button
- Browse to the Base package file's location, select it and click Open
- The Base package will be imported as a layer
- Open the SWV admin tool, select the base package and click <alt + enter> hot keys
- The base package's Properties window will be displayed
- In the Properties window select 'Dependent Layers' tab, right click on it and select the 'New dependent layer' option
- A new window titled - 'Add Dependent Layer' will be opened, displaying all available layers.
- Select all the intended dependent layers and click the return key.
- Now in the Virtual composer select, File > Compile.
All the changes you have made to the layer using the SWV Admin tool will be compiled and saved.
- Now the Base package and its dependencies are configured successfully.
- The following screenshot shows the properties window of the base package "Toad".
- Right clicking In the properties window, will open the 'Add Dependency Layer' window, which will list all available layers.
Editing dependency configuration
Different dependency Parameters:
- Install - MUST install the dependent package.
- Remove - MUST remove the dependent package. If streamed to the endpoint, remove from cache.
- Install-ignore - Install if available and possible (i.e. provisioned, allowed on current OS, etc.). Install can be ignored if conditions are not met and proceed further. For instance, if the package is available on the server & provisioned to the user, dependent package will be installed, else, installation will be ignored and will proceed to process the next dependency defined.
- Remove-ignore - Remove if possible. While removing a dependent package, if there is a failure package removal will be ignored and will proceed to process the next dependency defined.
Steps to edit dependency configuration:
- Open the Base Package XPF file (<Package_name>.xpf), through Winzip /Winrar application.
- Edit the file named - '_Package.xml '.
- In this '_Package.xml ' file, under 'dependencies' tag, all dependencies will be listed.
- All dependent packages will have the action item as 'install' by default.
- Edit it to suit the requirement -
Install / Remove / Install-ignore / Remove-ignore.
- Dependency will be processed in the same order, as specified under 'dependencies' tag. This order can be rearranged to alter the processing order.
- Save these changes to the '_Package.xml' file. (Add the edited file back to the zip file)
Following is a sample of the dependencies tag in the '_Package.xml' file :
<Dependencies> <Dependency id="f03ad0f6-5d4d-49c1-85ac-d3d6c41eb8a8" version="0" action="install" /> </Dependencies>
Dependency id - is the Package GUID
Version - Package version [zero (recommended) indicates, that the server will decide the version to be processed]
Action - Install / Remove / Install-ignore / Remove-ignore
Uploading & streaming dependent applications
- Step 1: Upload the base & all its dependent packages to Server.
- Step 2: Provision the base & all its dependent packages to User / User Group
- Step 3: In the client machine, check if the following parameter is true in 'appstreamcfg.txt' file:
' PROCESS_PACKAGE_DEPENDENCIES=true '
(Note: If this parameter is marked 'false', package dependency will not be processed)
The Appstreamcfg.txt file will be in the following location:
- Step 4: Connect to the Streaming portal and stream the base package.
- Step 5: Now, all dependencies will be processed initially and then the base package will be streamed to the client.