The World Simplified is a Virtual World

The Adventures of Justin Zarb and Dave Falkus in the Virtual Jungle

Dynamic Suite Composition (DSC)

Dynamic Suite Composition (DSC)

  • Comments 5
  • Likes

One of our great team posted some information to the Technet Forum. A question was asked around contexting, which Lidiane (Lead PM) and Matt responded too. I have grabbed the main chucks of information around Dynamic Suite Composition (DSC) but you should read the whole thread!

 

The "contexting" feature we introduced in SoftGrid 4.5 is called Dynamic Suite Composition (DSC). The feature was designed to allow customers to package and manage Plug Ins/Add Ins and Middleware packages separately from the applications that use them.

If you have a Office 2003 package that was sequenced with a previous version of SoftGrid (say 4.1 or 4.2) you don't need to resequence that. You can now package the plug ins that you want your users to have access to separately. For example, today I sequenced the Office Converter Plug ing and added the dependency to my existing Office 2003 package by editing the OSD files of the Office 203 package. The "editing process" is simple, you add a dependency tag for each Plug In you want to add:

<DEPENDENCIES>

<CODEBASE HREF="....OfficeConverter.osd" .... >

<CODEBASE HREF="....ExcelTableMerge.osd"...>

</DEPENDENCIES>

You can certainly add more than 2 packages, and the really cool thing about it is that you can define permissions for each plug in separately. So, you could have 40 dependencies defined for Office but each user only has access to 4-5 plug ins at a time. So the users will only load and see the plug ins they were granted access to see. But the folks managing the Office package have an entire view of all of the plug ins that have been defined as dependencies in Office.

Given that, we DON'T recommend putting all of the plug ins in a single package because you will not be able to manage the users permission with the granularity that you may want to. Plus, if a patch comes out for your plug in, you don't have to impact any of the other plug ins.

The experience for the user should be exactly like it would be if the application was installed. In my example above, the Office Converter Plug In, there is nothing the user needs to know. He/she launches Excel 2003 and tries to open a Excel 2007 file. The plug in kicks off when its needed and the file opens, the user gets their task done without a problem or having to worry about any icons. If the plug in actually adds icons to the task bar or the Office ribbon, the icons will look exactly like they do if locally installed.

The same concept applies for middleware (i.e. JRE, .NET, OLEDB, etc). You can package JRE, .NET, etc on their own packages and define depedency on all of the applications that use them. You won't need to bundle them with a number of applications, you will be able to keep a single version of the middleware for all of your applications that use them. 

The applications will share a single virtual environment, so the applications can interact like they would if they were locally installed. That is the primary reason why we recommend this feature for plug ins and middleware, since those are not expected to conflict. If you intend to do anything larger, then you will need to do some testing prior to using it.

 

At this time there is not support for multiple levels of dependencies, you can actually set them up but they are ignored right now. 

So looking at your question if you had Office and an add-in that required Java, you would have to add Java into the dependecies as well as the add-in so it would be available.

As far as the variables, virtual registry, etc. it is my understanding that the secondary packages inherit the settings from the primary package, so whatever is in the primary OSD will be the only ones that are applied in that Virtual Environment.  In other words it doesn't actually look at the .OSD of the secondary.

<VIRTUALENV>

<DEPENDENCIES>

<CODEBASE HREF="PATH TO SFT",GUID="GUID OF PACKAGE", SYSGUARDFILE="CP FILE", SIZE="SIZE OF PACKAGE", MANDATORY="TRUE/FALSE"

</DEPENDENCIES>

</VIRTUALENV>

So to finalize we aren't actually pointing to the other osd, just pulling these specific settings out of the OSD for the secondary application.  Mandatory is the only one we can't copy out of the secondary OSD and it sets up whether or not this secondary is mandatory to load or the primary fails to load as well.

 

You would add permission per package in the management console. So, you would have the Office plug ins and Java packages in your server management console and you would give each individual package the appropriate permission. As Matt mentioned, the OSD is only used to get settings for the plug ins. The dependencies definition would only be in primary package (so for Office would have all of the dependencies, you wouldn't need to have them in the plug ins' OSD files).

Comments
  • Andrew posted to the Application Virtualization blog the other day discussing his top 5 features that

  • If you want to fix some (very) minor typos above:

    "Plug ing" -> "Plugins"

    "depedency" -> "dependency"

  • "dependecies" -> "dependencies"

  • I am bundling two apps and the example OSD is as shown below:

    OSD of the primary application:

    ------------------------------------------------

    <?xml version="1.0" standalone="no"?>

    <SOFTPKG GUID="E8565996-9D1D-4CCF-BC73-9690CB9B520D" NAME="Dummy Script" VERSION="2.0">

     <IMPLEMENTATION>

       <CODEBASE HREF="RTSP://%SFT_SOFTGRIDSERVER%:554/CSTEST02.ENG/Credit_Suisse_Test_2.0_ENG.sft" GUID="B457D024-7435-46D5-AB70-34E63356E84E" PARAMETERS="" FILENAME="CSTEST02.ENG\CSTEST02.ENG.vbs" SYSGUARDFILE="CSTEST02.ENG\osguard.cp" SIZE="31431" />

       <WORKINGDIR>%SFT_MNT%\CSTEST02.ENG</WORKINGDIR>

       <VIRTUALENV TERMINATECHILDREN="FALSE">

         <DEPENDENCIES>

           <CODEBASE HREF="RTSP://%SFT_SOFTGRIDSERVER%:554/CSTEST01.ENG/Credit_Suisse_Test_1.0_ENG.sft" GUID="BDDDD2A3-AAA6-4270-A9F2-CDF2B711FC36" PARAMETERS="" FILENAME="CSTEST01.ENG\CSTEST01.ENG.vbs" SYSGUARDFILE="CSTEST01.ENG\osguard.cp" SIZE="33503" MANDATORY="TRUE" />

         </DEPENDENCIES>

         <ENVLIST>

           <ENVIRONMENT VARIABLE="Path">%SFT_MNT%\CTEST02.ENG;%Path%</ENVIRONMENT>

           <ENVIRONMENT VARIABLE="MAINENV">%SFT_MNT%\CTEST02.ENG</ENVIRONMENT>

         </ENVLIST>

       </VIRTUALENV>

       <VM VALUE="Win32">

         <SUBSYSTEM VALUE="windows" />

       </VM>

       <OS VALUE="Win2003Svr" />

       <OS VALUE="Win2003TS" />

       <OS VALUE="Win2008Svr" />

       <OS VALUE="Win2008TS" />

       <OS VALUE="WinVista" />

       <OS VALUE="WinXP" />

     </IMPLEMENTATION>

     <DEPENDENCY>

       <CLIENTVERSION VERSION="4.5.0.0" />

     </DEPENDENCY>

     <PACKAGE NAME="Credit_Suisse_Test_2.0_ENG" />

     <ABSTRACT>Credit Suisse Test 2.0</ABSTRACT>

     <MGMT_SHORTCUTLIST>

       <SHORTCUT LOCATION="%CSIDL_PROGRAMS%\Virtual Apps\Applications\Credit Suisse Test 2.0 ENG" FILENAME="" OVERRIDDEN="TRUE" DISPLAY="Dummy Script" ICON="%SFT_MIME_SOURCE%/Credit_Suisse_Test_2.0_ENG Icons/Credit_Suisse_Test_2.0_001.ico" />

     </MGMT_SHORTCUTLIST>

     <MGMT_FILEASSOCIATIONS>

       <PROGIDLIST />

       <FILEEXTENSIONLIST />

     </MGMT_FILEASSOCIATIONS>

    </SOFTPKG>

    ------------------------------------------------

    OSD of secondary (dependency) application:

    ------------------------------------------------

    <?xml version="1.0" standalone="no"?>

    <SOFTPKG GUID="B31F20CF-0783-4836-95FB-5C201A8B9EAD" NAME="Credit Suisse Test 1.0 ENG" VERSION="1.0">

    <IMPLEMENTATION>

    <CODEBASE HREF="RTSP://%SFT_SOFTGRIDSERVER%:554/CSTEST01.ENG/Credit_Suisse_Test_1.0_ENG.sft" GUID="BDDDD2A3-AAA6-4270-A9F2-CDF2B711FC36" PARAMETERS="" FILENAME="CSTEST01.ENG\CSTEST01.ENG.vbs" SYSGUARDFILE="CSTEST01.ENG\osguard.cp" SIZE="33503"/>

    <VIRTUALENV TERMINATECHILDREN="FALSE">

    <ENVLIST>

    <ENVIRONMENT VARIABLE="DEPENV">%SFT_MNT%\CSTEST01.ENG</ENVIRONMENT>

    <ENVIRONMENT VARIABLE="Path">%SFT_MNT%\CSTEST01.ENG;%Path%</ENVIRONMENT>

    </ENVLIST>

    </VIRTUALENV>

    <WORKINGDIR>%SFT_MNT%\CSTEST01.ENG</WORKINGDIR>

    <VM VALUE="Win32">

    <SUBSYSTEM VALUE="windows"/>

    </VM>

    <OS VALUE="Win2003Svr"/>

    <OS VALUE="Win2003TS"/>

    <OS VALUE="Win2008Svr"/>

    <OS VALUE="Win2008TS"/>

    <OS VALUE="WinVista"/>

    <OS VALUE="WinXP"/>

    </IMPLEMENTATION>

    <DEPENDENCY>

    <CLIENTVERSION VERSION="4.5.0.0"/>

    </DEPENDENCY>

    <PACKAGE NAME="Credit_Suisse_Test_1.0_ENG"/>

    <ABSTRACT>Credit Suisse Test 1.0</ABSTRACT>

    <MGMT_SHORTCUTLIST>

    <SHORTCUT LOCATION="%CSIDL_PROGRAMS%\Virtual Apps\Applications" FILENAME="" OVERRIDDEN="TRUE" DISPLAY="Credit Suisse Test 1.0 ENG" ICON="%SFT_MIME_SOURCE%/Credit_Suisse_Test_1.0_ENG Icons/Credit_Suisse_Test_1.0_001.ico"/>

    </MGMT_SHORTCUTLIST>

    <MGMT_FILEASSOCIATIONS>

    <PROGIDLIST/>

    <FILEEXTENSIONLIST/>

    </MGMT_FILEASSOCIATIONS>

    </SOFTPKG>

    ----------------------------------------------------

    Now, the problem I am facing is: The main application is not able recognize the environment variables installed by the dependency package via .OSD

    Please advise me on this

  • You are correct. You can bring the environmental OSD from the secondary app into your primary app as a workaround. We do not look at the secondary application OSD (application descripter) and hence you will need to make sure your environmental variables, scripts and dependancie are apt in your primary applications OSD file.

    I hope that this helps. Ping me off line if you want some more assistance.

    Zarbie!

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment