## Working with TurboStudio

TurboStudio is a desktop application that allows you to convert any Windows application into a self-contained virtual application. Virtual applications can be delivered as standalone executables, MSIs or Turbo images.

The GUI allows users to easily edit complex configurations for applications that may require complicated settings. Whereas Turbo's command line tool builds images from containers, TurboStudio uses static XML files (.xappl) to build images. More information about the XAPPL file format is available in the XAPPL reference.

Once created with TurboStudio, the command-line interface builds these XAPPL files into images that you can push to the Turbo Hub. Click here for a specific example.

TurboStudio also provides two unique methods for creating images and virtual applications:

1. Desktop scan for installed applications: This option will scan your desktop for installed applications and build an image or virtual application using content and settings from the desktop.

2. Snapshot an application or component: In this method, snapshots capture the system state before and after an application is installed. Based on the observed system changes, the virtual application settings are automatically configured. This method is ideal for virtualizing off-the-shelf applications or ones that use complex MSI installer packages that would be incompatible with the command-line interface.

TurboStudio offers a user interface to manage custom images and virtual applications as well as additional creation methods not available in the command-line interface.

TurboStudio runs on any Windows operating system, including systems running within VMware and Microsoft hardware virtualization and hypervisor environments. TurboStudio has limited support for the Windows Preinstallation Environment (WinPE), though certain applications (depending on operating system features unavailable in WinPE) may not function properly.

TurboStudio supports both 32- and 64-bit applications. Both 32-bit (under 32-bit mode) and 64-bit executables can be run on x64-based platforms.

Note: TurboStudio does not support creation of 16-bit executables. To run 16-bit DOS applications, virtualize an appropriate emulator with the application and launch the application through the emulator.

Download a free 30-day trial here or try the free, express version.

### Snapshotting an Install

When using the snapshot method to containerize an application, it is important to start with a clean system so that no components are missed during the capture and diff process.

The snapshot process can be performed on a virtual machine or a physical machine. Typically a virtual machine is used so that the system can easily be reset in case the process needs to be repeated.

There are many options for virtual machine software including VMWare Workstation, Oracle Virtual Box (free) and Microsoft Virtual PC. In this example I will be using Oracle Virtual Box.

In this example we will be creating a snapshot of Google Chrome.

#### Using the Wizard to Capture the Application Install

Select the third option in the Wizard, Snapshot a third-party application or component.

Select Next on the following screen to capture the "before" snapshot.

Chrome can be installed in two different locations on the system. The standard location is underneath the Current User profile. There is another enterprise installer available on the Google website for installing Chrome under Program Files. In this example the enterprise location will be used, but both approaches will be discussed in the following steps.

Launch Chrome.

Close the open tabs and then exit Chrome (ensure it is not running in the background by checking the system tray and task manager) .

Navigate to Services. Disable both Google Chrome update services.

Open %LOCALAPPDATA%\Google\Chrome\User Data\Default\Preferences with Notepad. Configure the preferences as you see fit. In this example, we set the following configuration:

{
"homepage_is_newtabpage" : true,
"browser" : {
"show_home_button" : true,
"check_default_browser" : false
},

"extensions_to_open": "",

},
"bookmark_bar" : {
"show_on_all_tabs" : true
},
"distribution" : {
"msi" : true,
"system_level" : true,
"verbose_logging" : true,
"skip_first_run_ui" : true,
"show_welcome_page" : true,
"import_search_engine" : true,
"import_history" : false,
"create_all_shortcuts" : false,
"do_not_launch_chrome" : true,
"make_chrome_default" : false
},
"first_run_tabs" : [
"welcome_page",
"new_tab_page"
]
}


Click Next.

Create a folder named Chrome and Click OK.

Click Next.

Click Next.

Click Next.

Enter filename as chrome49 and then click Save.

Navigate to FileSystem and delete the Update folder found in the install directory.

Delete the Installer folder.

Navigate to Local Application Data (Low Integrity). Delete the Microsoft folder, if it exists.

Navigate to Application Data. Delete the Microsoft folder, if it exists.

Navigate to Registry then navigate to current user root > software. Delete the Microsoft folder.

Repeat this step for:

local machine root\SOFTWARE\Wow6432Node\Microsoft local machine root\SOFTWARE\Microsoft

Navigate to Registry then navigate to current user root > SOFTWARE and set the Google key's isolation setting to Full.

Repeat this for: local machine root\SOFTWARE\Wow6432Node\Google

Navigate to Settings->Process Configuration.

Check the checkboxes for Enable windows class isolation and Always launch child processes as current user.

Set the project type to component and then click Build.

Click Ok to finish and close TurboStudio.

Copy the created Chrome foldeer that contains the svm file from your VM to a fileshare.

#### UI Basics

TurboStudio enables you to embed a virtual filesystem into your executable. Embedded files are accessible by your Turbo-processed application as if they were present in the actual filesystem. Virtual files are isolated from the host device. Virtual files do not require security privileges on the host device regardless of whether the virtual files reside in a privileged directory. Because virtual files are embedded in the application executable, shared DLLs do not interfere with those installed by other applications on the host device.

• The Start Menu button, or the circle at the top left of the window, enables virtual application configurations to be created, opened, saved, imported, applied, and closed.
• The Options bar provides TurboStudio customization options, the ability to set proxy settings, and install certificates.
##### Ribbon Bar
• The Virtual Application tab provides access to the snapshot, build features, and output configuration options such as the startup file, output directory, and diagnostic-mode selection.
• The Runtimes tab provides a selection of auto-configurable runtime engines which can be embedded into your application. These include .NET Framework, Java, Flash, Shockwave, Acrobat Reader, and SQL Server 2005 Express.
• The Advanced tab provides functions such as Platform Merge and Streaming.
##### Left-side Button Panes
• The Filesystem pane displays the application virtual filesystem and enables you to add and remove virtual files and directories.
• The Registry pane displays the application virtual registry and enables you to add and remove virtual registry keys and data values.
• The Settings pane enables you to configure virtual application metadata, startup image, startup/shutdown shims, and process configuration options.
• The Network pane enables you to configure virtual application proxy and DNS settings.
• The Components pane enables you to add external virtual application components.
• The Setup pane enables you to configure the MSI setup package, shortcuts, and other shell integration options.
• The Expiration pane enables you to configure application expiration options.

Note: TurboStudio users are responsible for any third-party licensing compliance for redistributable components included using virtualization.

#### Virtual Filesystem

TurboStudio enables you to embed a virtual filesystem into your executable. Embedded files are accessible by your Turbo-processed application as if they were present in the actual filesystem. Virtual files are isolated from the host device. Virtual files do not require security privileges on the host device regardless of whether the virtual files reside in a privileged directory. Because virtual files are embedded in the application executable, shared DLLs do not interfere with those installed by other applications on the host device.

In the event of a conflict between a file in the virtual filesystem and a file present on the host device, the file in the virtual filesystem takes precedence.

Note: When running a virtual application on Windows 7, the All Users Directory\Application Data and All Users Directory root folders will map to the same folder at runtime. To prevent one setting from overriding another, verify that the isolation settings for these folders are the same.

##### Isolation Modes

Folders may be virtualized in Full, Merge, Write Copy, or Hide mode.

• Full: Full mode is used when the directory is required to be completely isolated from the host device. Only files in the virtual filesystem are visible to the application even if a corresponding directory exists on the host device. Any writes to files are redirected to the sandbox data area.
• Merge: Merge mode is used when the directory is required to have some level of interaction with the host device. Files will be visible from both the virtual filesystem and the host device. Any writes to files which are new or already exist on the host device will pass through and be written to the host device. Any writes to files that are in the virtual filesystem will be written to the sandbox data area.
• Write Copy: Write Copy mode is used when the directory is required to have visibility to files on the host device but cannot change them. Files will be visible from both the virtual filesystem and the host device. Any writes to files are redirected to the sandbox data area.
• Hide: Hide mode is used when a directory on the host device could interfere with the application's ability to run properly. The application will receive a File Not Found error code whenever an attempt is made to read from or write to files in the directory even if the files exist on the host device.

Tip: To apply selected isolation modes to all subfolders, right-click on the folder, choose Isolation, select the checkbox for Apply to Subfolders, then select OK.

##### File Attributes
• Hidden: Files and folders can be hidden from shell browse dialogs and other applications. This is used to prevent internal components and data files from being displayed to the user. To hide a file or folder, select the checkbox in the Hidden column adjacent to the desired file or folder. Note: The Hidden Flag is NOT the same as the Hide isolation mode. Enabling the Hidden Flag prevents a file or folder from displaying in browse dialogs or from directory enumeration APIs; it does not prevent the application (and potentially the end-user) from accessing the folder or file contents by direct binding. To prevent the file or folder from being found by the application, enable Hide isolation mode.
• Read Only: Flagging files and folders as read-only prevents the application from modifying the file or folder contents. To make a file or folder read-only, select the checkbox in the Read Only column next to the desired file or folder.
• No Upgrade: By default, files in the virtual filesystem can be upgraded with patches (refer to "Updating Registration Settings" in the Register Virtual Applications in the Windows Shell section for more information). If there are files in the virtual filesystem that should not be upgraded, such as user data files, select the checkbox in the No Upgrade column next to the desired file or folder.
• No Sync: This feature only applies to virtual applications that are delivered and managed by Turbo Virtual Desktop Server. By default, files in the virtual filesystem can be synchronized to a user's Turbo account. This enables the application state to be maintained across different devices that are Turbo enabled. If there are folders in the virtual filesystem that should not be synchronized and remain only on the local device, select the checkbox in the No Sync column next to the desired file or folder. This setting is managed on a folder level and applies to all files within that folder.
##### Filesystem Compression

To reduce executable size, TurboStudio can compress virtual filesystem contents. This reduces virtual application size by approximately 50% but also prevents profiling and streaming of the application. By default, the Compress Payload option in the Process Configuration area of the Settings panel is unchecked. Leave this box unchecked during the build process if the application will be optimized for streaming from Turbo Virtual Desktop Server.

Note: Disabling payload compression may significantly increase the size of the virtual application binary.

#### Virtual Registry

TurboStudio enables you to embed a virtual registry into your executable. Embedded registry keys are accessible by your Turbo-processed application as if they were present in the actual registry. Virtual registry keys are isolated from the host device. Virtual registry keys do not require security privileges on the host device regardless of whether the virtual files reside in a privileged directory. Because virtual registry entries are embedded in the application executable, other applications are unable to disrupt application execution by inadvertent modification of registry entries.

The Classes root, Current User root, Local Machine root, and Users root folders correspond to the HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, and HKEY_USERS keys on the host machine.

Registry string values can include well-known variables such as @WINDIR@, @SYSWOW64@, @PROGRAMFILESX86@ and @PROGRAMFILES@.

In the event of a conflict between a key or value in the virtual registry and data present on the host device registry, information in the virtual registry takes precedence.

##### Isolation Modes

Keys may be virtualized in Full, Merge, Write Copy, or Hide mode.

• Full: Full mode is used when the key is required to be completely isolated from the host device. Only values in the virtual registry are visible to the application even if a corresponding key exists on the host device. Any writes to values are redirected to the sandbox data area.

• Merge: Merge mode is used when the key is required to have some level of interaction with the host device. Values will be visible from both the virtual registry and the host device. Any writes to values which are new or already exist on the host device will pass through and be written to the host device. Any writes to values that are in the virtual registry will be written to the sandbox data area.

• Write Copy: Write Copy mode is used when the key is required to have visibility to values on the host device but cannot change them. Values will be visible from both the virtual registry and the host device. Any writes to values are redirected to the sandbox data area.

• Hide: Hide mode is used when a key on the host device could interfere with the application's ability to run properly. The application will receive a Key Not Found error code whenever an attempt is made to read from or write to values in the key even if the values exist on the host device.

Tip: To apply selected isolation modes to all subkeys, right-click on the key, choose Isolation, select the checkbox for Apply to Subkeys, then OK.

• No Sync: This feature only applies to virtual applications that are delivered and managed by Turbo Virtual Desktop Server. By default, keys and values in the virtual registry can be synchronized to a user's Turbo account. This enables the application state to be maintained across different devices that are Turbo enabled. If there are keys in the virtual registry that should not be synchronized and remain only on the local device, select the checkbox in the No Sync column next to the desired key. This setting is managed on a key level and applies to all values within that folder.

##### Importing Registry Hive Files

TurboStudio can import registry hive (.reg) files into the virtual registry. To import a .reg file, select the Import button in the Registry panel, then choose the registry hive file to import.

#### Runtimes and Components

Many components and runtime systems consist of large, complex sets of filesystem entries and registry settings. TurboStudio contains a collection of pre-configured component settings which can be added to your virtual application with a single click. For example, if your application is a .NET Framework 4.0 application, then selecting the .NET Framework 4.0 component will allow your executable to run on machines without the .NET Framework installed.

Additional runtimes and components are added to the virtual application during the snapshot process, before the after snapshot is taken.

To add a runtime or component:

1. Select the Runtimes tab on the ribbon bar.
2. Select the appropriate runtime or component. Selected components are indicated with a highlighted button. To remove a component, click on the button again. The button will no longer be highlighted and the component will not be included.

Note: The displayed runtimes apply to the currently selected target architecture (see process settings). If the target architecture is changed, architecture specific runtimes, like .NET 2 or .NET 3.x will still be included but will not display as selected. To deselect them, the target architecture must be changed back, and the runtimes can be deselected.

Note: Depending on the size of the component, the executable size can significantly increase. Only select components that are required for proper execution of your application.

Note: You are responsible for compliance with licensing for any third-party redistributable components included in your virtualized application.

##### Using .NET Runtimes

To limit conflicts with installed .NET runtimes, the .NET runtime packages are isolated from the native file system. If the application requires access to multiple .NET versions, it is necessary to include all of the required runtimes in the virtual package. For example, including only the .NET 4 runtime will hide visibility to the .NET 3.5 runtime on the native file system. This is fine if the application only requires the .NET 4 components, but would be problematic if it also requires earlier versions of .NET.

An alternative approach would be to use the snapshot feature of TurboStudio to build a custom .NET component for the application. This approach provides visibility into the files and registry keys that are available and allows for custom isolation settings.

#### Configuring the Java Runtime

TurboStudio provides specialized support for the Java runtime. If your application is based on Java runtime, select the Sun Java Runtime button on the Runtimes ribbon bar. This displays the Java configuration menu.

Select the appropriate version of the Java runtime from the Java runtime version drop-down menu. If you deploy your application as a set of .class files, select Class from the Startup Type drop-down menu; if you deploy within a .jar file, select Jar. Enter the startup class name or Jar name in the appropriate textbox, along with any additional Java runtime options.

### Desktop Scan

TurboStudio can scan the machine where it is installed and build container packages using the content and settings from that machine. The Desktop Scan supports applications available in the Turbo library of applications.

#### Running a Desktop Scan

1. Open the Configuration Wizard from the container tab.

2. Click the button next to Scan desktop for installed applications.

3. A progress window displays while the filesystem and registry are scanned for application identifying information.

4. Once the scan is completed, the user has a chance to review the applications that were found on the system. Clicking Next matches the information against the database of known applications.

• A list of installed applications that match the available applications from Turbo is displayed. Check the box next to the applications to be packaged and click Next.
1. For some applications, there may be multiple options (such as language). Choose the option that matches the installed application on the desktop.

2. Choose the Location where the packaged applications will be placed.

3. Choose the Output format of the application packages then click Next. For compatibility with the command-line interface and the hub, choose Component.

4. A progress window displays while the selected applications are packaged. This process can take several minutes depending on the size and number of applications selected.

5. Once the process is finished, a window displays showing the results. If multiple applications are selected to be packaged, the status of each will be displayed. If one application fails to be packaged, it is possible for the other selected applications to build successfully.

Applications packaged with this method retain users settings that were in place at the time of the scan.

Optional: Import to local registry using the command-line interface

Images built with TurboStudio can also be used with the command-line interface and the hub.

# Import the image to your local registry
> turbo import -n=desktopapp svm C:\path\to\app.svm

# Push it to the hub
> turbo push desktopapp


#### Best Practices

• Users should run the desktop scan on the oldest operating system version available. For example, if users use both Windows XP and Windows 7, it is advised to run the desktop scan on the Windows XP machine.

• The exception is with Microsoft Office. For the Microsoft Office Suite, it is recommended to run the scan from the operating system where it is intended to be used.

• When scanning OpenOffice, it is recommended to scan the version available with Java. This will allow the packaged application to function on machines that do not have Java installed as well as machines that do. It is also possible that the desktop scan will not find an installation of OpenOffice that does not include Java.

• Applications packaged with the desktop scan may retain settings from the local machine used during the packaging process.

• Adobe Creative Suite (all versions) will not complete correctly when scanned from Windows Vista. When using the desktop scan to package Adobe Creative Suite, Windows XP or Windows 7 is recommended.

• When using the desktop scan with browsers, ensure that any plugins that are installed outside the browser, such as Windows Media Player, are already installed when the scan is run. This is important because some plugins are installed using the msiexec.exe process and won't be recognized within the virtualized browser. Plugins that are installed from within the browser, such as Adobe Flash, do not have this problem.

#### Troubleshooting

To enable logging for the desktop scan add the following registry key:

  [HKEY\_CURRENT_USER\Software\Code Systems\Turbo]
"TraceLevel"="Debug"


Open DebugView while running the Desktop Scan to view logging information.

### UI Basics

Using TurboStudio enables you to configure the filesystem and registry of a container, embed external runtimes and components, take application snapshots, and create Turbo Virtual Machine (SVM) or executable files. The primary interface consists of a ribbon bar along the top and several panes accessed by buttons on the left.

#### Title Bar

• The Start Menu button, or the circle at the top left of the window, enables container configurations to be created, opened, saved, imported, applied, and closed.
• The Options bar provides TurboStudio customization options, the ability to set proxy settings, and install certificates.

#### Ribbon Bar

• The container tab provides access to the snapshot, build features, and output configuration options such as the startup file, output directory, and diagnostic-mode selection.
• The Runtimes tab provides a selection of auto-configurable runtime engines which can be embedded into your application. These include .NET Framework, Java, Flash, Shockwave, Acrobat Reader, and SQL Server 2005 Express.
• The Advanced tab provides functions such as Platform Merge and Streaming.

#### Left-side Button Panes

• The Filesystem pane displays the application virtual filesystem and enables you to add and remove virtual files and directories.
• The Registry pane displays the application virtual registry and enables you to add and remove virtual registry keys and data values.
• The Settings pane enables you to configure container metadata, startup image, startup/shutdown shims, and process configuration options.
• The Network pane enables you to configure container proxy and DNS settings.
• The Components pane enables you to add external container components.
• The Setup pane enables you to configure the MSI setup package, shortcuts, and other shell integration options.
• The Expiration pane enables you to configure application expiration options.

Note: TurboStudio users are responsible for any third-party licensing compliance for redistributable components included using virtualization.

#### Virtual Filesystem

TurboStudio enables you to embed a virtual filesystem into your executable. Embedded files are accessible by your Turbo-processed application as if they were present in the actual filesystem. Virtual files are isolated from the host device. Virtual files do not require security privileges on the host device regardless of whether the virtual files reside in a privileged directory. Because virtual files are embedded in the application executable, shared DLLs do not interfere with those installed by other applications on the host device.

In the event of a conflict between a file in the virtual filesystem and a file present on the host device, the file in the virtual filesystem takes precedence.

Note: When running a container on Windows 7, the All Users Directory\Application Data and All Users Directory root folders will map to the same folder at runtime. To prevent one setting from overriding another, verify that the isolation settings for these folders are the same.

##### Isolation Modes

Folders may be containerized in Full, Merge, Write Copy, or Hide mode.

• Full: Full mode is used when the directory is required to be completely isolated from the host device. Only files in the virtual filesystem are visible to the application even if a corresponding directory exists on the host device. Any writes to files are redirected to the sandbox data area.
• Merge: Merge mode is used when the directory is required to have some level of interaction with the host device. Files will be visible from both the virtual filesystem and the host device. Any writes to files which are new or already exist on the host device will pass through and be written to the host device. Any writes to files that are in the virtual filesystem will be written to the sandbox data area.
• Write Copy: Write Copy mode is used when the directory is required to have visibility to files on the host device but cannot change them. Files will be visible from both the virtual filesystem and the host device. Any writes to files are redirected to the sandbox data area.
• Hide: Hide mode is used when a directory on the host device could interfere with the application's ability to run properly. The application will receive a File Not Found error code whenever an attempt is made to read from or write to files in the directory even if the files exist on the host device.

Tip: To apply selected isolation modes to all subfolders, right-click on the folder, choose Isolation, select the checkbox for Apply to Subfolders, then select OK.

##### File Attributes
• Hidden: Files and folders can be hidden from shell browse dialogs and other applications. This is used to prevent internal components and data files from being displayed to the user. To hide a file or folder, select the checkbox in the Hidden column adjacent to the desired file or folder. Note: The Hidden Flag is NOT the same as the Hide isolation mode. Enabling the Hidden Flag prevents a file or folder from displaying in browse dialogs or from directory enumeration APIs; it does not prevent the application (and potentially the end-user) from accessing the folder or file contents by direct binding. To prevent the file or folder from being found by the application, enable Hide isolation mode.
• Read Only: Flagging files and folders as read-only prevents the application from modifying the file or folder contents. To make a file or folder read-only, select the checkbox in the Read Only column next to the desired file or folder.
• No Upgrade: By default, files in the virtual filesystem can be upgraded with patches (refer to "Updating Registration Settings" in the Register containers in the Windows Shell section for more information). If there are files in the virtual filesystem that should not be upgraded, such as user data files, select the checkbox in the No Upgrade column next to the desired file or folder.
• No Sync: This feature only applies to containers that are delivered and managed by Turbo Virtual Desktop Server. By default, files in the virtual filesystem can be synchronized to a user's Turbo account. This enables the application state to be maintained across different devices that are Turbo enabled. If there are folders in the virtual filesystem that should not be synchronized and remain only on the local device, select the checkbox in the No Sync column next to the desired file or folder. This setting is managed on a folder level and applies to all files within that folder.
##### Filesystem Compression

To reduce executable size, TurboStudio can compress virtual filesystem contents. This reduces container size by approximately 50% but also prevents profiling and streaming of the application. By default, the Compress Payload option in the Process Configuration area of the Settings panel is unchecked. Leave this box unchecked during the build process if the application will be optimized for streaming from Turbo Virtual Desktop Server.

Note: Disabling payload compression may significantly increase the size of the container binary.

#### Virtual Registry

TurboStudio enables you to embed a virtual registry into your executable. Embedded registry keys are accessible by your Turbo-processed application as if they were present in the actual registry. Virtual registry keys are isolated from the host device. Virtual registry keys do not require security privileges on the host device regardless of whether the virtual files reside in a privileged directory. Because virtual registry entries are embedded in the application executable, other applications are unable to disrupt application execution by inadvertent modification of registry entries.

The Classes root, Current User root, Local Machine root, and Users root folders correspond to the HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, and HKEY_USERS keys on the host machine.

Registry string values can include well-known variables such as @WINDIR@, @SYSWOW64@, @PROGRAMFILESX86@ and @PROGRAMFILES@.

In the event of a conflict between a key or value in the virtual registry and data present on the host device registry, information in the virtual registry takes precedence.

##### Isolation Modes

Keys may be containerized in Full, Merge, Write Copy, or Hide mode.

• Full: Full mode is used when the key is required to be completely isolated from the host device. Only values in the virtual registry are visible to the application even if a corresponding key exists on the host device. Any writes to values are redirected to the sandbox data area.

• Merge: Merge mode is used when the key is required to have some level of interaction with the host device. Values will be visible from both the virtual registry and the host device. Any writes to values which are new or already exist on the host device will pass through and be written to the host device. Any writes to values that are in the virtual registry will be written to the sandbox data area.

• Write Copy: Write Copy mode is used when the key is required to have visibility to values on the host device but cannot change them. Values will be visible from both the virtual registry and the host device. Any writes to values are redirected to the sandbox data area.

• Hide: Hide mode is used when a key on the host device could interfere with the application's ability to run properly. The application will receive a Key Not Found error code whenever an attempt is made to read from or write to values in the key even if the values exist on the host device.

Tip: To apply selected isolation modes to all subkeys, right-click on the key, choose Isolation, select the checkbox for Apply to Subkeys, then OK.

• No Sync: This feature only applies to containers that are delivered and managed by Turbo Virtual Desktop Server. By default, keys and values in the virtual registry can be synchronized to a user's Turbo account. This enables the application state to be maintained across different devices that are Turbo enabled. If there are keys in the virtual registry that should not be synchronized and remain only on the local device, select the checkbox in the No Sync column next to the desired key. This setting is managed on a key level and applies to all values within that folder.

##### Importing Registry Hive Files

TurboStudio can import registry hive (.reg) files into the virtual registry. To import a .reg file, select the Import button in the Registry panel, then choose the registry hive file to import.

#### Runtimes and Components

Many components and runtime systems consist of large, complex sets of filesystem entries and registry settings. TurboStudio contains a collection of pre-configured component settings which can be added to your container with a single click. For example, if your application is a .NET Framework 4.0 application, then selecting the .NET Framework 4.0 component will allow your executable to run on machines without the .NET Framework installed.

Additional runtimes and components are added to the container during the snapshot process, before the after snapshot is taken.

To add a runtime or component:

1. Select the Runtimes tab on the ribbon bar.
2. Select the appropriate runtime or component. Selected components are indicated with a highlighted button. To remove a component, click on the button again. The button will no longer be highlighted and the component will not be included.

Note: The displayed runtimes apply to the currently selected target architecture (see process settings). If the target architecture is changed, architecture specific runtimes, like .NET 2 or .NET 3.x will still be included but will not display as selected. To deselect them, the target architecture must be changed back, and the runtimes can be deselected.

Note: Depending on the size of the component, the executable size can significantly increase. Only select components that are required for proper execution of your application.

Note: You are responsible for compliance with licensing for any third-party redistributable components included in your containerized application.

##### Using .NET Runtimes

To limit conflicts with installed .NET runtimes, the .NET runtime packages are isolated from the native file system. If the application requires access to multiple .NET versions, it is necessary to include all of the required runtimes in the virtual package. For example, including only the .NET 4 runtime will hide visibility to the .NET 3.5 runtime on the native file system. This is fine if the application only requires the .NET 4 components, but would be problematic if it also requires earlier versions of .NET.

An alternative approach would be to use the snapshot feature of TurboStudio to build a custom .NET component for the application. This approach provides visibility into the files and registry keys that are available and allows for custom isolation settings.

##### Configuring the Java Runtime

TurboStudio provides specialized support for the Java runtime. If your application is based on Java runtime, select the Sun Java Runtime button on the Runtimes ribbon bar. This displays the Java configuration menu.

Select the appropriate version of the Java runtime from the Java runtime version drop-down menu. If you deploy your application as a set of .class files, select Class from the Startup Type drop-down menu; if you deploy within a .jar file, select Jar. Enter the startup class name or Jar name in the appropriate textbox, along with any additional Java runtime options.

### Snapshotting

Many applications require combinations of filesystem and registry entries. To facilitate containerization of these applications, TurboStudio can snapshot application installations and automatically configure them based on modifications made to the host system during setup.

#### Process

Snapshots use before and after images of the host machine to determine configuration:

• Before: This snapshot is taken prior to installing the application and captures the state of the host device without the target application installed.

• After: This snapshot is taken after installing the application and captures all changes to the host device during application installation. TurboStudio then computes the changes between the before and after snapshots, and inserts these changes into the configuration.

Complete the following steps to use the Snapshot feature:

1. Prepare the host device: remove the target application and all dependencies or copy TurboStudio onto a clean machine.

2. Capture the before image: select the Virtual Application tab on the ribbon bar and then Capture Before. This may take several minutes to complete.

3. Save the before snapshot (optional): saving the before snapshot enables you to skip this step in subsequent applications from the same clean machine. Select the down arrow underneath Capture Before and choose Save Snapshot. TurboStudio automatically saves the most recently captured before snapshot; this snapshot is reset once the Capture and Diff is complete.

4. Install your application: also install any other files, settings, runtimes, and components you want to include in the image. Refer to Add Runtimes and Components for more information. If the application setup requests a reboot, save the before snapshot, then proceed with the reboot.

5. Capture the after image: on the Virtual Application tab on the ribbon bar, select Capture and Diff. This captures the after snapshot, computes the deltas between the two snapshots, and populates the image with the delta entries.

6. Review the filesystem and registry entries: also remove any files or settings which are not required for proper execution of your container. Removing unused entries will reduce image size. Avoid accidental removal of required resources, as it will cause your image to no longer function properly.

#### Capture Application Updates via Snapshot

Container updates can be captured within TurboStudio via snapshots.

Complete the following steps to capture an update via snapshots:

1. Install the native version of the application on a clean machine.

2. Select Capture Before.

3. Install necessary updates to the native application.

4. Select Capture and Diff to create the after snapshot. This captures the deltas between the original and updated versions.

5. Set the Project Type to Component, then select Build to create the SVM.

This process only captures changes between the original executable and installed updates. You can then apply the resulting SVM to the original virtual package.

For more information on updating containers using SVMs, refer to Create and Use Shared Virtual Components and Specify Additional SVMs for a container.

#### Best Practices

• Performing the snapshot on a clean machine ensures that all dependencies are installed by the application setup. Installing on a machine with existing components can inadvertently include dependencies in the before snapshot and exclude them from the final output.

• If you configure a clean machine using whole-machine virtualization tools such as Microsoft Virtual PC and save a before snapshot based on this image you can snapshot many distinct containers in rapid succession by reverting the whole-machine virtual state and using the same before snapshot.

• Most applications should be configured by performing the snapshot on the earliest (least common denominator) target operating system. A small number of applications may require multi-platform merge for successful deployment across all operating system variants.

• When selecting a folder to save the Capture and Diff snapshot, select Make New Folder in TurboStudio. This folder will not be included in the snapshot. If the folder is included in the Capture and Diff snapshot, remove it using the Filesystem tab.

• Before beginning the pruning process, save a backup of the Capture and Diff snapshot (snapshot.xappl). Revert to the original Capture and Diff snapshot in the event of an error.

• Run and use the native application to understand what registry keys and folders are updated at runtime. This will help determine the proper isolation settings for folders and registry keys.

• To determine if a folder should be set to full isolation or merge isolation, decide if the user would want access to files created within that folder outside the container environment. If yes, the folder should be set to merge, if no, full.

• Remove uninstall shortcuts during the pruning process.

### MSI Settings

The following is a table of descriptions of the settings that you can use for MSI outputs from TurboStudio.

Setting Description
Output location Name and location of the MSI file output.
Product Info Meta data that will go into Add/Remove Programs when the application is installed.
• Product Name
• Product Version
• Company Name
Installation Parameters Specifies where to install the application and if it will be installed for all users or in the current user profile.
Shortcuts List of Start Menu and Desktop shortcuts that are created when the MSI is installed.
ProgIds List of ProgIds that are created on the host system when the MSI is installed.
Extensions List of file extensions that are configured on the host system when the MSI is installed.
### Building from the Command Line

The command-line version of TurboStudio is called XStudio.exe and can be found in the TurboStudio installation directory. See below for a list of command-line arguments and options for the XStudio tool.

Command Usage Description
<path to XAPPL configuration file> /l <path to license file> [/o <path to output>] [/component] [/d] [/compressed] [/uncompressed] [/deletesandbox] [/v <version>] [/startupfile <virtual path to file>]

Builds the virtual application based on the application configuration file.

/l - Path the the license file. The license file needs to be stored in Unicode format.

/o - Path to the output file. This will override the setting in the XAPPL configuration file.

/component - Sets the Project Type to Component resulting in an SVM output rather than EXE output.

/d - Enables the Generate diagnostic-mode executable setting.

/compressed - Enables the Compress payload setting.

/uncompressed - Disables the Compress payload setting.

/deletesandbox - Enables the Delete sandbox on application shutdown setting.

/v - Sets the Version of the output exe.

/startupfile - Sets the Startup File of the virtual application.

/before

/beforepath <path to where snapshot file is saved>

Performs a before snapshot and saves the snapshot to the specified folder.

/beforepath - Path to the where the snapshot file is saved.

/after

/beforepath <path to where snapshot is saved> /o <path to where XAPPL configuration file is saved>

Performs an after snapshot using the specified before snapshot path.

/beforepath - Path to the before snapshot file.

/o - Path to where the XAPPL configuration file is saved.

/import

/i <path to the configuration file to be imported> /o <path to where XAPPL configuration file is saved>

Import MSI, AXT, or ThinApp configurations.

/i - Path to the configuration file to import.

/o - Path to where the XAPPL configuration file is saved.

/sandboxmerge

/i <input-config> /o <output-config> <sandbox-path>

Merge configuration and sandbox.

/i - Path to source configuration file.

/o - Path to output merged configuration file.

sandbox-path - Path to sandbox.

/vmsettings

/i <input-file-xappl-exe-svm> [name]

Getting virtualization settings from the configurations file or application.

/i - Path to the configuration file (xappl, exe or svm).

name - Name of settings or empty for all settings.

/pathreplace

[/reg] [/revert] <path>

Replace path from native to virtual format.

/reg - Path is a register path instead of filesystem path.

/revert - Revert path from virtual to native format.

path - Path to replace.

/nologo

Switch for suppress printing copyrigth and logo information.

**Note:** Configuration files that are generated from the command-line after using the **/after** flag do not have an output file specified in the **XAPPL** configuration file. When using scripting for snapshots, it may be necessary to apply changes to the generated **XAPPL** file, either manually or programmatically.

Note: If running XStudio displays the error, " is missing from the string table", it is because the XStudio application cannot be run while TurboStudio is also running. TurboStudio must be closed before running XStudio via the command line.

### Container Settings

The following is a table of the definitions and uses of features available in TurboStudio. These features allow you to edit and customize the settings for an image or virtual application configuration.

Setting Description
Startup File The executable or viewable file that opens when the user starts the virtual application. Multiple files can be selected by clicking the Multiple button.
Output File The name of the output file from TurboStudio build process.
Project Type Application: A virtual application project produces an executable file output (.exe file) that can be run directly from the operating system. Application output mode is appropriate for most users and is the default selection.

Component: A component project produces an SVM (.svm file). SVM is a Turbo file format which encode all virtual application configuration and content into a single binary file. SVMs cannot be executed directly from the operating system. SVMs are used to exchange virtual application and component data between multiple virtual applications.

Note: In order to create SVMs for use in streaming applications on Turbo Server, the project type must be set to Component.
Executable Metadata Standard metadata includes information such as product title, publisher, description, icon, web site URL, and version. By default, TurboStudio applies metadata inherited from the virtual application startup file to the output virtual application executable. To override the default meta data, uncheck the Inherit Properties box.

Custom metadata can be used by specialized external executable viewer applications, inventory scanners, and other asset and licensing management systems. For information on custom executable metadata, consult the Microsoft Windows Software Development Kit.
Startup Image A startup "splash" image to display during application startup. Startup images improve application branding and are useful when the application requires several seconds to initialize.

Transparency keying enables the startup image to contain transparent regions. Transparencies improve the visual effectiveness of your startup image.
Startup Shim Startup shims are used to perform customized licensing checks and other initialization tasks. The shim must conform to TurboStudio interface in order to validate.

The startup shim must compile with an OnInitialize method.

C-style startup shim signature

typedef BOOL (__stdcall *FnOnInititialize) (LPCWSTR pwcsInitilizationToken);

The return value indicates whether virtual machine execution proceeds.

Example
LPCWSTR pwcsInitToken = "VendorSpecificToken";HMODULE hShim = ::LoadLibrary("Shim.dll");FnOnInititialize fnOnInit = (FnOnInititialize)::GetProcAddress(hShim, "OnInitialize");BOOL fResult = fnOnInit(pwcsInitToken);
Directory Binding TurboStudio enables you to limit where an application will run, based on queries to an Active Directory Domain Controller.
Command Line Arguments Command line arguments specified by the user are passed to the virtual application startup executable by default. You can override and specify a fixed set of command line arguments to pass to the startup executable. For example, you can specify Java virtual machine behavior.
Sandbox Location By default, the sandbox is placed in the @APPDATALOCAL@\Turbo.net\Sandbox\@TITLE@\@VERSION@ folder, where @APPDATALOCAL@ represents the local Application Data folder, and @TITLE@ and @VERSION@ represent the application title and version. In addition to the standard root folder variables, the sandbox location can contain the following variables:

@TITLE@: Product title
@PUBLISHER@: Product publisher
@VERSION@: Full version string, in dotted quad format
@WEBSITE@: Publisher website
@BUILDTIME@: Virtual application build time, in a format similar to 2008.02.01T08.00.

With the exception of the @BUILDTIME@ variable (set automatically), these variables are based on the values specified in the Properties section of Settings.
Working Directory Working Directory determines the active directory at the time of process launch.

Use Startup File Directory sets the working directory to the directory of the virtual application startup file. In the case of a jukeboxed application, the working directory is set to the directory of the startup file specified on the jukebox command line.

Use Current Directory sets the working directory to the directory from which the virtual application is launched.

Use Specified Path enables you to specify a working directory. This specification can include environment and well-known root folder variables.

The working directory is set to the directory of the startup file by default.
Application Type If you select an executable startup file, TurboStudio automatically configures the virtual application to run in the same subsystem as the startup file. If you select a non-executable startup file, you must manually override the application type. Most applications execute in the GUI subsystem. To override the application type, select the mode from the Application Type menu in the Process Configuration section of the Settings panel. The Inherit mode sets the application type based on the type of the startup file.
Target Architecture Target Architecture is automatically captured during the snapshot process and generally should not be altered for applications packaged through the snapshot process.
• x86: Use this option for applications that were packaged using the snapshot process on x86 systems. This option maps the Program Files directory to C:\Program Files on x86 systems or to C:\Program Files (x86) on x64 systems. .NET applications compiled to target any CPU architecture always run as 32-bit applications.
• x64: Use this option for applications that were packaged using the snapshot process on x64 systems. This option maps the Program Files directory to C:\Program Files on x64 systems. The Program Files (x86) directory is mapped to C:\Program Files on x86 systems and C:\Program Files (x86) on x64 systems. .NET applications compiled to target any CPU architecture run as 32-bit applications on x86 systems and 64-bit applications on x64 systems.
• Any CPU: This option maps the Program Files directory to C:\Program Files on x86 systems and C:\Program Files on x64 systems. .NET applications compiled to target any CPU architecture run as 32-bit applications on x86 systems and 64-bit applications on x64 systems. Use this option to place a .NET application that is compiled to target any CPU architecture in the Program Files folder.
Environment Variables Most virtual environment variables overwrite any environment variables defined in the host environment. However, PATH and PATHEXT environment variables always merge with the corresponding host environment variables.

Environment variables are automatically captured and merged during the snapshot delta process.
Virtual Services Windows services are specialized applications that run in the background. They are typically responsible for providing system services such as database services, network traffic handling, web request processing, and other server functionality. Many applications install and require specific services in order to function properly. TurboStudio fully supports virtualization of certain Windows services.

Service installation and settings are captured automatically during the snapshot process. The primary exception occurs with virtualized applications intended to run as background worker services (for example, virtualized web servers); in this case, it is often required to enable the Keep Alive option.
SVMs You can specify additional SVM layers for applications, in the case of updates or patches.
Child Process Exceptions Some applications create new child processes while they run. Depending on the virtual application context, you can create such child processes within the virtual application, or in the host operating system.

Child processes include processes created to service COM local server requests.

Note: Child processes created outside of the virtual application cannot access virtualized filesystem or registry contents. These processes can access or modify host operating system contents, even if otherwise forbidden by the virtual application configuration.

Child processes are created within the virtual application by default. To manually create child processes outside of the virtual application, uncheck the Spawn child process within virtualized environment option.

COM servers are created outside the virtual environment by default to allow COM communication between native applications and virtual applications. To create COM servers within the virtual environment, check the Spawn COM servers within virtualized environment option.

You can determine exceptions to the child process virtualization behavior using the Child Process Exception List... Process names listed in the child process exception list behave opposite to the master child process virtualization setting. To edit the child process exception list, select the Child Process Exception List... button. Process names will match without including the filename extension.
Read-only Virtual Environments Prevent modifications to the virtual environment.
Automatic Sandbox Reset Any changes made to an application's virtual environment are reverted when the application closes.
Shutdown Process Tree On Root Process Exit Enables the shutdown of all child processes when the root process exits.

Note: The startup file is the root process by default. If a virtual service is specified in the application configuration file and is set to auto-start when the application is launched, the virtual service acts as the root process in the process tree.

Compress Payload Enables compression of the output file. Note: Both the application profiling and streaming processes require that packages be built uncompressed. To build applications without compression, leave the Compress payload option unchecked.
Startup Executable Optimization Launches the startup executable within the initial virtual machine process. This prevents the creation of a separate application process and can be incompatible with some applications.
Turbo Command-line Arguments Turbo supports command-line arguments of the /X[arg] form, which modify virtual application behavior at run-time. In rare instances, these arguments may conflict with command-line arguments designed for use by the virtualized application. To disable processing of these arguments, uncheck the Enable Turbo command-line arguments box.
Window Class Isolation Prevents viewing window classes that are registered by external processes. You can use this to prevent interaction between virtualized and non-virtualized versions of the same program when the application checks for existing class registrations.

Enhanced DEP Compatibility for Legacy Applications Enables compatibility for systems with Data Execution Protection (DEP) enabled. Use this configuration for virtual applications running on Windows 2003.
Enhanced DRM Compatibility Enables additional compatibility with common DRM systems, such as Armadillo.
Trace Process Starts in Debug Output Sends a notification to OutputDebugString whenever a new process is started within the virtual environment. This notification is in XML format and comes as a basic information description. It can be monitored with any debugging tool. You can also monitor the notification by a parent process within the virtual environment if a child process is being debugged.
Force Read-share Files Forces any file opened within the virtual environment to open with the READ_SHARE flag. Use this option to resolve compatibility issues caused by sharing violations.
Always Launch Child Processes as Current User Provide child processes with the same level of privileges as the virtual machine root process. Child processes launched by the virtual machine have reduced privileges by default.
Emulate Elevated Security Privileges Forces an application to run as if it has elevated security privileges, even if the application does not. Enabling this option eliminates UAC security prompts for elevation and subsequent application crashes.