The manifest file describes how your application should run. FromMSDN:
Every assembly, whether static or dynamic, contains a collection of data that describes how the elements in the assembly relate to each other. The assembly manifest contains this assembly metadata. An assembly manifest contains all the metadata needed to specify the assembly's version requirements and security identity, and all metadata needed to define the scope of the assembly and resolve references to resources and classes. The assembly manifest can be stored in either a PE file (an .exe or .dll) with Microsoft intermediate language (MSIL) code or in a standalone PE file that contains only assembly manifest information.
Pls check the below link to understand the use of this file in Pega Robotics.
A Pega Robotics deployment package consists of two files; the .OpenSpan file and the .Manifest file. The manifest is used to compare the locally extracted version of your solution to the one on your network share. When they manifest files are identical, the locally extracted copy is used saving the time required to download and extract the deployment package from your network. If you do not have a manifest file, then the locally extracted copy will not be used and the .OpenSpan file will get downloaded and extracted every time the project is loaded.
Sorry, what do you mean by "network share"? Our package is deployed locally so doesn't attempt to copy anything from a network share.
Within the other link above, it says "In the extraction folder, <deployment>.manifest is compared to the StartupProject location’s <solution name>.manifest value: ‘deploymentversion’. If no match, extract anew from the StartupProject folder." The StartupProject solution name is defined in RuntimeConfig.xml, but what does "<deployment>.manifest" refer to?
Network share or local directory are essentially the same thing. I am referring to the location where your deployment package is located. Generally it is placed on a network share, so it can be updated centrally. Making a local copy doesn't change the behavior though. The package will still get copied to the ExtractDirectory and extracted whenever the solution is loaded without the manifest file in-place.
The Deployment Manifest refers to the manifest file in your deployment location (again, usually a network share, but in your case local). The deployment package is then copied to and extracted to the ExtractDirectory and executed from there. When the project is loaded again, the copy in the ExtractDirectory is compared to the copy in the Deployment directory to determine which one to use.
1. "Deployment package location" ≒ "StartupProject" ≒ where the openspan file is copied from ≒ usually a network share but local in our case
2. ExtractDirectory ≒ DeploymentExtractDirectory ≒ where the openspan file is copied to ≒ blank in our case?
If the above is true then we don't need a manifest file as we don't set an extract directory anyway, and the only remaining confusing point is that "<deployment>.manifest" appears to refer to #2 in SwarnenduM's link, while it appears to refer to #1 in your explanation...
His link is not referring to our manifest file but the general use of them in .Net and is not as accurate in this case. We advise you to keep the two files of the deployment package together. If you chose to leave off the manifest file, you will not be following our best practices.
Both of these values are blank by default, so what you wrote is only relevant if we set them ourselves? And can I assume one would not bother to set the second one unless the first one were a network location?
Our client will release both files, they just want to know the function for their own file auditing curiosity? However, if what I wrote above is correct this can also be considered an (undocumented) operational best practice which they may find of reference - I can imagine they would want to deploy on a network drive.
DeploymentDirectory is the location where your StartupProject is read from (or wherever you load the project from if using the tray icon or using a shortcut with the deployment package as an argument).
ExtractDirectory is the location where the deployment package is extracted to. By default this is to %AppData% when the value is blank.