Skip to content
This repository has been archived by the owner on Apr 6, 2023. It is now read-only.

Coapp service engine interface

fearthecowboy edited this page Aug 9, 2011 · 18 revisions

Interface for CoApp's Service Engine

Connecting to the engine

  • 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

Policy Location:

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

Messages accepted by the service

Message: start-session

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.

Security Information

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.

Policy
Name Default Users Description
Connect Everyone Allows access to communicate with the CoApp service

Parameters

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`

Response Messages

See: session-started

Sample :

start-session?client=test-script&id=123912931923913&async=false

Message: find-package

Returns basic information about packages based on the information given.

Security Information

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.

Policy
Name Default Users Description
EnumeratePackages Everyone Allows access to query the system for installed packages

Parameters

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)

Response Messages

See:

found-package

no-packages-found

operation-requires-permission

message-argument-error

require-remote-file

Sample :

msgname?param=xxx

Message get-package-details

Gets the cosmetic and contextual information for a given package.

Security Information

This function is accessible provided the client has the appropriate policy requirements.

This function is read-only and does not modify the system.

Policy

No specific policy is required.

Parameters

Name Type Required Description
canonical-name string yes The canonical-name of the package for which data is being requested

Response Messages

See:

package-details

unknown-package

message-argument-error

Sample :

Would return the package details (if known) for the requested ruby package:

get-package-details?canonical-name=ruby-1.9.2.290-x86-0da32de74420310f

Message: install-package

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.

Security Information

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.

Policy
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

Parameters

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.

Response Messages

See:

operation-requires-permission

unknown-package

message-argument-error

installing-package

installed-package

failed-install-package

require-remote-file

signature-validation

Sample :

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

Message: recognize-file

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.

Security Information

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.

Policy

No specific policy is required.

Parameters

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.

Response Messages

See:

message-argument-error

unable-to-recognize-file

Sample :

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

Message: //msgname

//description

Security Information

//securityinfo

Policy
Name Default Users Description
//name Everyone //desc

Parameters

Name Type Required Description
//// string yes //desc

Response Messages

See:

operation-requires-permission

unknown-package

message-argument-error

Sample :

msgname?param=xxx
Clone this wiki locally