Note: The following information is provided as a reference. Due to the constant improvements in our products, some of the details shown below may change without notice.
The following article is divided into different topics. Some will describe behavior and some will provide Q&A regarding the process used.
Table of Content:
1.0 - Package Server and IIS
2.0 - Package Delivery
2.1 - Updated Packages
2.2 - Invalid Packages
2.3 - Deletion of Unused Packages
2.4 - Disk Space Check
2.5 - Drive Overflow
2.6 - Packages stored in non-default locations
2.7 - Package Access
3.0 - Package Server related SQL database tables
4.0 - Events sent by Package Server
5.0 - Package Server Registry Keys
5.1 - Package Servers download only from NS only
5.2 - NoPACLockdown
5.3 - EnableDACLManagement
6.0 - Package Server and IIS 7
7.0 - Package Server Settings
8.0 - Package Snapshot Generation
9.0 - Package Share Creation
10.0 - Primary File Storage Location
11.0 - Automatic Package Server Assignment
12.0 - Questions and Answers
13.0 - Useful References
1.0 - Package Server and IIS
The package snapshot is an XML Manifest listing the files located in the package location along with their properties
per each package 1 snapshot XML is generated with the name <package_guid>.xml
Snapshot XMLs are stored in the C:\ProgramData\Symantec\SMP\Snapshots
Each snapshot XML change results in updating of package version which is stored in the SWDPackage.[Package Version] column
Each snapshot XML change leads to regeneration of the snapshot XML SIGNATURE. NS signs snapshot, but the signature itself is stored in a separate file <package_guid>.sig under C:\ProgramData\Symantec\SMP\Snapshots.
The signature file is returned as a string by the GetPackageSnapshot.aspx response for Package integrity check purposes on the agent side.
9.0 - Package Shares Creation
Package shares need to be created at NS for
NS wants to keep as many shares as possible, that's why it creates both IIS and UNC shares. The shares are only created for the following package types: local, UNC and URL. The shares are then transformed to codebases. "Codebase" is the URI that is the de-facto access point being used for downloading the package contents. The difference between "share" and "codebase" will become obvious below. The codebases are persisted to the SWDPackageCodebase table.
Shares of Local Packages
IIS Legacy package shares
In the releases, before 7,1 SP2 each package had a separate virtual directory located under /Altiris.PackageShare and name equal to the package guid and pointing to the package location.
IIS Package Group shares (pkggroup)
To minimize the number of virtual directories created at IIS it was decided to create virtual directories pointing to the PARENT directory of the package location, ie If the package location of a package is
C:\xxx\parent\A
then Virtual Directory (VD) is created pointing at C:\xxx\parent. When the 2nd package is created with a location at
C:\xxx\parent\B
a separate VD is NOT created, because another one pointing to C:\xxx\parent already exists. The common virtual directory name is constructed as pkggroup_<md5> where <md5> is the md5 hash of the PARENT FOLDER of the package location. The generated codebases though have the correct paths like http://NS/Altiris/PackageShare/pkggroup_<md5>/A orhttp://NS/Altiris/PackageShare/pkggroup_<md5>/B leading to C:\xxx\parent\A and C:\xxx\parent\B correspondingly.
Restrictions: the group shares cannot be created if the package location resides in ANY of the "special OS folder". The list of the restricted folders are the following:
/// Desktop
/// Internet Explorer (icon on desktop)
/// Start Menu\Programs
/// My Computer\Control Panel
/// My Computer\Printers
/// My Documents
/// %user name%\Favorites
/// Start Menu\Programs\Startup
/// %user name%\Recent
/// %user name%\SendTo
/// %desktop%\Recycle Bin
/// %user name%\Start Menu
/// MYDOCUMENTS
/// "My Music" folder
/// "My Videos" folder
/// %user name%\Desktop
/// My Computer
/// Network Neighborhood (My Network Places)
/// %user name%\nethood
/// windows\fonts
/// All Users\Start Menu
/// All Users\Start Menu\Programs
/// All Users\Startup
/// All Users\Desktop
/// %user name%\Application Data
/// %user name%\PrintHood
/// %user name%\Local Settings\Applicaiton Data (non roaming)
/// non localized startup
/// non localized common startup
/// All Users\Application Data
/// C:\Program Files
/// C:\Program Files\My Pictures
/// USERPROFILE
/// x86 system directory on RISC
/// x86 C:\Program Files on RISC
/// C:\Program Files\Common
/// x86 Program Files\Common on RISC
/// All Users\Templates
/// All Users\Documents
/// All Users\Start Menu\Programs\Administrative Tools
/// %user name%\Start Menu\Programs\Administrative Tools
/// Network and Dial-up Connections
/// All Users\My Music
/// All Users\My Pictures
/// All Users\My Video
/// Localized Resource Direcotry
/// Links to All Users OEM specific apps
/// USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
/// Computers Near Me (computered from Workgroup membership)
Shares of UNC Packages
Shares of URL Packages
Shares Deletion
Package Refresh Task- this is an SMP scheduled task running once a day by default and doing package refresh for EACH PACKAGE IN THE SYSTEM. The obvious drawbacks of such an approach are
10.0 - Primary File Storage Location
On the Notification Server Package Service Settings page it is possible (starting 8.0) to change the primary file storage location for the Package Server. Since this settings policy can be specified for a single Package Server, this feature gives the flexibility to manage different file storages on different Package Servers. Just keep in mind that this is an expensive operation and is not intended to be used daily. It is rather for the initial infrastructure setup.
Please refer to KB INFO3595 “Configuring Primary File Storage Location for Package Servers Post-ITMS 8.0"
Automatic package server assignment aims to assign packages to sites as required in order to distribute the package to all parties which are assigned the package to download. It also adds support to have these assignments removed automatically after they have not been used for a specified number of days.
Please refer to KB INFO3595 "Automatic Package Server Assignment"
Question 1: How to know which package relates to which Virtual Directory inside IIS?
Answer: Once the package has been delivered to your Package Server, double-click on it within the Package Server UI to see more details.
The 'PackageID' field will contain the unique GUID for the Package.
This corresponds to the virtual directory which is named with the same GUID.
i.e. Default Web Site\Altiris\PS{GUID.EN_US}
Question 2. How to check the Package codebases that the Package Server is sending up to the NS?
Answer:
1. Add a path value to the following registry key 'Capture Events Folder' - location HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Transport
Any path can be added i.e. C:\CopyEvents It will create the folder if it does not exist. The purpose being that any events sent by the Agent or PS will be copied to the specified folder as well as sent to the NS, such that the user can view the contents of the event.
2. Reset the Agent Service and then Go to the Package Server UI and click the 'Resend Package Status' button
3. Check the CopyEvents folder and open the new event within
4. Check the codebase links (both package and snapshot). There will be a UNC codebase link and an HTTP(S) codebase link for each package that the PS is hosting.
Note: Keep in mind that the codebase types specified within the Package Service Settings page on the NS will control whether UNC and HTTP, HTTPS codebases are published or not.
- By default publishing, UNC and HTTP are turned on.
Example HTTP Codebase (Non-default port) -
<Codebase href="http://PSName:8080/Altiris/PS/{GUID.EN_US} |
"snapshot="http://PSName:8080/Altiris/PS/getpackagesnapshot.asp"/> |
Example HTTPS Codebase SSL defined -
<Codebase href=" |
Example UNC codebase -
<Codebase href="file://PSName/PkgSvrHostC$/{GUID.EN_US}/cache |
snapshot="file://PSName/PkgSvrHostC$/{GUID.EN_US}/snapshot.xml"/> |
Question 3. How to check the security type ( anonymous or windows authenticated) that is placed on package virtual directories?
Answer.
Within II6 -
1. Select the GUID virtual directory representing the package
2. Right-click Properties > directory security tab
3. Click on the 'Edit' button for the 'Authentication and Access Control' option.
4. Depending on what has been set for the PS Security settings on the NS
- If 'Allow Anonymous access to package codebases' is enabled on the NS, the following should be tick selected - "Enable Anonymous access" and 'Windows authenticated' should be ticked.
- If 'Allow Anonymous access to package codebases' is disabled - the 'Enable Anonymous access' tick box should be unticked and "Integrated Windows Authentication" should be ticked selected.
Within IIS 7-
1. Select the GUID virtual directory representing the package
2. On the right pane select 'Authentication'
- The same applies as per the above IIS 6 descriptions of the anonymous and window authentication settings.
- The UI in IIS 7 will either be state enabled or disabled for the below types.
* Anonymous Authentication
* Windows Authentication
Answer.
LocalLocal (to the Notification Server). The package contents are located in a directory on the FIXED disk drive at the NS host, NOT on a network mapped drive.
UNC
UNC location. Any valid UNC location - either on NS or any other machine - is accepted.
URL
The Package.Location property of a package item will hold a valid IIS URL. In 7.0 SMP release, this type is rather useless because the virtual directory path anyway points either to
the Local path at NS
Some UNC path
The virtual directory PHYSICAL location must be then stored in the PackageItem.PackageDirectory property for Url-type packages. As one can see the URL package type can easily be replaced by either Local or UNC package.
Empty
A package with no files. Not sure who this type may be important for. PackageItem.Location property can be empty
External
All the previously mentioned package types are "managed" and "maintained" at NS. Namely, they are created at NS and their contents are "monitored" by NS. The external package type is created and managed at the Package Server.
Answer.
The process of "revising" (snapshotting) the package contents is called "Package Refresh" or "Distribution Points Update". This process does the following basic things:Updates Package assignment to Package servers (Automatic Assignment case)
Creates UNC and IIS shares at NS as access points to the package folder for the agents
Creates "Package Snapshot" - the manifest listing
Package Distribution Points Update (DPU) is a MUST HAVE process after the package "owner" party (solution, customer, etc) changes the package folder contents. Otherwise, the package most probably stops being distributable to the agents
Answer.
We are currently unable to use the UNC location for the Package Server repository due to the Package Server using the System account for creating folders and the rest of the items needed on the Package Server. The system account does not have privileges to use UNC network locations, so currently, UNC locations cannot be used for file repositories.
Answer.
You should see something like the following in the Client Config policy:
<PackageServer pkgSvrDwonloadFromNSOnly="0" pkgSvrCleanup="10080" publishUNC="true" publishHTTP="true" publishHTTPS="false" allowAnonAccess="true" createACC="false" reenableACC="false" createACCOnDC="false" accExpiryWarning="30" allowAllFixedDrives="true" excludeSystemDrive="true"/>
Answer.
Our Package Delivery uses hashes of files (and blocks now). The hashes cover more security needs for us, including detection of corruptions while the transfer, which is CRC checks usually used for.
In other words, we use better than the CRC method - SHA256 hashes.
The package Server does not check hashes before pushing since that’s IIS who “pushes” the files. But the Package Server does periodic hash checks when it validates the packages.
Answer.
The PS does not create UNC shares for packages with the custom location specified or locally managed packages (external). The reason was not to change or share any location on the machine just because someone specified it on the SMP since it could have been some system folder or user-specific folder and sharing it or restricting access to it could break the system or lead to a security breach.
Nevertheless, to mitigate that restriction we have implemented the possibility to change the whole Working folder for Package Server so that all the packages could be stored separately from the Core agent and PS will treat this location as a default. In that case no need to change every package separately. Detailed instructions are here:
INFO3595 "Configuring Primary File Storage Location for Package Servers Post-ITMS 8.0"
http://www.symantec.com/connect/articles/how-store-package-server-repository-aside-sma-smp-80
One more thing to note, if such (custom location) packages have already a UNC path inside, then this path is provided as a codebase.
Means:
Our Package Delivery uses hashes of files (and blocks now). The hashes cover more security needs for us, including detection of corruptions while the transfer, which is CRC checks usually used for.
General Troubleshooting:
Problem 1: Altiris Agent is unable to download package snapshots from a Package Server via HTTP that has IIS 7.
Error in Agent log: AeXPackageDelivery.dll Download Snapshot failed: Invalid XML returned by the server (-2147467259) AeXNSAgent.exe
Cause: ASP (Active Server Pages) have not been enabled inside the IIS 7 web services role on the Package Server
Solution: Edit the web services role on the package server and install ASP
13.0 - Useful References
The following KBs are provided as a reference and many of them were originally written for NS 6.0 SP3 release. However, in most cases, the information provided is still relevant for SMP 7.5 and 7.6, and even 8.0 and later.
HOWTO1108 "Resynchronizing package servers with invalid or stale codebases?"
HOWTO6907 "How to configure constrained and unconstrained Package Server in a site hierarchy"
HOWTO4351 "How to install a Package Server"
HOWTO1343 "What process does the Altiris Agent use to download a package?"
HOWTO77271 "Symantec Management Agent (Altiris Agent) Download Logic"
HOWTO2913 "How can I control what packages codebases (HTTP/UNC) are published to the clients from the Notification Server?"
HOWTO3978 "How does site maintenance affect the Altiris Agent?"
HOWTO4651 "Description of MaxAgentDownloadTryingTimeMins, and PkgDownloadFromNS Package Download Settings"
HOWTO4796 "NS Agent - nominated Package Server maximum download retry time"
HOWTO2963 "Package Servers automatically with prestaging"
HOWTO3726 "Pre-staging a Package Server for the Notification Server"
TECH32074 "KNOWN ISSUE: All Package Servers with manual prestaging option defaults when using the Software Delivery Simple Wizard"
TECH12474 "Errors downloading packages when using SSL"
HOWTO2700 "How can I create a report that will tell me which Package Servers have a certain package?"
HOWTO5510 "Best Practices - Package Servers"
HOWTO4115 "Why aren't all managed resources being displayed in the Package Server Candidate Resource Picker?"
HOWTO2564 "Why is the NS saying that all of the Package Servers packages are invalid when our Package Server is saying that all of its packages are available?"
INFO5630 "What does the Asterisk symbol by the Site name under the 'Site' column mean?"
HOWTO4752 "Configuring Package Location on your Package Server"
HOWTO3945 "Package Servers download packages from the Notification Server only"
HOWTO8687 "How do I force all the packages on my Package Servers to download from the Notification Server?"
HOWTO3034 "How does Package Server replication work?"
HOWTO8778 "How to enable DS Library Replication using Package Servers?"
HOWTO7556 "What does the “Delete Package files if unused on the Package Server” setting do?"
HOWTO8870 "How do I determine which Subnets, having Active Machines, are not assigned to a Site?"
HOWTO5623 "Package Server does not publish UNC codebase for custom location"
HOWTO5464 "Is there a way to disable UNC on a single Package Server?"
HOWTO7106 "How do I configure the Notification Server to only publish HTTPS package codebases?"
HOWTO5583 "What are Package Codebases and how are they updated?"
HOWTO2834 "Package Servers and VPN connections"
HOWTO5562 "How the Altiris Agent obtains Package Codebases (download sources)"
HOWTO3545 "How to configure an alternate package destination location on Package Servers for a Software Delivery package"
TECH143021 "Getting packages with blank names in the Site Servers"
HOWTO3942 "How to enable debug logging for the Package Server agent"
HOWTO42394 "How does the package download process works with the Altiris Agent?"
TECH157049 "Package server on IIS7 has very slow package download times"
TECH168917 "KNOWN ISSUE: After upgrading from SMP 7.0 to 7.1, Package Servers with a large number of packages can take many days to upgrade."
HOWTO47803 "Installing Package Server in IIS 7.0"
TECH167178 "Packages are not getting refreshed properly after hierarchy was broke"
TECH217265 "Package servers not downloading packages due to insufficient disk space"