{"id":2247,"date":"2026-07-30T13:12:34","date_gmt":"2026-07-30T12:12:34","guid":{"rendered":"https:\/\/kasperjohansen.net\/?p=2247"},"modified":"2026-07-30T13:32:14","modified_gmt":"2026-07-30T12:32:14","slug":"download-and-document-robopack-applications-using-api","status":"publish","type":"post","link":"https:\/\/kasperjohansen.net\/index.php\/2026\/07\/30\/download-and-document-robopack-applications-using-api\/","title":{"rendered":"Download and document Robopack applications using API"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I have been working with Robopack for quite some time now, and I have configured it in around 10-15 customer setups. This has provided me with a great deal of experience on how to implement Robopack in both existing Intune setups and brand new Intune setups. Robopack has a low of great features and I plan on going deeper with Robopack in another article, in this article though, I&#8217;ll focus on how you can download both the application package and the associated PDF documentation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Downloading the application package and the documentation for the package has a few usefull purposes. One is to backup the content of your Robopack tenant. Should something happen to the Robopack tenant where there is a data loss, a backup of the latest application packages is a very nice thing to have and should make it easier to do a restore of the application packages or at least the application pacakage configuration. And as we all know, documentation is also a good thing to have and with Robopack every application package is documented in a PDF file containing relevant information about how to install and uninstall and how to configure a Intune detection rule.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Besides backup and documentation, another purpose could be that you want to use the application packages from Robopack in a traditional image building process, like a custom image for Windows 365 or Azure Virtual Desktop downloading the application packages directly from Robopack and use them as a part of your image build process. This ensures that you are always using the latest application package version on both Intune managed devices and Windows 365 and\/or Azure Virtual Desktop devices with custom images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Let&#8217;s take a close look at the Powershell script and how it works.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/kasperjohansen.net\/index.php\/2026\/07\/30\/download-and-document-robopack-applications-using-api\/#Prerequisites\" >Prerequisites<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/kasperjohansen.net\/index.php\/2026\/07\/30\/download-and-document-robopack-applications-using-api\/#The_script\" >The script<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/kasperjohansen.net\/index.php\/2026\/07\/30\/download-and-document-robopack-applications-using-api\/#Downloading_the_latest_version_of_all_application_packages\" >Downloading the latest version of all application packages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/kasperjohansen.net\/index.php\/2026\/07\/30\/download-and-document-robopack-applications-using-api\/#Downloading_the_documentation_for_the_latest_version_of_all_application_packages\" >Downloading the documentation for the latest version of all application packages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/kasperjohansen.net\/index.php\/2026\/07\/30\/download-and-document-robopack-applications-using-api\/#Downloading_specific_applications_based_on_a_CSV_file\" >Downloading specific applications based on a CSV file<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Robopack API key<\/strong><\/li>\n\n\n\n<li><strong>Powershell 7.x<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Obviously, you&#8217;ll need a ful functioning Robopack tenant. If you currently don&#8217;t have that at your disposal, contact one of the Robopack partners, they can setup a fully functional 14 days trial tenant for you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With access to a Robopack tenant, you must create an API key to be able to communicate with your tenant using the Robopack API interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Login to your Robopack tenant with a user that has the &#8220;Organizational Admin&#8221; role and go to Settings and click API integration:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1024x543.png\" alt=\"\" class=\"wp-image-2267\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1024x543.png 1024w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-300x159.png 300w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-768x407.png 768w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image.png 1514w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the Actions box, click Create API key:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1-1024x543.png\" alt=\"\" class=\"wp-image-2268\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1-1024x543.png 1024w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1-300x159.png 300w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1-768x407.png 768w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-1.png 1514w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A new Windows pop up, click the Create API key button:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"196\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-2.png\" alt=\"\" class=\"wp-image-2269\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-2.png 760w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-2-300x77.png 300w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If you want to restrict the API communication to allow only a specific IP address, type the IP address in the IP address field. If you don&#8217;t type an IP address, API communication is allowed from any IP address.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new API key is presented in a new window. Copy the API key and store it in a safe location, as stated you will not be able to retrieve the API key once you have closed this window:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"765\" height=\"332\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-5.png\" alt=\"\" class=\"wp-image-2272\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-5.png 765w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-5-300x130.png 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>For security reasons, parts of the API key in the screenshot above have been blurred out.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You should now have a list of API key objects:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-6-1024x316.png\" alt=\"\" class=\"wp-image-2273\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-6-1024x316.png 1024w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-6-300x93.png 300w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-6-768x237.png 768w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-6.png 1049w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">From here you can see when the API key has been created, you can disable the API key, and you can regenerate the API key if needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You are now ready to execute the script in Powershell 7.x.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_script\"><\/span>The script<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I will not do a complete rundown of the script however; I will cover a few features and how to make use of the script. As a disclaimer I want to mention that this script is partly created using AI (Claude), partly meaning that some parts of the scripts are created by myself, I have used AI to optimize and improve certain parts of the script essentially making the code faster and better.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The script is in in my Github here:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/kaspersmjohansen\/Robopack\">https:\/\/github.com\/kaspersmjohansen\/Robopack<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The script contains examples on how to use it however; I&#8217;ll show a few ways the script can be used below.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Downloading_the_latest_version_of_all_application_packages\"><\/span>Downloading the latest version of all application packages<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Download the latest version of all packaged applications using the command &#8211; <em>.\\Download-Robopack-PackageApps.ps1 -APIkey &#8220;your_apikey_here&#8221; -DownloadFolder C:\\temp -AppLatestVersion<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1214\" style=\"aspect-ratio: 2020 \/ 1214;\" width=\"2020\" controls src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/DownloadAllAppsLatestVersion.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see in the screen recording, downloading the latest version of all the application in my Robopack tenant takes around 7 minutes, this may vary in your Robopack tenant depending on connection bandwidth and the amount of application packages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All the latest versions of all the application packages from my Robopack tenant are downloaded to the C:\\temp\\RobopackApp folder:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"980\" height=\"1024\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-7-980x1024.png\" alt=\"\" class=\"wp-image-2282\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-7-980x1024.png 980w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-7-287x300.png 287w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-7-768x802.png 768w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-7.png 1181w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Within each of the ZIP files are the entire application package including the source setup file for the application and any customizations needed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Downloading_the_documentation_for_the_latest_version_of_all_application_packages\"><\/span>Downloading the documentation for the latest version of all application packages<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Download the documentation for the latest version of all packaged applications using the command &#8211; <em>.\\Download-Robopack-PackageApps.ps1 -APIkey &#8220;your_apikey_here&#8221; -DownloadFolder C:\\temp -AppDocumentation<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1214\" style=\"aspect-ratio: 2020 \/ 1214;\" width=\"2020\" controls src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/DownloadAllAppDocumentation.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This time the script is quite a bit faster as it&#8217;s only PDF files for the latest version of the application packages that are downloaded.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The application packages documentation PDF files are downloaded to the C:\\temp\\RobopackAppsPDF folder:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"956\" height=\"1024\" src=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-8-956x1024.png\" alt=\"\" class=\"wp-image-2284\" srcset=\"https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-8-956x1024.png 956w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-8-280x300.png 280w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-8-768x822.png 768w, https:\/\/kasperjohansen.net\/wp-content\/uploads\/2026\/07\/image-8.png 1157w\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Each PDF file contains the documentation for the individual app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Downloading_specific_applications_based_on_a_CSV_file\"><\/span>Downloading specific applications based on a CSV file<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When building custom images for Windows 365 and\/or Azure Virtual Desktop, you may need specific apps to be a part of the custom image. For this scenario you can use a CSV file, the script will download the list of applications provided in the CSV file. I have provided a sample CSV file in the Github repository mentioned earlier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Download a list of packaged applications using a CSV file via this command &#8211; <em>.\\Download-Robopack-PackagedApps -apikey &#8220;your_apikey_here&#8221; -CSVfile &#8220;C:\\robopackapps.csv&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This will download the packaged applications listed in the CSV file the same way as before, where you will have one or more ZIP files containing the individual packaged application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This concludes the article. Feel free to reach out to me on\u00a0<a href=\"https:\/\/twitter.com\/KasperMJohansen\">X<\/a>\u00a0or on\u00a0<a href=\"https:\/\/www.linkedin.com\/in\/kaspermjohansen\/\">LinkedIn<\/a>\u00a0if you have any comments or questions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have been working with Robopack for quite some time now, and I have configured it in around 10-15 customer setups. This has provided me with a great deal of &#8230;<\/p>\n","protected":false},"author":2,"featured_media":2297,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,5,39,32],"tags":[],"class_list":["post-2247","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-api","category-apps","category-robopack","category-scripts"],"_links":{"self":[{"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/posts\/2247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/comments?post=2247"}],"version-history":[{"count":15,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/posts\/2247\/revisions"}],"predecessor-version":[{"id":2293,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/posts\/2247\/revisions\/2293"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/media\/2297"}],"wp:attachment":[{"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/media?parent=2247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/categories?post=2247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kasperjohansen.net\/index.php\/wp-json\/wp\/v2\/tags?post=2247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}