This article is a reference for Package Server behavior, configuration, and known troubleshooting scenarios in ITMS 8.x. It covers IIS virtual directory management, package delivery and validation, disk space handling, registry keys that control Package Server behavior, SQL database tables, events, package share creation, primary file storage location, automatic Package Server assignment, token-based authentication, and a set of frequently asked questions.
Note: Details in this article are subject to change as the product is updated. Confirm behavior against the customer's specific release before using this content. |
ITMS 8.7.x, 8.8.x
A Package Server hosts copies of packages so that Software Delivery agents in a site can download package content locally instead of pulling it from the Notification Server (NS) directly. The NS remains the source of truth for package assignment, policy, and the package snapshot signature. Package Server's job is to keep a synchronized local copy, publish that copy as one or more codebases (UNC and/or HTTP/HTTPS access points), and report its status back to the NS through summary events.
The most common failure points fall into three categories: the local copy diverging from the NS-defined package (staleness, invalid status), the codebase publication step failing (missing shares, IIS misconfiguration, credential issues), and disk or permission constraints on the Package Server host itself. Sections 1.0 through 8.0 below cover each of these in turn.
Starting in ITMS 8.5, Package Server changed how it creates and updates IIS virtual directories: it moved from the legacy IIS6-Metabase-compatibility approach to the native IIS API, which reads and writes IIS's applicationhost.config file directly. The logic that decides when a virtual directory needs creating or updating did not change — only the mechanism did.
In an environment with a small number of virtual directories, this has no visible cost. In an environment with thousands of virtual directories — most commonly caused by heavy use of custom package destination locations, where each custom-path package gets its own virtual directory — applicationhost.config grows large enough that IIS spends noticeably longer reading and writing it on each update, on the order of one second per virtual directory rather than milliseconds. Because Package Server must finish updating virtual directories before it queues new downloads with Package Delivery, an extended refresh cycle can also delay or block new package downloads for that window, in addition to elevated CPU usage on the site server (w3wp.exe).
Symptom: The agent log repeatedly reports virtual directories being created or updated.
A fix (ITMS 8.5 pointfix, carried into 8.6 RU1) added a cached list of virtual directories so a refresh is skipped unless one of these applies: a mandatory condition, a user-initiated "Resend all statuses," or a policy change affecting all packages (HTTP/UNC setting change, credential change, or storage location moved).
Verification signal: confirm the fix is active by checking the agent log for the following line:
Skip virtual directories and file shares refresh. |
Re-enabling the legacy IIS6-compatibility mode through the UseLegacyIISAPI registry key is available but not recommended for performance. See section 5.4.
Each package is stored under its own GUID folder. The package files reside in the cache folder, for example:
C:\Program Files\Altiris\Altiris Agent\Package Delivery\{6C821F5E-5BF4-407F-A6FF-ABB85EEE0418}\cache |
When Package Server receives configuration for an updated or changed package, it does the following in order:
A package shows as invalid in the Package Server UI when any of the following apply:
The setting for when Package Servers delete unused packages is on the Settings tab of the Package Server page. The countdown to remove package files on a Package Server starts only when the package is unassigned from that Package Server, or the package is deleted from the NS database. Both situations stop the package from being sent to the Altiris Agent in the Package Server node of the configuration XML file.
At that point, Package Server updates the PackageStatus.xml file it stores for the package, sets the Status flag to Deleted, and sets the Time flag to the removal time. The package status files are located, on a default install, at:
C:\Program Files\Altiris\Altiris Agent\Package Server Agent\Package Status |
At each Package Server refresh, Package Server checks for a Deleted flag in the Package Status files. If the corresponding Time flag has passed the configured duration for deletion of unused packages, Package Server removes the package files.
This local cleanup is one side of package removal. The client separately maintains its own reference to package state in AeXSWDPolicy.xml. Prior to ITMS 8.8.1, when a package was removed by the CleanupExpiredPackages process, its entry was not immediately cleared from AeXSWDPolicy.xml. This could leave a stale client-side reference and cause repeated attempts to interact with a package that no longer existed.
Fixed in 8.8.1: the entry is removed from AeXSWDPolicy.xml immediately when the package is deleted by cleanup, and also when a Quick Delivery or Package Delivery task is configured with "Delete immediately, 0 days," regardless of whether the task succeeded or failed.
Notification Server policy — not the local files in the Package Delivery folder — determines whether a Package Server should hold a package. Manually deleting a package's local files or secure-storage metadata clears only that local copy; if policy still assigns the package to that server, the package is re-requested on the next retry cycle.
Packages sent with urgent priority are tracked separately in:
<Package Server root>\PackageStatus\UrgentList.xml |
There is no supported way to remove a single entry from that file — only the file as a whole.
The Altiris Agent and Package Server calculate the space requirement for a package download using a registry key on the agent machine:
HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Communications\Package Delivery Min Disk Free Space (Mbytes) — default 500 |
The requirement works out to 500 MB plus 120% of the package size. For example, for a 100 MB package, the agent first checks whether 620 MB of free space is available at the default install location. If not, it checks whether any other drive has that space available and downloads there. If no drive has enough space, the package does not download.
If there is not enough space to download a package to the default install location (typically the C: drive), the Altiris Agent or Package Server downloads the package to the next available drive with the required space.
Package snapshots always remain at the default Altiris Agent install location, even if the associated package is stored on an alternate drive or destination.
Disk quotas behave differently from drive overflow. The disk space check and drive-overflow logic above apply to available free space on a drive. An NTFS disk quota configured on the drive hosting the agent and its packages is a separate condition and does not trigger the same overflow behavior. If a quota is in place and Package Server fills it, Software Delivery has been observed falling back to creating GUID-named folders directly under C:\windows\system32 and downloading there instead — filling the system drive and potentially degrading OS performance — rather than following the drive-overflow path to another drive.
This has been addressed so that Package Delivery fails the download outright if its working folder is not set correctly, instead of falling through to the system32 fallback. One behavior to expect afterward: by design, a failed or incomplete package retriggers a download attempt every minute until it succeeds or is marked invalid, so logs can grow quickly while a quota condition persists. Resolving the quota configuration itself remains the actual fix.
When a non-default location is specified for Package Server to download to, and a local path is specified (for example, C:\folder) that does not exist, Package Server creates it when downloading the package. Package Server does not create a share for this package, so a UNC codebase for this package type is not sent to the server — only HTTP is sent.
A non-default location on the Advanced tab when creating an SWD package can be specified as \\%computername%\share, where %computername% is substituted with the local host computer name. Share is a shared folder that must already exist on the hard drive of each Package Server receiving the package.
Package Server does not create shares, except the primary share PkgSvrHostC$. If the specified folder does not exist or is not shared, Package Server does not download the package and sets its status to invalid. If the shared folder exists, Package Server sends UNC codebases to the NS for this UNC alternate download location.
Custom destination locations must be unique per package. The "Use custom package destination location on package servers" setting — whether applied per-package or through Global MDP Settings — must point to a distinct folder for every package or task that uses it, including generic shared paths such as C:\Temp. If two or more packages share the same custom destination, their file snapshots can overlap: cleanup or deletion of one package can remove files that another package's snapshot still references, while Package Server continues reporting the second package as Ready, because it has no way to detect that the underlying files are gone. This is the most common cause of a package showing Ready with missing files, or appearing deleted immediately after finishing a download.
The Altiris Agent cannot download a package by UNC from a Package Server on a non-trusted domain; this produces an Access Denied error.
Package Service setting: Allow anonymous access to package codebases. Anonymous access effectively means all authenticated users are allowed when downloading by UNC. Even if a Package Server in a non-trusted domain has anonymous access enabled on its files, if the ACC account the Altiris Agent uses to connect anonymously to the UNC source cannot be authenticated, access is denied and no download occurs.
When downloading by HTTP from a Package Server in a non-trusted domain using anonymous access, the download occurs with no access issues.
Table | Description |
SWDPackageCodebase | Lists all NS and Package Server codebases for hosted packages. A NULL Source column indicates an NS codebase; otherwise the value is the GUID of a Package Server. |
SWDPackage | Details of an SWD package, including versions. When a package changes, a new row is added for the same PackageId (GUID); the row with _Latest = 1 is the current version. |
SWDPackageServer | Details of which packages are assigned to which Package Server, and the status of each. |
Evt_AeX_Package_Server_Package_Event | Download status events posted by Package Server. See section 4.0. |
RM_ResourcePackageService | Resource association table. The GUID column is the parent resource GUID; the child GUID is the package server resource. A Deleted value of 1 means the package service has been selected for uninstall. |
Package Server generates events under the following conditions:
Scenario | Event sequence |
New package downloaded | Start – Initial → New Package → Codebase enabled → End – Complete |
Existing package updated | Start – Refresh → Updated Package → Codebase enabled → End – Complete |
Valid package becomes invalid | Start – Refresh → Updated Package → Invalid Package → End – Invalid |
Invalid package recovers to valid | Codebase enabled → End – Recover → End – Complete |
New package that becomes invalid | Start – Initial → New Package → Invalid Package → End – Invalid |
ACC cannot be authenticated on the Package Server | Codebase Disabled summary event, sent for each package hosted on the Package Server, with an error message |
Credentials recover (ACC goes from unauthenticated to authenticated) | Codebase enabled summary event, sent for each package hosted on the Package Server |
If a Package Server sends a summary event containing a package version older than what the NS has recorded, the NS disables the codebase for that package. The codebase status is set to Stale codebase in the database.
Package Status and Summary events report the size of each package and whether the package is managed locally or externally to the NS. This is communicated with an IsManaged flag in the summary event, indicating whether the package server owns the package. This lets packages be defined on Package Servers rather than on the NS.
The NS core setting Package Servers download only from NS only is enabled in NS core settings. Behavior depends on whether sites are defined:
Site configuration | Effect when the setting is enabled |
No sites defined | Active — Package Servers only receive the NS as a download source. |
Sites defined | Not active — treated as disabled. |
Controls whether Package Server secures packages using the configured Package Access Credentials (PAC, now called ACC) or allows anonymous access.
HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Package Server\NoPACLockdown | |
Value | Meaning |
1 | Package Server does not lock down packages using ACC; it gives everyone access. |
0 | Package Server locks down packages using ACC. |
Controls how Package Server manages security on its packages. By default, Package Server sets specific permissions on package directories, overriding any custom permissions that have been set. When this key is enabled, Package Server no longer overrides existing permissions on package directories.
Use this key with care — incorrect permissions can render Package Server directories inaccessible to Package Server and Altiris Agents. To keep a Package Server fully functional, Full Control for the Local Administrator and System must exist on all package directories, in addition to any other custom permissions.
Altiris Agents and other Package Servers normally access packages on the Package Server computer using the Agent Connectivity Credential (ACC) configured on the NS. To ensure they continue to download packages after this key is enabled, configure the Everyone or ACC account with Read and Execute privileges on the package directories — because with the key active, Package Server does not apply the ACC or Everyone account to downloaded packages.
This key does not exist on a default install. Create a DWORD value under:
HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Package Server\EnableDACLManagement |
Stop the Altiris Agent service before creating the key, and restart it when finished.
Value | Meaning |
0 | Package Server does not change existing security on package directories. |
1 | Package Server functions as normal, applying and resetting permissions on package directories. |
Under:
HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Package Server |
Under:
HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Communications\Package Delivery |
Retry counters reset on Altiris Agent service restart. Separately from per-package retry, if Notification Server returns no codebases at all for a request — server busy, server paused, or package not ready — the delay before the agent's next codebase request doubles, up to a 2-hour cap, and resets to the 3-minute minimum once codebases are received successfully again.
Site Server Settings > Package Service Settings > Allow anonymous access to package codebases.
Selecting this option grants anonymous "everyone" access to the Windows directories containing package files on Package Servers, and enables anonymous access for directory security in IIS for hosted Package Server packages.
If this option is disabled, the Agent Connectivity Credentials (ACC) specified in Global Altiris Agent Settings on the NS are used to secure the package server files. Likewise, HTTP virtual directories mapped to packages on the Package Server have anonymous access disabled and Integrated Windows Authentication enabled, so agents connecting for HTTP downloads are challenged to supply their ACC credentials.
The ACC must be a known account on the Notification Server and every Package Server. If the account cannot be validated on a Package Server — for example, a non-trusting domain, or a computer account from another computer — Altiris agents cannot download files from that Package Server. Package Server files can be secured with the ACC only if every Package Server recognizes the account specified.
Setting: Create the Agent Connectivity Credential on Package Servers (provided the ACC is not a Domain Controller).
In an environment where Package Servers span domains without a trust between them, a local computer account can be set as the ACC instead of a domain account. The local computer account must be a local administrator on the Notification Server machine, since this account updates distribution points on packages; it does not need to be an admin account on the Package Servers.
Enter the local user account as .\localuser or localuser, where localuser is the name of the local computer account. Do not enter the NS machine name as a prefix.
When specifying a local account as the ACC, use it together with Create the Agent Connectivity Credential on Package Servers. Enabling this option ensures that if the account does not already exist on all Package Server computers across trusted and untrusted domains, it is created locally and applied to the downloaded package files on each Package Server.
If a local account is specified as the ACC and this option is disabled, the local account must already exist on every Package Server. If it does not, that Package Server cannot apply security to downloaded packages and does not publish codebases as ready to the Notification Server.
Note: The ACC depends on certain operating-system configurations. Out-of-box OS configurations are recommended, since they reflect how the product was tested; deviations require extensive testing and verification. Known dependent configurations: (1) Security Policy > Local Policies > User Rights Assignment > Access this computer from the network must be enabled and include the ACC account. (2) The NetLogon service must be enabled and set to automatic startup. |
A package snapshot is an XML manifest listing the files in the package location, along with their size, modified date, and SHA256 file hash. Package Server generates one snapshot XML per package, named <package_guid>.xml, stored at:
C:\ProgramData\Symantec\SMP\Snapshots |
Each snapshot XML change updates the package version stored in the SWDPackage.PackageVersion column, and triggers regeneration of the snapshot XML signature. The NS signs the snapshot; the signature is stored in a separate file, <package_guid>.sig, in the same Snapshots folder. The GetPackageSnapshot.aspx response returns the signature file as a string, used for package integrity checks on the agent side.
Package shares are created at the NS to support two consumers:
The NS creates both IIS and UNC shares where possible. Shares are created only for local, UNC, and URL package types, and are then transformed into codebases — the URI used as the actual download access point. Codebases are persisted in the SWDPackageCodebase table.
For each local package, Package Server creates a UNC share named NSSWD_<packageGuid>, giving a full UNC codebase of \\NS_HOST\NSSWD_<packageGuid>. For each local package, an IIS virtual directory is either created, or — in roughly 99% of cases — an existing pkggroup virtual directory (below) is reused. Virtual directories are created under the /Altiris/PackageShare application.
To minimize the number of virtual directories created in IIS, a virtual directory points to the parent directory of the package location rather than the package location itself. For example, if a package location is:
C:\xxx\parent\A |
the virtual directory (VD) is created pointing at C:\xxx\parent. If a second package is created at:
C:\xxx\parent\B |
a separate VD is not created, because one pointing to C:\xxx\parent already exists. The common virtual directory name is pkggroup_<md5>, where <md5> is the MD5 hash of the parent folder. The generated codebases keep the correct paths, for example:
http://NS/Altiris/PackageShare/pkggroup_<md5>/A http://NS/Altiris/PackageShare/pkggroup_<md5>/B |
These resolve to C:\xxx\parent\A and C:\xxx\parent\B respectively.
Group shares cannot be created if the package location resides in any of the following restricted OS special folders:
The automatic parent-folder grouping in section 8.2 happens without configuration. For finer control, the PackageGroupRoot property lets a package explicitly declare a shared root folder, so multiple packages nested several levels deep under that root — not just direct siblings — consolidate onto a single IIS virtual directory and a single UNC share, rather than one per distinct parent folder. The codebase for each package is then the shared virtual directory path plus the package's location relative to the group root.
This property is consumed only during a package refresh, and applies only to local and UNC package types. It has no effect if the package's location is not a subfolder of the configured PackageGroupRoot, and it cannot be set on OS special folders or root drive letters (C:\, F:\, and similar).
For large sets of pre-existing ungrouped packages that already share a common root — a common scenario after upgrading a solution that manages thousands of packages, such as Patch Management or Software Library — the SWDSupport.RearrangePackageSharesForPackagesUnderFolder() API can register a candidate root location in bulk. The actual rearrangement then happens on the next non-post-upgrade package refresh for any package still located under that root.
For a UNC package, the UNC share is not created at the NS host, because it either already exists (a UNC path pointing to a local physical drive at the NS that is already shared) or is a location on a remote machine.
The IIS virtual directory /Altiris/PackageShare/<packageGuid> is created, pointing to the package's UNC location. Either the ACC or the Distribution Point Credential (NS Console > Settings > All Settings > Notification Server Settings > Distribution Point Credential tab > "use these credentials") is set for the VD to access the UNC location. The resulting IIS codebase looks like http://ns/Altiris/PackageShare/<packageGuid>.
The IIS share for a URL package already exists — it is not created. The codebase looks exactly like the IIS share. If the virtual directory points to a UNC location (PackageItem.Directory is a UNC path), a UNC codebase is added as well.
Each time a package refresh detects that a package has changed location, the old UNC share is deleted. Unused IIS shares are detected and deleted only during the package refresh task.
The Package Refresh task is an SMP scheduled task, running once a day by default, that performs a package refresh for every package in the system. This approach has two drawbacks worth flagging for engineers troubleshooting large environments: to some extent, the NS "auto-accepts" any package content as valid, and at 100,000 packages the refresh can take hours, during which the AexSvc process actively consumes disk I/O. For this reason, solutions should not rely on the Package Refresh task alone and should trigger a manual Distribution Points Update when a package's folder contents change deliberately. Two Package Refresh tasks do not run in parallel.
Starting in ITMS 8.0, the primary file storage location for a Package Server can be changed on the Notification Server Package Service Settings page. Because this setting can be specified per Package Server, it gives the flexibility to manage different file storage locations on different Package Servers. This is an expensive operation not intended for daily use — treat it as an initial infrastructure setup step.
See "Configuring Primary File Storage Location for Package Servers Post-ITMS 8.x."
Automatic Package Server assignment assigns packages to sites as required, to distribute the package to every party assigned to download it. It also supports removing those assignments automatically after they go unused for a configured number of days.
See KB "Automatic Package Server Assignment."
ITMS 8.7.3 introduced token-based authentication as an alternative to ACC credentials.
Note: See "Using ITMS with Token-Based Authentication" |
Each package tracked by an agent is described by three metadata files, separate from the package binaries:
File | Purpose |
package.xml | Contains the package GUID, the source public key of the package owner, and the codebase(s) to download from. Since 7.5, this file is transferred over an encrypted channel and stored in the agent's secure storage rather than in plain form on disk. |
snapshot.xml | The file/folder manifest: file names, sizes, last-modified times, and SHA256 hashes. Immutable once received by the agent; its integrity is checked against the package owner's public key and a signed hash delivered by the Content-Signature HTTP header, or through snapdata.xml for UNC-sourced packages. |
snapdata.xml | Carries the snapshot's signature plus additional local tracking information used by the Package Delivery framework. |
Validation differs slightly from Windows: a modified-time mismatch, or a local file larger than the snapshot specifies, triggers a full re-download. A local file smaller than the snapshot is re-downloaded in full if it is under 64 bytes; otherwise, the last 32 bytes are discarded and the download resumes from that point.
Package download retry timing is governed by the registry keys in section 5.5. Two behaviors are worth calling out specifically:
When an agent or Package Server needs a package, it calls GetPackageInfo.aspx on the Notification Server, which returns a list of download locations (codebases). Resolution logic differs slightly depending on whether the requester is a Software Delivery agent (a "codebases" request) or a Package Server (a "packageServers" request), but both follow the same general pattern:
Timeout handling: once the agent's cumulative download-attempt time — tracked and reported to the NS with each request — exceeds the configured maximum, the requester's IP address is replaced with the NS server's own IP for that lookup. This biases the result toward Package Servers near the NS, rather than jumping straight to NS codebases.
Revoked Package Servers are never returned, even if they are otherwise ready and would normally be a match.
Replicated packages: if no download locations are found at all and the requested package is eligible for item replication, the agent is redirected to the source NS instead of receiving an empty result. This redirect is honored only for requests from a Package Server in the same site as the NS.
Two core settings affect this behavior directly: PkgSvrDwonloadFromNSOnly (section 5.1) forces Package Servers to only ever receive the NS as a source when no sites are defined, and the per-package automatic-assignment setting determines whether GetPackageInfo fires off automatic site assignment on a background thread when a request comes back empty.
Double-click the package in the Package Server UI to see its details. The PackageID field contains the package's unique GUID, which matches the virtual directory name, for example:
Default Web Site\Altiris\PS{GUID.EN_US} |
The codebase types configured on the Package Service Settings page on the NS control whether UNC, HTTP, and HTTPS codebases are published. By default, UNC and HTTP publishing are enabled.
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="https://PSName/Altiris/PS/{GUID.EN_US}" snapshot="https://PSName/Altiris/PS/getpackagesnapshot.asp"/> |
Example UNC codebase:
<Codebase href="file://PSName/PkgSvrHostC$/{GUID.EN_US}/cache" snapshot="file://PSName/PkgSvrHostC$/{GUID.EN_US}/snapshot.xml"/> |
IIS 6:
IIS 7:
Package location uniquely identifies where package contents reside. Package files can be in the following location types:
Type | Description |
Local | Located in a directory on the fixed disk drive at the NS host — not on a network-mapped drive. |
UNC | Any valid UNC location, either on the NS or another machine. |
URL | The Package.Location property holds a valid IIS URL. In the 7.0 SMP release this type is largely redundant, because the virtual directory path points either to the local path at the NS or to a UNC path. The virtual directory's physical location is stored in PackageItem.PackageDirectory for URL-type packages. A URL package type can typically be replaced by either Local or UNC. |
Empty | A package with no files. PackageItem.Location can be empty. |
External | All other package types are managed and maintained at the NS — created there, with contents monitored by the NS. An External package is created and managed at the Package Server instead. |
The process of revising (snapshotting) package contents is called Package Refresh, or Distribution Points Update. This process: updates package assignment to Package Servers (in the Automatic Assignment case), creates UNC and IIS shares at the NS as access points to the package folder for agents, and creates the package snapshot manifest.
Package Distribution Points Update is required after the package owner (a solution or customer) changes the package folder contents. Otherwise, the package generally stops being distributable to agents.
A UNC location is not currently supported for the Package Server repository, because Package Server uses the System account to create folders and other items it needs. The System account does not have privileges to use UNC network locations, so UNC locations cannot currently be used for file repositories.
The Client Config policy shows a line similar to the following:
<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"/> |
Package Delivery uses file and block hashes rather than a CRC. Hashes cover the same integrity need a CRC addresses, including detecting corruption during transfer, and provide better protection than CRC — SHA256 hashes are used.
Package Server does not check hashes before pushing files, since IIS performs the push. Package Server does perform periodic hash checks when it validates packages.
Package Server does not create UNC shares for packages with a custom location, or for locally managed (External) packages. This is intentional: creating or sharing a location just because it was specified in the SMP risks affecting a system folder or user-specific folder, which could break the system or introduce a security exposure.
To work around this restriction, the whole working folder for Package Server can be changed so all packages are stored separately from the core agent, and Package Server treats this location as the default — removing the need to change every package individually. See "Configuring Primary File Storage Location for Package Servers Post-ITMS 8.x"
If a custom-location package already has a UNC path, that path is provided as a codebase:
Symptom: The Altiris Agent cannot download package snapshots by HTTP from a Package Server running IIS 7.
Signal: The agent log shows:
AeXPackageDelivery.dll Download Snapshot failed: Invalid XML returned by the server (-2147467259) AeXNSAgent.exe |
Root cause: ASP (Active Server Pages) is not enabled in the IIS 7 Web Server role on the Package Server.
Resolution: Edit the Web Server role on the Package Server and install the ASP feature.
Note: The source content does not include a verification step for this scenario. Recommended addition: confirm the package snapshot downloads successfully after installing ASP, and confirm the -2147467259 error no longer appears in the agent log. |