Auto Packaging with AppDNA
14/08/2018 Stuart Moore
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.
Please read Citrix's AppDNA documentation.
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.
- Configure an Install Capture Virtual Machine in AppDNA
- Edit / Settings / Install Capture Virtual Machines
- Name it, for example Cloudhouse Auto Package Virtual Machine
- Select the Packaging Machine as the VM
- Create a snapshot with the packager installed
- Make sure you can contact the machine and perform the Test during configuration
- 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
- 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 Else ' 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 Else 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
- In the Associated Outcome drop down, select Incompatible App: Try Cloudhouse
- In the Scenario window, select Windows 10 Primary, Secondary App-V and right click and select New Task Script
- 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 controller.AbortOnCancel() ' 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