We are just beginning a large project that will be rolled out with just a subset of the required aspects/properties. I can't find any programmatic way to do this, so I guess I would have to:
solicit the aspect/properties names/types from the user
write out the changes to the xml files (myCustomModel.xml, share-config-custom.xml, myCustomModel.properties)
validate via xsd files
build the amp on-the-fly
run a "preview" of the load so the user can tell if there are errors.
Then I'd send a message to some admin or schedule a chron job to restart alfresco.
This could happen on a dev server instance and then periodically we could load the amps onto the production server. There would just be 1-2 users so not much contention for the files (that part doesn't concern me since the 2 guys work closely together). BUT…this seems like a lot of work, am I missing a simpler way?