Auto Packaging with AppDNA

14/08/2018 Stuart Moore   ID: 266736

Citrix's AppDNA tool can be used to analyse application compatibility  for target operating systems, for example Windows 10 or Server 2012 R2, or identify applications that are suitable for application  through Citrix Virtual Apps and Desktops (XenApp and XenDesktop), AppV, or ThinApp. 

AppDNA can automatically import, analyse and run a Forward Path function to trigger scripts which can automate application packaging; this includes using Cloudhouse's Auto Packager when AppDNA determines other packaging solutions are unsuitable. The following  document details how to configure AppDNA to trigger the Auto Packager.

Pre-requisite Documentation

Please read Creating Containers with the Auto Packager Command Line Interface.

Please read Citrix's AppDNA documentation.

Packaging Machine

Virtual  Machine with the OS that supports the application, e.g. Windows XP x86  or Win 7, it must meet all the AppDNA requirements including

  • Citrix AppDNA VM Configurations Tools.msi is installed
  • Open port 54593
  • RDP Enabled
  • Make sure you can ping the VM from the AppDNA Server
  • Cloudhouse Auto Packager is installed
  • Make sure you can access the same network share that you intend to store the AppDNA results.

Configuring AppDNA

  1. Configure an Install Capture Virtual Machine in AppDNA
    1. Edit / Settings / Install Capture Virtual Machines
    2. Name it, for example Cloudhouse Auto Package Virtual Machine
    3. Select the Packaging Machine as the VM
    4. Create a snapshot with the packager installed
    5. Make sure you can contact the machine and perform the Test during configuration
  2. Create an Execution Profile, the example Cloudhouse Compatibility Containers can be used, just copy and paste the code into an XML file, and import into AppDNA.
    Execution Profile - Cloudhouse Compatibility Containers
  3. Modify the default ForwardPath script provided for Windows 10 Primary, Secondary App-V analysis, so that the outcome of the RAG.Red is to use the "Incompatible App: Try Cloudhouse" 
Public Function ForwardPath(ByVal currentApplication As Application) As Output
        ' This template script assumes a primary migration target (Windows 10), and a secondary
        ' target (App V). If the application is not Green for Windows 10 then the application is checked
        ' for compatibility on App-V. If the application is not Green on either Windows 10 or App-V then
        ' the outcome is set to RAG.Red and trigger the 'Incompatible App: Try Cloudhouse' task script
    Dim myForwardpathresult As New Output()
    If (currentApplication.Modules.Windows10.RAG = RAG.Green) Then
        myForwardpathresult.Outcome = "Windows 10 Ok"
        myForwardpathresult.RAG = RAG.Green
        ' If the RAG for Windows 10 is not green, then check if it would be green for App-V
        If (currentApplication.Modules.AppV.RAG = RAG.Green) Then
            myForwardpathresult.Outcome = "AppV ok."
            myForwardpathresult.RAG = RAG.Green
            myForwardpathresult.Outcome = "Incompatible App: Try Cloudhouse"
            myForwardpathresult.RAG = RAG.Red
        End If
    End If
    ForwardPath = myForwardpathresult
End Function

   4. Create a Task Script that triggers the Execution profile Cloudhouse Compatibility Container

  1. In the Associated Outcome drop down, select Incompatible App: Try Cloudhouse
  2. In the Scenario window, select Windows 10 Primary, Secondary App-V and right click and select New Task Script
  3. Incompatible App: Try Cloudhouse script
' This task script kicks off the Execution Profile Cloudhouse Compatibility Container which performs Install Capture using the Auto Packager
' Replaceables are passed into the execution profile for use with the command line
LoadAssembly System.Windows.Forms.dll
Imports AppDNA.AppTitude.Scripting
Imports System.Collections.Generic
Public Class ScriptClass
    Public Function Start(controller As IActionController) As TaskStatusEnum
        ' Pass replaceables into the execution profiles using the dictionary
        Dim replaceables As New Dictionary(Of String, String)
        replaceables.Add( "InstallerPath", controller.Application.SourcePath)
        replaceables.Add( "AppName", controller.Application.Name)
        replaceables.Add( "AppGUID", controller.Application.AppID)
        ' This informs the controller that it can abort if the user cancels
        ' This call allows you to run the execution profile for a given app using a given VM
         ProductionManager.RunExecutionProfile(controller, "Cloudhouse Compatibility Container", replaceables, "Cloudhouse Auto Packaging VM")     
        ' Add you own actions
        controller.GUI.ProgressPercent = 100
        Start = TaskStatusEnum.Complete
    End Function
End Class
Was this article helpful?

Table of Contents

    Can't find what you're looking for?

    Contact Support