-
Notifications
You must be signed in to change notification settings - Fork 24
Coapp service engine interface
- via named pipe, either over an async bidirectional pipe, or two pipes for WSH
// sample connection via jscript scripting language
- uses url-encoding syntax for messages (both send and receive):
name-of-message?someparameter=value&someotherparameter=value2
All policies will be found in Computer Configuration\Administrative Templates\Control Panel\CoApp
(TODO: verify, unsure)
All policy values will be stored in the registry under HKLM\Software\CoApp\PackageManager\Policies
This message must be the first message passed on the pipe; any other message will not be accepted and no error will be posted--the service will simply disconnect the pipe instance.
This message identifies the client program and instance, and allows the client application to reconnect to the service in the event of a disconnection during a session. A client giving the same values will force the disconnection of the old client (if still connected) in favor of the new client.
When a client reconnects to the same session, it must have the same user token. Any attempt to reconnect to an existing session with a different token will result in disconnection from the service.
Name | Default Users | Description |
---|---|---|
Connect |
Everyone | Allows access to communicate with the CoApp service |
Name | Type | Required | Description |
---|---|---|---|
client |
string | yes | the name of the client program connecting to the service |
id |
string | yes | a unique "session id" for the client application. |
async |
boolean | no | set this to false (any other value assumes true ) to require the engine to create a new pipe with which communicate back to the client. The name of this pipe will be \\.\pipe\CoAppInstaller-$ID$ where $ID$ is the required unique session id` |
See: session-started
start-session?client=test-script&id=123912931923913&async=false
Returns basic information about packages based on the information given.
This function is accessible provided the client has the appropriate policy requirements.
This function is read-only, accesses information regarding installed packages, but can cause the engine to request the fulfillment of feeds from the client-which may require the client to access the network and write files.
Name | Default Users | Description |
---|---|---|
EnumeratePackages |
Everyone | Allows access to query the system for installed packages |
Name | Type | Required | Description |
---|---|---|---|
canonical-name |
string | no | The canonical-name of the package for which data is being requested |
name |
string | no | The common name of the package (ie, "Ruby" ) |
version |
formatted version-string (NNNNN.NNNNN.NNNNN.NNNNN ) |
no | the version of the package requested |
public-key-token |
16digit-hex-string | no | the public key token of the certificate of the package |
arch |
one of {x86,x64,any,arm,all} | no | the architecture of the package. all means all that are valid for this machine. |
dependencies |
boolean | no | If specified true , will return the package information for all the dependencies recursively |
installed |
tri-state {true,false,all} | no | Filter for packages that are installed or not, use all to accept both |
active |
tri-state {true,false,all} | no | Filter on packages that are the current active version (or only version) or not, use all to accept both |
required |
tri-state {true,false,all} | no | Filter on packages that are either user requested or the dependency of a user requested package, use all to accept both |
blocked |
tri-state {true,false,all} | no | Filter on packages the user has requested be frozen (not upgradable or removeable), use all to accept both |
latest |
boolean | no | If specified true will only return the latest version of a given package (subject to other criteria) |
index |
integer | no | Sends results at a given index (can be used to page the result set) |
max-results |
integer | no | Sends a maximum number of results(can be used to page the result set) |
location |
string | no | scope results to a given feed location. May contain wildcards |
force-scan |
boolean | no | forces feeds to be re-scanned |
recursive |
boolean | no | recursively scans feeds that support such operations (ie, directories) |
See:
found-package
no-packages-found
operation-requires-permission
message-argument-error
require-remote-file
msgname?param=xxx
Gets the cosmetic and contextual information for a given package.
This function is accessible provided the client has the appropriate policy requirements.
This function is read-only and does not modify the system.
No specific policy is required.
Name | Type | Required | Description |
---|---|---|---|
canonical-name |
string | yes | The canonical-name of the package for which data is being requested |
See:
package-details
unknown-package
message-argument-error
Would return the package details (if known) for the requested ruby package:
get-package-details?canonical-name=ruby-1.9.2.290-x86-0da32de74420310f
Installs a package given a canonical name, including any required dependent packages.
As well, this can determine if a newer version of a package is available and install it.
This function is accessible provided the client has the appropriate policy requirements--the required policy changes depending if the operation is an upgrade or new install of a package.
This function may request the client download files from remote locations and write them to the requisite location.
Name | Default Users | Description |
---|---|---|
InstallPackage |
Administrator | Allows a new package to be installed |
UpdatePackage |
Everyone | Allows a newer version of an package that is currently installed to be installed |
Name | Type | Required | Description |
---|---|---|---|
canonical-name |
string | yes | The canonical-name of the package requested to install. |
auto-upgrade |
tristate {true, false, fail} | no | if specified true the engine will attempt to locate the latest version of the package possible to install. If specified false , will not attempt to locate a newer version.If specified fail , will fail on a newer package being available. |
force |
boolean | no | forces the installation of a package even if the dependencies are not able to be satisfied. |
See:
operation-requires-permission
unknown-package
message-argument-error
installing-package
installed-package
failed-install-package
require-remote-file
signature-validation
Would install the given ruby package (or a more recent available version)
install-package?canonical-name=canonical-name=ruby-1.9.2.290-x86-0da32de74420310f&auto-upgrade=true
Given a file or location, asks the engine to recognize it and that it is available.
This is most often given either before installing a package (to make the service aware of it) or at the completion of downloading a remote file.
This function is accessible provided the client has the appropriate policy requirements.
This function is read-only and does not modify the system, it simply makes the service aware of the presence of a file.
This does change the transient internal-state of the package manager, and if the given file fulfills an outstanding request, this may cause the engine to continue a previously paused task.
No specific policy is required.
Name | Type | Required | Description |
---|---|---|---|
location |
string | yes | the file location of a given file. |
remote-source |
string | no | the location the file was downloaded from. |
See:
message-argument-error
unable-to-recognize-file
Would notify the engine of a file at c:\apps\.cache\coapp.org\packages.atom.xml
that was downloaded from http://coapp.org/repository/packages.atom.xml
recognize-file?location=c%3A%5Capps%5C.cache%5Ccoapp.org%5Cpackages.atom.xml&remote-source=http%3A%2F%2Fcoapp.org%2Frepository%2Fpackages.atom.xml
//description
//securityinfo
Name | Default Users | Description |
---|---|---|
//name |
Everyone | //desc |
Name | Type | Required | Description |
---|---|---|---|
//// |
string | yes | //desc |
See:
operation-requires-permission
unknown-package
message-argument-error
msgname?param=xxx