Skip to main content
Level 2
October 16, 2015
Solved

Auto Uploading and Installing Packages in AEM

Hi,

In our deployment scenario, the authoring and publishing server would be on different servers. The authoring team will create the content and publish it.
This published content will be ftped securely to a share.
We need to create a job, which will retrieve this published content zip and upload it in package manager and post uploading, install it.
Does AEM provides some commands to do this?
We are thinking to create a batch file or a dot net application (.exe) to acheive this, but need info on some AEM APIs which will help us do this.
 

Regards,
Aditya Nayak

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
JustinEd3Accepted solution
Adobe Employee
October 16, 2015

Hi,

The Package Manager has an HTTP API for doing those types of tasks: http://dev.day.com/docs/en/crx/current/how_to/package_manager.html#Package%20Manager%20HTTP%20Service%20API

Regards,

Justin

11 replies

Level 2
October 16, 2015

Hi,

I was able to access the publisher and upload the zip.

I am doing a form post to my publisher instance -
http://localhost:4503/crx/packmgr/service/.json/?cmd=upload
But get following message - 
This node already exists: /etc/packages

I am not using CuRL, but using C#.NET classes like HttpWebRequest and HttpWebResponse.

Any help for me troubleshoot this further is greatly appreciated?

Thanks,
Aditya

Translate
Sham_HC
Level 10
October 16, 2015

Upload service takes 2 parameters one is command (cmd=upload) & other is package (package=file). In your code just uploading file does not help & you need to pass with right mapping(package) parameters.  You might find [1] discussion helpful,

[1]    http://stackoverflow.com/questions/219827/multipart-forms-from-c-sharp-client

Translate
Level 2
October 16, 2015

Hi Justin,

I am using C#.NET to acheive this (not CURL). Following is my code snippet. I am getting "package file parameter missing" message.

        private static void UploadAEMPublishPackage()                 {                     string url = "http://localhost:4503/crx/packmgr/service/.json/?cmd=upload";                     WebRequest request = WebRequest.Create(url);                     request.Method = "POST";                     request.ContentType = "multipart/form-data";                                         request.Credentials = new NetworkCredential("admin", "admin");                                         FileStream fs = null;                     fs = File.OpenRead(@"D:\AdobeAEM\packages\MySiteTaxonomy-1.0.0.zip");                     byte[] buffer = new byte[fs.Length];                     fs.Read(buffer, 0, Convert.ToInt32(fs.Length));                                         Stream reqstr = request.GetRequestStream();                     reqstr.Write(buffer, 0, buffer.Length);                     reqstr.Close();                                         WebResponse response = request.GetResponse();                     StreamReader reader = new StreamReader(response.GetResponseStream());                     string str = reader.ReadLine();                     while (str != null)                     {                         Console.WriteLine(str);                         str = reader.ReadLine();                     }                 }
Translate
Adobe Employee
October 16, 2015

curl is just an HTTP client. You can use whatever HTTP client you want.

Translate
Level 2
October 16, 2015

Is this possible withoput using CURL, Since, we do not support CURL in our organization.

Some sample http example would be appreciated.

Thanks,
Aditya Nayak

Translate
Adobe Employee
October 16, 2015

You would use the upload command. If you look at the documentation, you pass in the package file in the package form parameter.

Translate
Level 2
October 16, 2015

Hi,

I do see that you can use PackageManager Http Service API -
http://localhost:7402/crx/packmgr/service/<response-format>/<package-jcr-path>?cmd=<command>

If my package is at a location "C:\ContentRepository\MYCo-ContentPackage.zip", How am I going to pass this path in the API?

Regards,

Aditya Nayak

Translate
joerghoh
Adobe Employee
Adobe Employee
October 16, 2015

Hi,

Is FTP the only protocol you can use? Is the standard CQ replication (HTTP, you can also use HTTPS, proxy-support available) not ok? I would not try to reinvent this mechanism.

Jörg

Translate
JustinEd3Adobe EmployeeAccepted solution
Adobe Employee
October 16, 2015

Hi,

The Package Manager has an HTTP API for doing those types of tasks: http://dev.day.com/docs/en/crx/current/how_to/package_manager.html#Package%20Manager%20HTTP%20Service%20API

Regards,

Justin

Translate
January 11, 2018

Justin - do you have an updated URL for your pointer? dev.day.com does not exist. Isn't it documented on adobe.com?

Translate