Important Notice: On February 29th, this community was put into read-only mode. All existing posts will remain but customers are unable to add new posts or comment on existing. Please feel to join our Community Discord for any questions and discussions.

Programmatically creating packages

Is there a way to create packages programmatically (through cli)?

There's a bunch of applications that are not present in the official package library. I have already scripts that handle the downloading the new versions from appropriate websites. Now, I'd like to get those new versions registered in the Deploy as well. Currently, I have to do it manually (and as we all know manual labor sucks!)

Sure, I could probably tap straight into the database and do some reverse engineering, but I'm hoping that there's a more elegant solution to get it done.



Date Votes
  • I can't offer any suggestions but would love to know how you scripted the automatic download of applications from vendors websites. My problem has always been that the links for the application always had the version number baked in to the URL making it difficult to detect new versions.

  • Well, I've mostly dealt with it case-by-case. The mechanical part is handled in Powershell.

    For one application I'm just crawling through the vendor's website and look for specific download links. From that same page, I can usually find the version number as well and compare it to the one I already have downloaded. If it's newer, then I'll just download the new one.

    If the app is published on Github, then there are special URL's that always have the latest build.

  • No, Deploy does not have any commands that can do this. The closest I think you can get is to export a current package to XML, have your script modify that XML to point to the new version, then manually import the updated XML. You can directly poke the database, but that can lead to several different issues and I recommend against doing that.

    What are the applications you are looking for? I can add them to our list of programs to investigate for possible inclusion in the Package Library.

  • Thanks! Import/export of packages to/from XML would be a great way to solve this issue. Modifying an existing file (or even creating a new one) isn't really a difficult thing to do with Powershell. Now, if only there would be a way to import those XMLs through CLI... (cough.. feature request.. cough..) 😉

    Well, one of the apps is rather specific to our country (supporting app for our National ID-card) so I'm afraid, that there would be only a handful of admins who are able to benefit from it.

    One of the more popular apps would be Microsoft's PowerBI Desktop.

  • I too would love to be able to import and export packages through the CLI. Hopefully someday 😃

    I made sure PowerBI is on our list.

  • Cool! Thanks!

    While you're at it, maybe you'd consider adding the AdoptOpenJDK ( as well? Now that Oracle doesn't really allow to use their JRE in the business environment (without paying), there's a need for an alternative.

  • As far as I'm aware, you can still use the JRE. We still publish the latest version in the Package Library. However, I will still make sure AdoptOpenJDK is on the list.

  • I used Ketarin to keep one of my downloads up to date, looking for newer version and downloading it. With rules customized for that app.

    But then my vendor did a website redesign, requiring 2 factor authentication, to download newer versions. So that didn't work for me anymore, has to be done manually.

    Then I just updated variables in PDQ (In both inventory and deploy) with the new version number, that updated the collections (Current/Old) and used the same package with variable defined path/filename of the new version of software.

    That part still works.

  • I do my packages as selfextracting RAR files with a #setup.cmd batch.

    This way I can just select package file and from context menu select "create update". The resulting file will then be uploaded to different repositories and from there deployed.

    What i suggested several times is the ability for a package (in pdq deploy) to be able to get the file with wildcards.

    Like: $(Repository)\MyPackage_v$(getFileVersion_[x.x.x]).exe

    This would locate the files matching the pattern, grab the latest version, put the info in the package version field.

    This could be done either via action button, on aplication start or via triger (when the content in $(Repository) chnages.


  • Hello,

    has the day come?  😃