Spoon Studio User Guide
Spoon Studio User Guide
1. Legal Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 What is a virtual application? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Spoon Studio features overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Do Spoon virtual applications require any device drivers? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 How is Spoon virtualization different from hardware virtualization? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 What platforms are supported? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 What applications can be virtualized using Spoon Studio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 System requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Control Panel Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Methods of creating virtual applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Creating your first virtual application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Configuring virtual applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Snapshotting Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Adding runtimes and components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 Loading and saving configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9 Specifying a startup file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10 Specifying multiple startup files (Jukeboxing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Editing the virtual filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Editing the virtual registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.13 Embedding a database engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.14 Creating and using shared virtual components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.15 Sandbox merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Virtual Application Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Selecting a project type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Customizing executable metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Adding a startup image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Compiling and adding a startup shim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Process configuration options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Configuring the sandbox location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Building MSI Setup Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 Configuring package information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Creating desktop and Start Menu shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Creating file associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Deploying Virtual Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Deploying using Spoon Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Deploying using the Publish to USB feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Registering virtual applications in the Windows shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Client profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Sandbox management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Deploying in Active Directory environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Deploying using the Spoon Virtual Desktop service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8 Deploying virtual applications using MSI setup packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 Deploying virtual applications using Microsoft Terminal Services RemoteApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Walkthroughs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 Manually configuring a simple virtual application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Building OpenOffice via snapshot process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1 Best practices for snapshotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Capturing updates to an application via snapshot process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Setting up and managing a build lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1 Customizing the Studio interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Quick snapshot mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3 Snapshotting Internet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 Well-known root folder variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 Building from the command line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6 Importing configurations from external tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7 Running native applications in virtual environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.8 Modifying virtualization behavior at run-time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.9 Specifying additional SVMs for a virtual application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.10 Platform merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.11 Creating application streaming models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.12 Application Expiration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.13 Applying the virtual application configuration to the host device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.14 Enabling shared object isolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.15 XAppl file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10. Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1 Problems accessing Internet-based resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Generating diagnostic-mode virtual applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11. Thank you for using Spoon Studio! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 3 3 3 3 4 4 4 5 5 5 5 5 6 6 6 7 7 8 8 8 9 10 11 11 12 12 12 12 13 13 14 17 18 18 19 19 19 19 20 20 22 22 23 25 26 26 27 27 27 30 30 30 31 32 32 33 33 33 34 34 35 35 35 36 37 37 37 38 38 44 44 44 44
Legal Notices
This section specifies legal notices as applicable to this product.
Disclaimer
To the maximum extent permitted by applicable law, Code Systems Corporation provides this product AS IS AND WITH ALL FAULTS, and disclaims all warranties and conditions, either express, implied or statutory, including, but not limited to, any implied warranties or conditions of MERCHANTABILITY, of fitness for a particular purpose, of accuracy or completeness, of results, and of lack of negligence, all with regard to this product. The entire risk as to the quality of or arising out of the use of this product remains with you. This product may contain technological defects and omissions, typographic errors, and technical inaccuracies. Code Systems Corporation may modify this product at any time. To the maximum extent permitted by applicable law, in no event shall Code Systems Corporation be liable for any special, incidental, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profits or confidential or other information, for business interruption, for personal injury, for loss of privacy, for failure to meet any duty including of good faith or of reasonable care, for negligence, and for any other pecuniary or other loss whatsoever) arising out of or in any way related to the use of or inability to use this product, the provision of or failure to provide Support Services, or otherwise in connection with any aspect of this product, even in the event of the fault, tort (including negligence), strict liability, breach of contract or breach of warranty of Code Systems Corporation, and even if Code Systems Corporation has been advised of the possibility of such damages. Code Systems Corporation's cumulative liability to you or any other party for any loss of damages resulting from any claims, demands, or actions arising out of or relating to this product shall not exceed the larger of the license fee paid to CODE SYSTEMS CORPORATION for the use of this product and U.S. $5.00.
Trademarks
Spoon, Xenocode Postbuild, and Spoon Studio are trademarks and/or registered trademarks of Code Systems Corporation. ZENworks Application Virtualization is a trademark of Novell, Inc. Microsoft, Windows, SQL Server, .NET, and .NET Framework are trademarks of Microsoft Corporation. All other trademarks are the property of their respective owner.
Overview
Thank you for using Spoon Studio! This product will allow you to convert your Windows, .NET, Java, AIR, Flash, Shockwave, or other Windows-compatible application into a self-contained virtual application that can be streamed from the web and run instantly on an end-user device. Unlike traditional deployment methods, virtual applications do not require reboots, administrative privileges, or separate setup steps for external components and runtimes. Virtual applications are isolated from other system applications, preventing DLL conflicts and other deployment nightmares. This guide explains how to use Spoon Studio to create your own virtual applications and begin enjoying the benefits of this next-generation deployment technology.
Because virtual applications run in isolated execution environments, it is possible to simultaneously execute multiple applications which would otherwise interfere with one another. For example, applications which overwrite system DLLs or require different runtime engine versions can all run simultaneously on a single host device. As an additional advantage, virtual applications can provide access to internal virtualized copies of privileged system resources, allowing unprivileged users to directly execute many applications without security exceptions or irritating Vista UAC prompts. Unlike other virtualization systems, Spoon virtual application technology: Does not require any "player" software or separate installation: Spoon virtual applications are executable files that run immediately on the end-user machine without changes to system infrastructure. Does not incur significant processing or filesystem overhead: Spoon low-overhead virtualization technology allows applications to run with essentially the same performance characteristics as native executables. Does not require any operating system to be installed onto the virtual application: Spoon virtual apps provide all required virtualized operating system functionality within the internal virtual environment.
any operating system compatible with the underlying virtualized hardware, such as Linux. Kernel mode virtualization: The Spoon Virtual OS only virtualizes user-mode operating system features, whereas hardware virtualization systems emulate the entire OS stack, including kernel mode components. Applications requiring device drivers or other non-user-mode software may require a hardware-virtualized environment to function properly. You should carefully evaluate the advantages and disadvantages of different virtualization approaches before deciding on a technology to adopt for your deployment scenario.
Getting Started
This section describes the system requirements for installing and running Spoon Studio, provides an overview of the Studio user interface, and walks you through the basic steps of creating a virtual application.
System requirements
Spoon Studio requires a Windows XP, Windows 2000 edition, or higher operating system. The Studio graphical interface assumes a screen resolution of at least 800600, although a screen resolution of at least 1024768 is highly recommended.
The Virtual Application tab provides access to the snapshot and build features, as well as 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 with a single click. These include .NET Framework, Java, Flash, and Shockwave runtimes. The Advanced tab provides advanced Studio functions such as Profiling and Platform Merge Functions in the main panel are accessed by clicking the appropriate buttons along the left side of the interface: The Start panel displays the latest Studio news, including updates, available licenses, and usage suggestions. The Filesystem panel displays the application virtual filesystem, and allows adding and removing virtual files and directories. The Registry panel displays the application virtual registry, and allows adding and removing virtual registry keys and data values. The Settings panel allows configuration of virtual application metadata, startup image, and process configuration options. The Components panel allows layering of external virtual application components, such as toolbars and optional features. The Setup panel allows configuration of MSI setup package and shell integration options. The Expiration panel allows configuration of application expiration options. Note: Studio users are individually responsible for assuring compliance with licensing for any third-party redistributable components included using virtualization.
Snapshotting Applications
Most commercial applications require complex combinations of filesystem and registry entries in order to function properly. In order to facilitate virtualization of these applications, Studio can snapshot application installations and automatically configure them based on modifications made to the host system during application setup.
Snapshotting
Snapshotting uses "before" and "after" images of the host machine to determine the virtual application configuration: "Before" snapshot: Taken prior to installing the application. This captures the state of the host device without the target application installed. "After" snapshot: Taken after installing the application. This captures all changes to the host device during application installation. Studio then computes the changes, or deltas, between the before and after snapshots, and inserts these changes into the configuration. To use the snapshot feature: Prepare the host device by either removing the target application and all dependencies, or copying Studio onto a "clean" machine. Click on the Virtual Application tab on the ribbon bar and click Capture Before. This captures the "before" snapshot image. Snapshotting iterates through the filesystem and registry, and therefore may take several minutes to complete. (Optional) Spoon recommends you save the "before" snapshot before continuing. This allows you to skip this step when snapshotting subsequent applications from the same clean machine image. To save the snapshot, click on the down arrow underneath the Capture Before button and select Save Snapshot. Note that while Studio automatically saves the most recent captured "before" snapshot, this snapshot is reset once the Capture and Diff process is complete. Install your application along with other files, settings, runtimes, and components you wish to include in the virtual application (Refer to the following sub-section "Adding runtimes and components" for more information on additional configuration). If the application setup requests a reboot, be sure to save the "before" snapshot and then proceed with the reboot. On the Virtual Application tab on the ribbon bar, click Capture and Diff. This captures the "after" snapshot, computes the deltas between the two snapshots, and populates the virtual application with the delta entries. (Optional) Review the filesystem and registry entries, and remove any files or settings which are not required for proper execution of your virtual application. Removing unused entries will reduce virtual application size, but be sure to avoid accidental removal of required resources, as it will cause your virtual application to no longer function properly.
Saving snapshots
In many cases, the desired "before" snapshot remains fixed while many "after" snapshots are taken. Studio allows you to save the "before" snapshot image so that the snapshot does not need to be re-captured each time. Because snapshotting may take several minutes, this significantly reduces the time required to build virtual applications in this scenario. To save the "before" snapshot, click on the down arrow underneath the Capture Before button on the Virtual Application ribbon bar and select Save Snapshot from the dropdown menu. Select an appropriate filename and location and press Save. Similarly, to load a saved snapshot, select the Load Snapshot menu item and navigate to the saved snapshot file. To clear the current "before" snapshot image, select the Clear Snapshot menu item.
To specify multiple startup files: Click the Multiple button next to the Startup File textbox on the Virtual Application ribbon bar. This displays the Startup Files selection dialog. Click on the File column on the first empty row in the startup file list and select the desired file from the dropdown list. Files located on the host device (outside of the virtual filesystem) may also be used as startup files. To select a file on the host device as the startup file, enter the full path to the desired startup file in the Startup File text box. Enter the desired command line arguments, if any, in the Command Line column. Enter the desired command line trigger in the Trigger column. For example, in the command line office word, the trigger would be word. Check the Auto Start checkbox if you want the startup file to always be automatically launched on virtual application startup. After adding a new startup file, hit Enter in order to save Note: When specifying a startup file located outside of the virtual filesystem, remember to use well-known root folder variables such as @WINDIR@ and @PROGRAMFILES@ as the root of the full path to ensure that the startup file can be properly located on all base operating systems. Note: The Auto Start flag can be specified for multiple startup files to automatically launch multiple applications that are typically used together in a single session (also known as "shotgunning").
Virtualization Semantics
In the event of a collision between a file in the virtual filesystem and a file physically present on the host device, the file in the virtual filesystem takes precedence. Folders may be virtualized in Full, Merge, Write Copy, or Hide mode: Full mode: Only files in the virtual filesystem will be visible to the application- even if a corresponding directory exists on the host deviceand writes are redirected to the sandbox data area. Full mode is generally used when a complete level of virtual application isolation is desired. Merge mode: Files present in a virtual folder will be merged with files in the corresponding directory on the host machine, if such a directory exists. Writes to host files are passed through to the host device and writes to virtual files are redirected into the sandbox data area. Merge mode is generally used when some level of interaction with the host device is desired. For example, Merge mode might be used to allow the virtualized application to write to the host device's My Documents folder. Write Copy mode: Files present on the host device are visible to the virtual environment, but any modifications to folder contents are redirected to the sandbox data area. Write Copy mode is generally used when a virtual application needs to read from files already present on the host device but isolation of the host device is still desired. Hide mode: Files and folders with Hide isolation enabled will return a 'File Not Found' message to the application at runtime. This applies to both the virtual filesystem and the host file system. Hide mode is generally used when a file on the host machine may interfere with the application's ability to run properly. By adding the file or folder to the virtual package with Hide isolation enabled, the application will receive a 'File Not Found' message, even if the file or folder exists on the host machine. Tip: To apply the selected isolation mode to all subfolders, right-click on the folder, choose Isolation, click on the checkbox for Apply to subfolders, and click OK.
File Attributes
Files and folders may optionally be hidden from shell browse dialogs and other applications enumerating virtual directory contents. This is often used to prevent internal components and data files from being displayed to the user. To hide a file or folder, click on the checkbox in the Hidden column next to the desired file or folder.
Note: The hidden flag should not be confused with Hide isolation mode. Enabling the hidden flag only prevents a file or folder from being displayed in browse dialogs or from directory enumeration APIs. It does not prevent the application, and therefore potentially the end-user, from accessing the folder or file contents by direct binding. In order to prevent the file or folder from being found by the application, Hide isolation mode should be enabled. Flagging files and folders as read-only will prevent the application from modifying the file or folder contents. To make a file or folder read-only, click on the checkbox in the Read Only column next to the desired file or folder.
Filesystem Compression
To reduce executable size, Studio can compress virtual filesystem contents. This typically reduces virtual application payload size by approximately 50%, but also prevents profiling and streaming of the app. By default, the Compress Payload option in the Process Configuration area of the Settings panel is unchecked. This option should remain unchecked during the build process in order to be able to profile and stream applications. Note: Disabling payload compression may significantly increase the size of the virtual application binary.
Virtualization Semantics
In the event of a collision between a key or value in the virtual filesystem and data present on the host device registry, information in the virtual registry takes precedence. Keys may be virtualized in Full, Merge, or Hide mode: Full mode: Only values in the virtual registry will be visible to the application- even if a corresponding key exists on the host device- and writes are redirected to the user registry area. Merge mode: Values present in a virtual key will be merged with values in the corresponding key on the host machine, if such a key exists. Writes to host keys are passed through to the host registry and writes to virtual keys are redirected to the user registry area. Hide mode: Keys and values in the virtual registry or the corresponding host registry will not be found by the application at runtime. Tip: To apply the selected isolation mode to all subkeys, right-click on the key, choose Isolation, click on the checkbox for Apply to subkeys, and click OK.
Sandbox merge
Sandbox merge allows sandbox content and settings generated during virtual application execution to be applied to a Studio configuration. Sandbox merge is an alternative to manual registry or filesystem configuration, and is particularly useful for applying additional customizations to existing virtual application configurations or configurations generated from a virtual application template. To merge an existing sandbox into the active configuration: Click the Sandbox Merge button in the Tools section of the Virtual Application toolbar. Enter the path of the sandbox to be merged into the current configuration. Click OK. For example, to customize the home page of the Firefox virtual application template: Use the Configuration Wizard to create a Firefox virtual application. (The wizard allows customization of the home page, but we will later use the sandbox merge feature to override the setting specified in the wizard.) Press Build and Run to launch the virtualized Firefox application. Using the Firefox interface, specify a new browser home page. Exit the Firefox virtual application. Press Sandbox Merge to display the sandbox merge dialog. The sandbox path will be pre-populated with the location of the Firefox virtual sandbox. Click OK. The virtual application settings are updated with the configuration changes made during Firefox execution, including the updated browser home page.
Standard metadata
Standard metadata includes information such as the product title, publisher, description, icon, web site URL, and version. By default, Studio will apply metadata inherited from the virtual application startup file to the output virtual application executable. However, in some instances, it may be desirable to override the metadata. To manually override executable metadata: Uncheck the Inherit properties option Enter the desired metadata in the appropriate fields in the Properties area.
To revert to the default inheritance behavior, recheck the Inherit properties option.
Custom metadata
In addition to standard Windows shell metadata, Studio allows introduction of custom metadata into the output executable. Custom metadata may be used by specialized external executable viewer applications, inventory scanners, and other asset and licensing management systems. To add or modify custom metadata: Click the Custom Metadata... button. This displays the Custom Metadata dialog. Enter the custom metadata property names and values into the dialog. Only string-type custom metadata values are supported. For information on programmatically reading custom executable metadata, please consult the Microsoft Windows Software Development Kit.
Transparency keying
Transparency keying allows the startup image to contain transparent regions. Transparencies can improve the visual effectiveness of your startup image. To select the transparency key color: Click the Select... button next to the Transparency key label. This displays the transparency key selection dialog. Select the color which represents transparent regions in the startup image and click OK.
The return value indicates whether virtual machine execution should proceed. Methods are to be acquired via ::LoadLibrary followed by ::GetProcAddress calls.
Example
LPCWSTR pwcsInitToken = "VendorSpecificToken"; HMODULE hShim = ::LoadLibrary("Shim.dll"); FnOnInititialize fnOnInit = (FnOnInititialize)::GetProcAddress(hShim, "OnInitialize"); BOOL fResult = fnOnInit(pwcsInitToken);
To add a compiled startup shim DLL: Click on the Startup Settings tab of the Settings pane Click the Select... button next to the Startup Shim DLL field. Navigate to a DLL-format file to use as the startup shim, and click Open. Use the OnInitialize parameter field to specify parameters for your startup shim. If you wish to remove the current startup shim, click the Reset button.
Working directory
The working directory setting determines the active directory at the time the virtual application process is launched. The Use startup file directory option 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. The Use current directory option sets the working directory to the directory from which the virtual application is launched. The Use specified path option allows an explicit working directory to be specified. The working directory specification can include environment and well-known root folder variables. By default, the working directory is set to the directory of the startup file.
Application type
Windows applications may execute in either the GUI- or console-mode subsystems. If you have selected an executable startup file, Studio will automatically configure the virtual application to execute in the same subsystem as the startup file. However, if you have selected a non-executable startup file, it may be necessary for you to manually override the application type. Most applications execute in the GUI subsystem. To override the application type, select the appropriate mode from the Application type dropdown in the Process Configuration section of the Settings panel. The Inherit mode sets the application type based on the type of the startup file, if possible.
Target architecture
The Target architecture option matches the structure of the virtual environment to the desired host process architecture.
x86: Use this option for applications that were snapshotted 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 always run as 32-bit applications. x64: Use this option for applications that were snapshotted 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 run as 32-bit applications on x86 systems and 64-bit applications on x64 systems. Any CPU: Use this option for .NET applications that are compiled to run on any CPU architecture. This option maps the Program Files directory to C:\Program Files on x86 systems and C:\Program Files on x64 systems. .NET applications run as 32-bit applications on x86 systems and 64-bit applications on x64 systems.
Environment variables
Some applications may depend on the presence of certain Windows environment variables in order to function properly. Studio allows virtualization of environment variables to support such applications. To add or modify virtual environment variables: Click the Environment Variables... button. This displays the Environment Variables dialog. Enter environment variable names and values into the environment variable list. Most virtual environment variables overwrite any environment variables defined in the host environment. However, the special PATH and PATHEXT environment variables are always merged with the corresponding host environment variables. Environment variables are automatically captured and merged during the snapshotting delta process. Therefore, it is generally unnecessary to manually configure environment variable settings.
Virtual services
Windows services are specialized applications that execute in the background and 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. Studio fully supports virtualization of Windows services. To view or modify virtual service settings, press the Virtual Services... button. This displays the Virtual Services dialog. The Name field specifies the internal name of the virtual service. For example, the Windows web server would use the name w3svc. The Friendly Name field specifies the full display name of the service displayed to end users. For example, the Windows web server friendly name is World Wide Web Publishing Service. The Command Line field specifies the full command line (including the service executable name and any parameters) used to launch the service. The Auto Start flag indicates whether a virtual service automatically starts during virtual application startup, or whether the service must be launched manually or by the virtualized service control manager. The Keep Alive flag indicates whether the virtual service process is automatically terminated when the primary application executable terminates, or whether the service (and, therefore, the host virtual application executable) continues to run until the service terminates itself. Service installation and settings are automatically captured during the snapshotting process. Therefore, it is generally unnecessary to manually configure virtual service settings. The primary exception is the case of virtualized applications intended to run as background worker services (for example, virtualized web servers); in this case, it is often required to explicitly enable the Keep Alive option.
Child processes
Some applications spawn new child processes during the course of their execution. Depending on the virtual application context, it may be preferable for such child processes to be created either within the virtual application, or outside of the virtual application in the host operating system. Child processes include processes spawned to service COM local server requests. Note: Child processes created outside of the virtual application will not have access to virtualized filesystem or registry contents. However, these processes will be able to access or modify host operating system contents, even if this would otherwise be forbidden by the virtual application configuration. By default, child processes are created within the virtual application. To force child processes to be created outside of the virtual application, uncheck the Spawn child process within virtualized environment option. COM local servers can optionally be created within the virtual application context. To force COM local servers to be created outside of the virtual application, uncheck the Spawn COM servers with virtualized environment option.
Exceptions to the child process virtualization behavior specified by the Spawn child process within virtualized environment and Spawn COM servers within virtualized environment flags can be enumerated in 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, click the Child Process Exception List button. Process names may or may not include the process filename extension.
Compress payload
Both the application profiling and streaming processes require that packages be built uncompressed. To build applications without compression, leave the Compress Payload option unchecked.
@TITLE@: Product title @PUBLISHER@: Product publisher @VERSION@: Full version string, in dotted quad format @WEBSITE@: Publisher web site @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 area of the Settings pane.
Installation parameters
The Installation parameters area allows installation options such as install location and permissions parameters to be configured. Applications may be installed either for the current user or for all users of the target device. To install the application for all users, check the Install applications for All Users option. Note: Installing applications for all users requires privileged access to the host device. Do not enable this option if the MSI package is designed for use by end users with standard user permissions. The Application Folder specifies the location where the application executable will be installed. This usually has the form [Application Data]\[Company Name\Product Name].
In the event that a user runs the setup package on a device which already has a version of the application installed, the MSI package may be designed to update the existing application version or side-by-side install with the existing application version. To automatically update existing versions, select the Automatically upgrade earlier application versions option; to use side-by-side installation, select the Allow side-by-side versions of the same application option. Note: Building with the Allow side-by-side versions of the same application option enabled causes a new setup package GUID to be generated. Once a build is completed with this option enabled, previous installations will no longer be upgraded in place, even if you revert to Automatically upgrade earlier application versions mode.
Extended properties
MSI setup packages may also contain extended metadata, such as keywords, product author, product description, and publisher URL. To configure MSI package extended properties, click on the Extended Properties tree node in the MSI pane and enter the desired values.
single click from within most popular web browsers using the Spoon Plugin- a small browser extension. In addition to enabling simple web-based distribution, Spoon's unique application delivery technology allows most applications to launch 5 to 20 times faster than with a traditional download. For more information on deploying applications using Spoon Server, please refer to the Spoon Server User Guide. Visit the Spoon.net web site for details on Spoon Server pricing and licensing.
Supported Platforms
The Spoon Plugin works with most popular Internet browsers, including Internet Explorer, Firefox, Safari, Chrome, Opera, and all other browsers built using the Gecko API.
SpoonReg is a tool that provides a simple command-line interface for deploying virtual applications and managing the virtual desktop environment. Users and administrators can use SpoonReg to register virtual applications for a single user or, in the case of administrators, a group of users or devices. SpoonReg can be used to deploy and manage virtual applications and layers built using Spoon Studio. After virtualizing an application with Spoon Studio, it is often desirable to make the application Start Menu icons, shortcuts, and file associations available on the users' desktop. SpoonReg allows you to register Spoon virtual applications in the shell, creating all of the shell associations that would generally be created during a standard install process. Unlike performing an installation, however, registration and un-registration can be performed almost instantaneously. SpoonReg also provides the ability to create, reset, and remove application sandboxes- virtual environment "bubbles" where the virtualized applications reside. Sandbox management provides fine-grained control over application linking and intercommunication. Spoon Server users and administrators can use the SpoonReg mechanism associated with Spoon Server to register applications to the desktop. For specialized deployment scenarios, contact your Spoon representative to learn how to obtain your own version of the SpoonReg.exe utility.
Command-line syntax
The following naming conventions are used in this section: Parameter AppSpec SandboxSpec Description An AppSpec is a path (relative or fully qualified) to a virtual executable or layer built with Spoon Studio A SandboxSpec is the name or path of a virtual sandbox
/cache
Client profiles
The SpoonReg command can be applied to the Local, All Users or Roaming Windows profiles. These profiles correspond to the user profiles available on the Windows operating system. It's recommended that the SpoonReg command is applied to the All Users profile whenever possible.
Sandbox management
The SpoonReg tool allows creation and management of one or more virtual environment sandboxes. A sandbox contains all of a virtual application's isolated data and settings as determined by the virtual application's isolation configuration settings. Applications registered to the same sandbox can view and modify each others' virtualized data and settings. By default, all applications are registered into a single default sandbox named Default. In some cases, it may be desirable to group related applications into a sandbox that can be treated as a single management unit. When a sandbox is reset, all of the application content and data stored in that sandbox is purged and reverts back to the default state.
Creating a sandbox
If no sandbox is specified during registration, the application will be registered to the default sandbox (Default). To create an additional sandbox, use one of the following commands:
SpoonReg.exe [Profile] /create [SandboxName] [SandboxPath]SpoonReg.exe [Profile] /c [SandboxName] [SandboxPath] If no path is provided, a default path is created under the AppData folder under the specified profile.
Resetting a sandbox
Resetting a sandbox reverses all changes made to the sandbox, including any changes to data or settings made by the user. This restores all applications registered to the sandbox to their default state. To reset a sandbox, use one of the following commands: SpoonReg.exe [Profile] /reset [SandboxSpec]SpoonReg.exe [Profile] /r [SandboxSpec] If a SandboxSpec is not supplied, the default sandbox is reset.
Deleting a sandbox
Deleting a sandbox removes all applications, data, and settings from the sandbox. To delete a sandbox, use one of the following commands: SpoonReg.exe [Profile] /delete [SandboxSpec]SpoonReg.exe [Profile] /d [SandboxSpec] If a SandboxSpec is not supplied, the default sandbox will be reset (the default sandbox cannot be deleted). Any applications registered to the deleted sandbox will be moved to the default sandbox.
Moving a sandbox
You can use SpoonReg to move the sandbox location to a given path. To move a sandbox: SpoonReg.exe [Profile] /move [SandboxSpec] [SandboxPath]
Active Directory
Active Directory allows the network administrator to manage users and groups within an organization. Many organizations use Active Directory to manage their network services. By combining Active Directory with SpoonReg, administrators can deploy virtual applications easily and reliably to one or more users in their organization.
SpoonReg
SpoonReg manages the virtual desktop environment for a given user by registering and unregistering virtual applications. A typical SpoonReg command to register an application such as Firefox would be: \\VirtualAppServer\Tools\SpoonReg.exe \\VitualAppServer\Apps\Firefox.exe This represents the basic functionality of SpoonReg which would copy the virtual application executable, create Start Menu items and desktop shortcuts and setup file associations. (For additional functionality dealing with sandboxes, caching and automatic updates, refer to "Deploying using Spoon Virtual Desktop".)
Use these samples as a guide to create the startup script: Sample 1. Register virtual applications to the default sandbox in the All Users profile: \\VirtualAppServer\Tools\SpoonReg.exe /allusers \\VirtualAppServer\AllVirtualApps\Excel.exe \\VirtualAppServer\Tools\SpoonReg.exe /allusers \\VirtualAppServer\AllVirtualApps\Firefox.exe \\VirtualAppServer\Tools\SpoonReg.exe /allusers \\VirtualAppServer\AllVirtualApps\AcrobatReader.exe Sample 2. Register virtual applications to the specified sandbox in the All Users profile: \\VirtualAppServer\Tools\SpoonReg.exe /allusers /c sandboxname \\VirtualAppServer\Tools\SpoonReg.exe /allusers \\VirtualAppServer\AllVirtualApps\Excel.exe \\VirtualAppServer\Tools\SpoonReg.exe /allusers \\VirtualAppServer\AllVirtualApps\Firefox.exe \\VirtualAppServer\Tools\SpoonReg.exe /allusers \\VirtualAppServer\AllVirtualApps\AcrobatReader.exe Once the Startup Script is created, add it to the GPO: Navigate to Computer Configuration > Windows Settings > Scripts in the GPMC Open the Startup item Click Add Click Browse Select the Startup Script that was created Click Open Click OK Click OK
Note: You must be an administrator to use the /allusers flag. Registering the client configuration file will automatically install and start the Spoon Virtual Desktop Service and synchronize the virtual desktop environment.
On the TS RemoteApp server, open the TS RemoteApp Manager and choose Add RemoteApp Programs by right-clicking inside the RemoteApp Programs list or through the Action drop down menu. Click Next in the RemoteApp Wizard. Click Browse and select the virtual application executable. After the virtual application is added to the list, select it and click Properties. If the virtual application has multiple Startup Files, configure the RemoteApp Program Name and Alias. If this is not done, the TS RemoteApp server will not distinguish between the separate applications in the suite. Still in the Properties window, select Always use the following command-line argument, enter in the Trigger for the Startup File that is to be executed, and click OK. In the RemoteApp Programs list, right-click the program that you added and choose Create .rdp File. There are no special requirements for the .rdp files. If there are multiple Startup Files, repeat these steps for the other applications in the suite and deploy the shortcuts on the host systems.
Walkthroughs
This section provides step-by-step instructions for using Spoon Studio in common scenarios.
Snapshotting
The snapshot process consists of two phases the "before" snapshot and the "after" snapshot. The before snapshot takes an inventory of all files and settings that are installed on the computer. The after snapshot is taken after the application being virtualized is installed. The contents of the after snapshot are compared to the before snapshot to determine all changes that were made to the host system during installation. The after snapshot also copies the new or modified files to a snapshot directory specified by the user. Since it is required to install and capture all application dependencies during this process, it is important that snapshotting be performed on a clean Windows machine. This guarantees that all dependencies will be included in the installation and captured by the snapshot process.
To snapshot the OpenOffice installation: Capture the before snapshot by clicking Capture Before on the Studio ribbon bar. The snapshot process may take a few minutes. Install OpenOffice and all of its necessary dependencies. Capture the after snapshot by clicking Capture and Diff. Studio will prompt for the directory where the snapshot files are to be stored. This directory is usually located on an external PC or network share.
Setup options
When virtualizing application suites such as OpenOffice, the user may want to create a setup file. Setup files generated by Studio are created using the MSI setup file format. Studio setup files only install the virtual application and create file associations and shortcuts. No other installation functions are performed. To create a setup file for the virtual application, the Output Location, Product Info, Installation Parameters, Shortcuts, and File Associations need to be configured. The Output Location defines where the setup file is created.
The Product Info is the metadata that will be associated with the setup file. The Product Info is displayed in the Add/ Remove Programs window. It is recommended that this information be accurate to avoid confusion. The Installation Parameters control how the virtual application will be installed on the host system. Shortcuts allow the end user to launch the application directly from the Windows Start Menu or Desktop.
Output Location
To define the Output Location for the virtual application setup file: Click Browse next to the Output Location and assign it a file name. Check the Automatically generate MSI after successful build checkbox if the setup file should be created automatically after the build process.
Installation Parameters
To install the virtual application for All Users, check the Install application for All Users check box. If checked, this option requires administrative privileges on the target system. To automatically update existing versions, select the Automatically upgrade earlier application versions option. This option will update previous versions of this virtual executable. To use side-by-side installation, select the Allow side-by-side versions of the same application option. Note: The Company Name\Product Name needs to be entered in the Application Folder field. If neither is entered, the virtual application will be installed under folders named "Company Name\Product Name".
Creating Shortcuts
To create shortcuts that open specific application within the OpenOffice suite: Click Add Shortcut and assign it a Name, assign it a Target, select an Icon, and enter any arguments that need to be passed to the specific application. Folders that are created by the setup package can also be setup in this pane.
File Associations
To create File Associations: Click on the Add ProgId button and enter the ProgId and a Description of the file association. Click Add Extension and enter the file extension and MIME Type (if necessary) to the ProgId. If a verb is needed for the file extension, click Add Verb and enter the necessary information.
Click on the Build or the Build and Run button. This will create virtual application binary file where the Output File is defined. The build process may take a few minutes. To test the virtual application: Execute the virtual application binary file. The OpenOffice splash screen will display and the OpenOffice Quickstarter will open. Execute the virtual application binary file from a command prompt with the "swriter" Trigger. For example, run "openoffice.exe swriter" from a command prompt and the OpenOffice Quickstarter and Writer applications will open. To test the Setup options: Execute the setup file on a system without OpenOffice installed. The virtual application, shortcuts, and file associations will be installed on the host system. Open the OpenOffice Writer Program from the start Menu shortcut. Open a file that is associated with the OpenOffice Writer program.
Best Practices
This section describes various best practices for making use of Spoon Studio. Note that these methods of use are all optional.
Machine configuration
Perform snapshotting on a clean machine: Snapshotting on a clean machine assures that all dependencies will be installed by the application setup. Installing on a machine with existing components may cause dependencies to be inadvertently included in the "before" snapshot and therefore excluded from the final virtual application output. Use snapshotting in conjunction with whole-machine virtualization: Configuring a clean machine using a whole-machine virtualization tool such as Microsoft Virtual PC and saving a "before" snapshot based on this image allows many distinct virtual applications to be snapshotted in rapid succession by reverting the whole-machine virtual state. Snapshot on the earliest operating system variant you expect to target: Most applications can be successfully configured by snapshotting on the earliest (least common denominator) base operating system to be targeted. A small number of applications may require multi-platform snapshotting for successful deployment across all operating system variants.
Snapshot process
Save the "before" snapshot: Saving the snapshot assures that you need only take the "before" snapshot a single time. It may be necessary to restart the target application during the installation process, in which case you will need to reload the "before" snapshot prior to capturing the "after" snapshot. To prevent problems with open file handles, it is recommended that processes and services that were started during installation are stopped prior to capturing the "after" snapshot. In most cases it is sufficient to exit the target application, unless the application installs services, such as Microsoft SQL Server, in which case the services should also be stopped prior to taking the "after" snapshot. Clean up your image: While Studio automatically excludes many unnecessary files and registry keys, snapshotting often picks up many unnecessary items. If you have adequate technical understanding to do so, you may significantly reduce virtual application size by manually removing unnecessary items from the snapshot delta.
This process will only capture the changes between the original executable and the installed updates. The resultant SVM can then be applied to the original virtual executable (for more information on updating virtual applications using SVMs, refer to the topic "Specifying additional SVMs for a virtual application" in the "Advanced topics" section).
Build process
The "build process" is the process of taking a Windows desktop application and converting it into a standalone executable (EXE) or Spoon Virtual Machine (SVM). Use the snapshot technique to capture the application on a "clean" Windows XP 32-bit machine. The snapshot process is covered in detail in the "Snapshotting Applications" topic of the "Getting Started" section. Use Studio to generate a standalone executable (this will launch the virtual application). Test this executable per the recommendations in the "Build testing process" section. If the virtual application fails to run on Windows Vista or Windows 7, it may be necessary to perform the snapshot on multiple platforms, and then perform a platform merge. Refer to the "Platform Merge" topic in the "Advanced Topics" section for details on how to perform a platform merge. After the application has been verified to work on all six platforms, use Studio to generate a component (an SVM file) if needed. If the virtual application fails to build or function correctly, please refer to the "Troubleshooting" section in this document or contact Spoon support.
Managing builds
Spoon recommends allocating a folder on a shared network drive to store and organize the SVMs, EXEs and models generated as a result of the virtualization process. During the build process, Spoon recommends storing the snapshot files, the EXE and SVM in the following folder structure: \\<Share>\Builds\<Application>\<Version>. During the profiling process, Spoon recommends storing the transcripts and model files in the following folder structure:Transcripts \\<Share>\Builds\<Application>\<Version>\Transcripts\Models - \\<Share>\Builds\<Application>\<Version>\XStream\<Model Number>\ If it's necessary to deliver virtual applications and models to Spoon, please contact Spoon support ([email protected]) for additional details.
Advanced Topics
This section deals with advanced topics you may encounter while using Spoon Studio.
Proxy settings...
Studio uses the Internet to check for product updates and download update packages. If your computer is located behind a firewall, it may be necessary for Internet access to take place through a proxy server. By default, Studio will use the default Internet settings configured on the host machine. In some circumstances, however, it may be necessary for you to manually configure the proxy server settings. To manually configure proxy settings, select the Proxy settings... option from the Options menu. Provide the proxy server address, the server port and the type of authentication, if any, the proxy server uses. Select the 'Bypass proxy server for local addresses' option to bypass the proxy server when accessing resources located on the local network. Please contact your network administrator if you need assistance configuring the proxy settings.
If you wish to disable this scan, uncheck the Automatically detect associated runtimes and components option in the Options menu.
@PROGRAMSCOMMON@ (All Users Directory\Start Menu\Programs): The folder for components that are shared across applications. @STARTMENUCOMMON@ (All Users Directory\Start Menu): The folder containing the Start Menu contents for All Users. @DESKTOPCOMMON@ (All Users Directory\Desktop): The shared Desktop folder. @TEMPLATESCOMMON@ (All Users Directory\Templates): The folder that serves as a common repository for shared document templates. @FAVORITESCOMMON@ (All Users Directory\Favorites): The shared Favorites folder. @DOCUMENTSCOMMON@ (All Users Directory\Documents): The shared Documents folder. @MUSICCOMMON@ (All Users Directory\Music): The shared Music folder. @PICTURESCOMMON@ (All Users Directory\Pictures): The shared Pictures folder. @PROFILECOMMON@ (All Users Directory): The folder that stores the shared profile data.
Note: Snapshots generated from the command-line using the /after flag will not have an output path specified. When using programmatic snapshotting, it is strongly recommended that additional scripting be performed to apply necessary additional configuration to the generated XAPPL file.
virtual-app.exe /XLayerPath=@APPDIR@\patches\*.svm An example of specifying SVMs from multiple locations: virtual-app.exe /XLayerPath=@APPDIR@\patches\*.svm /XLayerPath=@APPDIR@\officepatches*.svm An example of specifying SVMs on a network share: virtual-app.exe /XLayerPath=\\network\share\patches*.svm An example using Microsoft Office: MSOffice.exe /XLayerPath=c:\Patches\MSOffice_*.svm. This would do a wildcard match finding any files such as MSOffice_001.svm in the c:\Patches directory. Note: The SVMs are applied in reverse-alphabetical priority. This means that items in MSOffice_002.svm have higher priority than items in MSOffice_001.svm. The second mechanism is a XAPPL file specified way to load additional SVMs. It is via the <XLayers> portion of the XAPPL file and has the following elements: Attribute XLayerSearchPattern <RequiredXLayername="@APPDIR@\APP.svm"> Description Attribute to provide the default search pattern, similar to what would be passed to /XLayerPath Sub-elements specifying which SVM must be loaded, or else an error is reported
Both methods allow the use of the @VARIABLE@ format. Multiple SVMs may be specified after the XLayerSearchPattern attribute in a semi-colon delimited list. SVMs specified first in the list will take precedence over SVMs specified later in the list. If multiple SVMs are specified in one search pattern through the use of the '*' wildcard, the SVMs are applied in reverse-alphabetical priority. For example, items in MSOffice_002.svm would have higher priority than items in MSOffice_001.svm . Note: Newer versions of Studio make use of SVMs as opposed to XLayer files. Older XLayer files must be rebuilt as SVMs as there is currently no supported conversion utility. SVMs function in the same way as XLayer files in that they will be auto-integrated with virtual executables by being placed in the same directory as the executable.
Platform merge
The Merge Platforms feature allows virtual application configurations snapshotted on multiple operating system variants (Windows XP, Vista, etc.) to be combined into a single configuration. At runtime, the virtualization engine dynamically applies the configuration options appropriate for the operating system variant used for execution. Tip: The most common platform merge scenario is a merge of snapshots taken on Windows XP and Windows Vista. This is because some newer applications use operating system features specific to Windows Vista. To merge configurations from multiple platforms: From the Advanced tab, click the Merge Platforms button. Click Browse and open the appropriate configuration for each applicable operating system variant For operating systems without a configuration, choose which configuration it should use by using the Inherit option. When all configurations have been selected or set to Inherit, click Browse in the Merge Settings area, choose where to save the merged configuration, and click Merge. To display or edit a specific operating system from a merged configuration: Open the merged configuration. From the Advanced tab, click on the Display drop down menu. Select the operating system that you want to display or edit. The Filesystem and Registry panels will only display settings specific to the selected operating system. Note that you cannot edit configurations which are inherited from other platforms; to edit inherited configurations, you must select and edit the master configuration. To change the inheritance of an operating system in a merged configuration:
Open a merged configuration. From the Advanced tab, click the Display drop down menu. Select the operating system that you want to modify. Select the platform from which to inherit using the Inherits drop down menu.
Application Expiration
This section describes the Expiration feature. With the Expiration feature, virtual applications can be set to expire after a certain number of days or after a certain date. To set a virtual application to expire after a specific number of days: Click on the Expiration button. Check the Disallow execution after number of days checkbox. Select the number of days after the application is first executed on a system it will take to expire. Choose the Time Source the virtual application will use to validate the date. To set a virtual application to expire after a certain date: Click on the Expiration button. Check the Disallow execution after date checkbox. Select the date the virtual application will expire. Choose the Time Source the virtual application will use to validate the date. For all expiration modes, the System clock setting will use the host system's clock to validate the date. The Web server clock setting will validate the date against an HTTPS-based web server. Check the Disallow execution if web server is unreachable checkbox to prevent the application from being executed offline. Tip: The Web server clock setting is more secure than the System clock setting since it prevents the expiration mechanism from being circumvented by modifying the system clock. However, this setting will prevent applications from executing on devices which cannot connect to the time server source. Optionally, an Expiration Warning can be set to warn the user when the virtual application is about to expire. The message will be displayed each time the virtual application is executed when it is within the specified threshold.
Reload the XAPPL file in Studio and build the application The resulting virtual application will have shared object isolation enabled. Note that multiple objects in memory can be isolated simultaneously.
The startupType attribute denotes whether to use the jar file (JAR) or class path (Class) command line parameters for java.exe to launch the application. The startup attribute indicates the jar file path or class name depending on the StartupType. The classpath attribute indicates the path to the class files of the Java runtime. The options attribute denotes any additional command line parameter. Package The name attribute indicates the name of the component or runtime. The platform attribute indicates the platforms that the component or runtime is supported on. The following are the only available values: Any platform (Any) x86 platform (x86) The version attribute indicates the version of the component or runtime. Virtualization Settings All sub-elements contain settings pertaining to the configuration of the virtual operating system. The suppressBranding attribute controls the branding pop-up that is displayed (False), or not displayed (True) in the lower right-hand corner during application startup. The isolateWindowClasses attribute is used to isolate windows classes, as registered via the Windows ::RegisterClass or ::RegisterClassEx APIs. For example, this allows a virtualized Firefox instance to run while a non-virtualized instance is running. The readOnlyVirtualization attribute denotes whether the virtual application has the ability to modify virtual files and registry settings ( False) or not (True). Setting this attribute to True will prevent modification to the virtual filesystem and virtual registry. The disableXenocodeCommandLine attribute controls the ability to execute (False) any file from within the virtual filesystem. The subsystem attribute indicates the application output type. It can be inherited from the startup file (Inherit) or set explicitly to be a Windows application (GUI) or console application (Console). If Inherit is set, but the startup file is either not in the virtual filesystem or not an executable, then the output will be a Windows application. The ie6Emulation attribute denotes a special mode required for the Internet Explorer 6 template (True). For all other apps, this should be disabled (False). The sandboxPath attribute indicates the base path of the application sandbox (@APPDATALOCAL@\Spoon\Sandbox\@TITLE@\@VERSION@). The workingDirectory attribute defines what directory the application will run in. The compressPayload attribute controls whether the output executable will be compressed (True) or not (False). The trimUACManifest attribute removes items from the manifest that may require elevation (True). The enableDRMCompatibility attribute ensures compatibility (True) with applications protected by software formerly known as "Armadillo" and other DRM software. The deleteSandbox attribute will cause the sandbox to be reset automatically when the virtual application is shutdown (True). The shutdownProcessTree attribute will cause the all child processes spawned within the virtual environment to be shutdown when the root process exits. By default, the root process is specified by setting the startup file. The exeOptimization attribute will attempt to launch the startup executable with the initial virtual machine process, preventing the creation of a separate application process (True). The enhancedDEPCompatibility attribute provides compatibility for systems with Data Execution Protection enabled (True). This setting is used primarily for virtual applications running on Windows 2003. The notifyProcessStarts attribute causes a notification to be sent as a debugging output string whenever a new process is started within the virtual environment (True). The forceReadShareFiles attribute forces any file opened by any process within the virtual environment to do so with the READ_SHARE flag set (True). The launchChildProcsAsUser attribute causes all child processes to be provided with the same level of privileges as the virtual machine root process (True). The forceIndicateRunningElevated attribute forces the application to run as if it has elevated security privileges (True). The suppressPopups attribute will prevent an error dialog popup if the virtual application encounters a fatal startup error, and will cause the application to exit silently (True). ChildProcessVirtualization The spawnExternalComServers attribute controls whether the virtual application launches ComServers in the virtual environment ( False) or the external environment (True). The spawnVm attribute denotes whether the spawned external applications are spawned inside the virtual environment (True) or outside the virtual environment (False). ChildProcessException The name attribute indicates the name of the executable file (extension included) to except from the effects of the spawnVm attribute. CustomMetadata All sub-elements contain settings pertaining to the configuration of the individual custom metadata items. CustomMetadataItem The property attribute indicates the name of the custom metadata item. The value attribute indicates the value of the custom metadata item. StandardMetadata All sub-elements contain settings pertaining to the configuration of the individual standard metadata items.
StandardMetadataItem The property attribute indicates the name of the standard metadata item. The following are the available standard metadata: Product Title (Title) Publisher (Publisher) Description (Description) Website (Website) Product Version (Version) SplashImage The path attribute indicates the source path to the splash image displayed at application startup. The transparency attribute indicates the color in the splash image that should be made transparent when the image is displayed (E.g. Magenta). StartupFiles All sub-elements contain configuration pertaining to the individual startup files. StartupFile The node attribute indicates the path of the startup file. The tag attribute indicates the command line trigger used to specify this entry as the startup to use. The commandLine attribute indicates the command line arguments to pass to the startup file. The default attribute denotes whether this entry is executed automatically when no tag is specified (True) or not (False). StartupShim The startup shim is a virtualized binary that is invoked prior to the startup file. Startup shims are used to perform customized licensing checks or other initialization tasks. The useShim attribute indicates whether to use the startup shim. The shimDllPath attribute indicates the path to the virtual shim DLL implementation. The paramOnInitialize attribute indicates a string to be passed to the shim OnInitialize function. The startup shim signature is typedef BOOL (__stdcall *FnOnInititialize) LPCWSTR pwcsInitilizationToken). The return value indicates whether virtual machine execution should proceed. Layers All sub-elements are individual virtual layers. Layer The Layer element and all sub-elements contain settings pertaining to the configuration of this layer of the virtual operating system. The name attribute indicates the name of the layer. The default layer (Default) is the only layer for whom the name matters. All other layer names are purely informational. Condition The variable attribute indicates the host system setting that will be evaluated. The operating system version (OS) is the only available option. The operator attribute indicates the Boolean operation that will be used to evaluate the host system. The available Boolean operations are: greater than or equal to (GREATEREQUAL) greater than (GREATER) equal to (EQUAL) not equal to (NOTEQUAL) less than (LESS) less than or equal to (LESSEQUAL) The value attribute indicates the value against which the host system will be evaluated, using the Boolean operation. The available values in ascending order are: Windows 2000 (Win2k) Windows XP (WinXP) Windows 2003 (Win2k3) Windows Vista (Vista) Filesystem All sub-elements contain settings pertaining to the configuration of the virtual filesystem. Directory All sub-elements contain settings pertaining to the configuration of this directory of the virtual filesystem. The rootType attribute indicates the root system folder that this virtual folder is mapped to on the host filesystem. Directory elements with the rootType attribute are always directly beneath the Filesystem element. The following are the available rootType values: Application Directory (Application) Windows\System32 (System)
Windows (OS) System Drive Root Directory (SysDrive) Program Files\Common (AllProgramsCommon) Program Files (AllPrograms) Current User - Start Menu (StartMenu) Current User - Start Menu\Programs (Programs) Current User - Start Menu\Programs\Startup (Startup) Current User - Application Data (AppData) Current User - LocalSetting\Application Data (AppDataLocal) Current User - Desktop (Desktop) Current User - Templates (Templates) Current User - Favorites (Favorites) Current User - Music (Music) Current User - Pictures (Pictures) Current User - My Documents (Documents) %PROFILE% (Profile) All Users - Start Menu (StartMenuCommon) All Users - Start Menu\Programs (ProgramsCommon) All Users - Start Menu\Programs\Startup (StartupCommon) All Users - Application Data (AppDataCommon) All Users - Desktop (DesktopCommon) All Users - Templates (TemplatesCommon) All Users - Favorites (FavoritesCommon) All Users - Music (MusicCommon) All Users - Pictures (PicturesCommon) All Users - My Documents (DocumentsCommon) %ALLUSERSPROFILE% (ProfileCommon) The isolation attribute indicates the isolation setting of the virtual folder. The available values are: Full isolation (Full) WriteCopy isolation (WriteCopy) Merge isolation (Merge) The name attribute indicates the name of the virtual directory. The hide attribute denotes whether the directory is marked as hidden (True) or visible (False). File The name attribute indicates the name of the file. The hide attribute denotes whether the file is marked as hidden (True) or visible (False). The source attribute indicates the source path to the file. Registry All sub-elements contain settings pertaining to the configuration of the virtual registry. Key All sub-elements contain settings pertaining to the configuration of this key of the virtual filesystem. The rootType attribute indicates the root system folder that this virtual folder is mapped to on the host filesystem. Key elements with the rootType attribute are always directly beneath the Registry element. The following are the available rootType values: HKEY_CLASSES (ClassesRoot) HKEY_CURRENT_USER (CurrentUser) HKEY_LOCAL_MACHINE (CurrentUser) HKEY_USERS (Users) The name attribute indicates the name of the key. The namePathInformationTuples indicates that there is a path in the name or value of the registry item. There are 3 comma delimited integers for each path found in the name/value. 1. Flags that indicate the state of the path (valid combinations: 0x0, 0x1, 0x2, 0x4, 0x5, 0x6) 0x1 All Uppercase 0x2 All Lowercase 0x4 Uses Short Path Names 2. Start index of the path 3. Length of the path The isolation attribute indicates the isolation setting of the virtual folder. The available values are: Full isolation (Full) Merge isolation (Merge) Value The name attribute indicates the name of the value. The type attribute indicates the type of the value. The available values are: REG_SZ and REG_EXPAND_SZ (String) REG_DWORD (DWORD) REG_QWORD (QWORD) REB_BINARY (Binary)
REG_MULTI_STRING (StringArray) The namePathInformationTuples indicates that there is a path in the name or value of the registry item. There are 3 comma delimited integers for each path found in the name/value. 1. Flags that indicate the state of the path (valid combinations: 0x0, 0x1, 0x2, 0x4, 0x5, 0x6) 0x1 All Uppercase 0x2 All Lowercase 0x4 Uses Short Path Names 2. Start index of the path 3. Length of the path The value attribute indicates the value of the value. This is true for all types, except StringArray, which contains the String sub-element. Environment Variables The name attribute indicates the name of the environment variable. The value attribute indicates the value of the environment variable. Services The name attribute indicates the name of the windows service. The autoStart attribute denotes whether the windows service starts when the virtual application starts (True) or not (False). The commandLine attribute indicates the startup command line of the windows service. The friendlyName attribute indicates the friendly name of the windows service. The description attribute indicates the description of the windows service. The objectName attribute indicates the account under which the windows service ran when not virtualized. The keepAlive attribute denotes whether the windows service should continue running after the startup application has closed (True) or not (False). The start attribute indicates the value of the Start DWORD value in the Windows Services registry key. The type attribute indicates the value of the Type DWORD value in the Windows Services registry key. The errorControl attribute indicates the value of the ErrorControl DWORD value in the Services registry key. Shortcuts All sub-elements contain settings pertaining to the configuration of the MSI shortcuts. Folder All sub-elements contain settings pertaining to the configuration of the MSI shortcuts in this folder. The name attribute indicates the name of the folder. The two top level folders represent the Desktop (Desktop) and the Programs menu on the Start menu (Programs Menu). Shortcut The name attribute indicates the name of the shortcut. The targetPath attribute indicates the path of the StartupFile that is the target of the shortcut. The targetParameter attribute indicates the Trigger or Tag of the StartupFile that is the target of the shortcut. The arguments attribute indicates the arguments passed to the target of the shortcut at runtime. The showCmd attribute denotes whether the application should start in a maximized(3), minimized(7) or regular(1) window state. The description attribute indicates the description of the shortcut. IconResource The IconResource sub-element contains an identifier of the icon that is used for the Shortcut. ProgIds All sub-elements contain settings pertaining to the configuration of the ProgId. The name attribute indicates the name of the ProgId. The description attribute indicates the description of the ProgId. IconResource The IconResource sub-element contains an identifier of the icon that is used for the file association. Extension All sub-elements contain settings pertaining to the configuration of the file extensions for the ProgId. The extension attribute indicates the file extension that is associated with the ProgId. The mimeType attribute indicates the MIME type of all files with the extension. Verb All sub-elements contain settings pertaining to the configuration of the Verb for the file extension. The title attribute indicates the title of the verb. The verb attribute indicates the verb value. The arguments attribute indicates the arguments passed to the target of the verb at runtime.
The default attribute denotes whether this verb is the default verb (True) or not (False).
Troubleshooting
This section describes the most common configuration errors that occur when using Studio. If you encounter a problem with a virtual application, please carefully read this section or query the online knowledge base before using other support options. It is very likely that the issue you have encountered is addressed in one of these places.