Design Studio SDK – Creating an online SDK Repository
EDIT – Update for those just looking for my online repository:
In Design Studio, Tools -> Install Extension to Design Studio… -> Copy and Paste this URL in the Location box:
You’ve created some SDK extension components that you now want to:
- deploy and maintain within your team
- or as an SDK addon vendor maybe to your customers
- or perhaps share with an online community (such as SCN)
And you’d like to have the ability to point everyone to one place and have a streamlined way to manage updates without distributing .ZIP files piecemeal.
I’ll be using my Design Studio Utility Pack for use case #3 above, while obviously this could apply for any of the 3.
This wasn’t really spelled out to me anywhere, but based on the steps already spelled out in the Design Studio 1.3 SDK Guide around creating a feature bundle, which is a standard Eclipse-type project, I assumed web-based repository delivery isn’t too hard in 2014. Since I’d never done one, I didn’t know what that web-based delivery term was called, but after stumbling around Google for awhile, I eventually figured out that I was trying to make is called an ‘Update Site Project’.
So OK, let’s try!
- With my Eclipse SDK loaded, I began with File -> New -> Project… -> Plug-in Development -> Update Site Project:
- I gave it a suitable name, and clicked Finish:
- So let’s pause here and look at what was created in the Package Explorer. A site.xml file is created:
- Hmm, ok. This looks similar to a Feature bundle screen with the ‘New Category’ and ‘Add Feature…’ button… I’ll take a guess that the category is ‘com.sap.ip.bi.zen.sdk’ as it is with a feature bundle, and I’ll add the feature from my feature project (the one that makes the .ZIP file described in the SDK Guide)
- Ok, now what? There’s a ‘Build’ and ‘Build All’ button, so I clicked the ‘Build All’ button (presumably would build any and all features, if I were to have more than one)… After a brief moment, the feature name has changed slightly, and now I have new files in the left panel of my package explorer:
- I am not a huge Java expert but I do know that .jar files are Java Archive files so OK, this made some JAR files for me. (Also what you would see if you manually unzip a feature bundle .ZIP)… Ok what do I do with these files? I don’t know… Let’s upload them and see what happens and see how hard or easy this is. Here’s the same files in a normal Explorer window, to show you what I’m going to upload to my web server.
- And below is the resulting folder I made containing the uploaded files in my webhost, same directory structure:
- Now what? I don’t know, but I’m assuming that when you add a repository site to Eclipse, it looks for site.xml and takes it from there. Surely it’s not that simple though? Let’s try Tools -> Install Extension to Design Studio…
- Woah. It figured out that there’s a feature there! Let’s install it and see if it works!
- We click though the normal addon prompts and let Design Studio restart. And sure enough, the components are there!
This was a lot of guesswork but I was pleasantly surprised that it ‘just worked’. So what are some of the benefits and considerations?
- Single point of distribution. No .ZIP file to keep up with.
- Updates! I tested this out after-the-fact, but if you upload a new version of the Update Site, you can instruct your users to check for updates by going to Help -> About -> Installation Details -> Select your addon -> ‘Update…’ (Or if you want a faster way, toggle to debug mode Ctl+Alt+Shift+D and then simply go Help -> Check for Updates and this also seems to work)
- Unless you are deploying your site within your Intranet, you need to remember a lot of users are probably behind a corporate firewall, so they may or may not have access to your website. This would mainly be a consideration for an SDK vendor or Internet-based community content (such as this example.)
This example for my Utility Pack is actually usable if you’d like to see it for yourself! If you’d like to try and have already installed a version of it from a .ZIP file, it *should* update correctly, but if you have problems switching, just uninstall the old version from the Help menu.
- Tools -> Install Extension to Design Studio…
- Provide URL http://www.mikehowles.com/designstudioutilitypack1.3
- Click OK and run through the prompts and restart.
You’re done! You can now check for updates and anything new I add will be reflected on this update site going forward.
If you have issues installing with this method, you may be one of those firewalled users mentioned. This won’t work for you unless you can work with your network guys.
That's really cool and easy to install. Thank you for sharing....now for shameless plug to attend your ASUG Design Studio SDK session at SAP TechEd Las Vegas
This is a great example of why building applications based on Eclipse makes sense. Most challenges, such as enterprise deployment, have already been solved and we can simply leverage them. I'm dreaming of a day when a large, online collection of Design Studio extensions is available, something akin to:
I think I just got chills...
Once again a very helpful post. I have a couple of questions as follows:
1) In Step 7 above, if the files are loaded to a web host folder that requires login credentials for access, presumably when the update operation is performed in Design Studio, a login window would automatically appear, right? i.e. we don't need to perform any extra setup steps when publishing to the update site if the host folder requires credentials, right?
2) My understanding is that for the update process in Design Studio to work, the update file must be accessed from the same location and have the same name each time. So let's say we setup an update site as per the instructions above and then later need to move the site to another web host where the domain name (i.e. URL ) changes, does this mean all developers have to reinstall the SDK add-ons from the new site first before the update process can resume?
1) If you use *Basic Authentication* on your webhost like (.htaccess for instance), I've tested this and you get an initial login prompt dialog as you'd expect. These credentials then are stored in Design Studio so subsequent update requests do not seem to trigger entering credentials again.
2) When you add a new repository resource to Eclipse (whether a .ZIP archive or an Online URL such as this blog example) it then becomes stored in Eclipse (remember Design Studio is Eclipse) as a repository source. Again, this even applies with .ZIP files... This means that if for some reason you decide to change host names or URL paths then yes this repository becomes invalid, just as if you were to delete the .ZIP archive as well.
You can clean this up in 2 ways that I've found. You can "go nuclear" and just wipe out 'Analysis-config' in your home directory, or you can enter Debug Mode (ctl+alt+shift+d) and go to Tools -> Preferences -> Install/Update -> 'Available Software Sites' and remove/disable various sources. Example below:
Hmm, this response got long - I may add it as an appendix to the original blog post since it contains more information 🙂
Hope this helps!
Yes, that does help indeed and has confirmed some of my thoughts, thank you. So for point 2 then I'll need to think carefully about where to host an update site to avoid needing to change it later 🙂 .
Thanks for sharing.
thanks, great post.
Thanks Michael, it's really very useful for newbie in SAP DS SDK projects.
But there is problem for me : Eclipse can not find my "com.sap.ip.bi.zen.sdk" in adding feature
Mike, good finding. I have managet to make this on my homepage provider.
Thanks for the instructions.
(NEW!) Latest Installable Package via Online Repository:
Btw, I just export as ZIP and unzip it on my web page repostory (manually adjusting the version in site.xml). Reason, I have troubles to compile the site directly (perhaps my version of eclispe cannot make it correctly...
I'm glad that the instructions (or most of it) worked for you, too! Also, I'm glad some of it did not work for you because your workaround helps give me an alternative method as well. I didn't think to try unzipping the ZIP repository and make it work with site.xml so this will go in my pile of notes.