In the upcoming Delaware release of Presentation Server, the AIE feature will be removed. AIE technology was introduced in Presentation Server 4.0 and has been replaced by the Application Streaming feature of Presentation Server 4.5.
Refresher on AIE:
With AIE, you can run any locally installed application under isolation. You can also “profile” an application installation using the command line tool aiesetup.exe. Notice that all of this activity is server side and specifically, there is no client side aspect of AIE. With Application Streaming by contrast, you must profile an application to run it and execution can be either on the server or on the client desktop system. Application Streaming also allows streamed applications to be used when disconnected from the corporate network.
Most aspects of Application Streaming are a superset of AIE, but in deleting AIE, the ability to isolate a locally installed application on a Presentation Server will be “lost”. This post shows how to “get it back”. It also shows how to implement AIE function “client side”.
Consider that AIE and Application Streaming share many components. The disk filter driver that supports both is common code – common binary! Other components have been replaced completely such as the COM virtualization and registry hooking mechanism. I’ll add that this is generally to an improved solution. The technologies are similar enough that an AIE environment can be simulated via Application Streaming.
In a recent telephone conference call, I was presenting the Three-Ps of Application Streaming. First, PROFILE using the Streaming Profiler, second PUBLISH using the Access Management Console and third PLAY using the Streaming Client. The customer was interested in Stream to Desktop to allow some highly graphic and CPU intensive applications to run on the desktop streamed – rather than be locally installed – allowing publishing and maintenance via Citrix and Application Streaming. A 15 minute pitch – done. Customer is thrilled.
It is here that I figure out why they are thrilled. Client side CPU and Graphics are great, but the real winner is that the app can be managed centrally, updated everywhere with one update and, here’s the kicker, published via the Citrix Web Interface!
Their users use the web interface as their portal to launch applications, period. They do not use the Start Menu, they do not use desktop icons. This makes locally installed applications a headache and Application Streaming solves that problem – for the applications that they move to streaming. The rest of the locally installed applications are still a headache.
“If only we could launch locally installed applications via Application Streaming”
My response: Yes, you can do that.
*Here’s the tie back to AIE.*LIVE during the call, I created a small profile. The example application was “notepad” run via Application Streaming. Within a few minutes, AIE on the desktop was demonstrated via Application Streaming and the customer had centralized publishing.
The steps for publishing local machine notepad.exe via Application Streaming for AIE execution:
a) PROFILE – Create a profile via the Streaming Profiler
b) Installer = “cmd” enter.
c) Notepad c:\LaunchNotepad.bat. Contents below.
a. Start c:\windows\system32\notepad.exe
d) Back to the CMD prompt now, “Exit” (this completes the installer from the view of the Profiler)
e) Profiler is now looking for what applications were “installed”. Nothing was added to the start menu, so you’ll need to do this step manually. It’s on the second screen that lists the applications that were discovered during install. Add one, browse to Device\C (the virtual root), select LaunchNotepad.bat. Give it a name: LaunchNotepad (done).
f) Save the profile
g) PUBLISH – Access Management Console
a. Publish a new app.
b. Name it “Notepad”. Notice published name does not have to match App name during profiling.
c. Streamed app, point the AMC at the profile saved during profiling
d. App to launch is “LaunchNotepad”.
h) Include an icon. There were no icons discovered during profiling, so you’ll need to tell the AMC to go fetch one, conveniently from c:\windows\system32\notepad.exe on the AMC machine.
i) Complete publishing the app
j) PLAY – Run it on a client machine
a. On the client system, refresh applications in PNAgent.
b. Alternatively, web browse to the Web Interface site
c. See “Notepad” as one of the applications that can be launched
d. Launch it (DONE)
NOTICE that the local machine notepad.exe is running under application streaming. The batch file was launched by the Streaming Client. The batch file itself had a short life, just issuing the start for the local notepad.exe. Since the local notepad.exe was started by a process in isolation, notepad will also be in isolation.
The above achieves AIE style execution of locally installed applications and this can be applied to both client side systems using PS 4.5 and the Streaming Client as well as server side execution on PS 4.5 and beyond. Since AIE will “go away” in a next PS release, this technique can be used to keep AIE around.
Making it elegant:
A ShellExecute() non-graphical GUI launcher should be used. Most of us have one of these hanging around from autorun CD-ROM kickers. This prevents the flicker of a command prompt starting and quickly going away.
It would also be possible to build a single launcher profile that receives a parameter as the application to launch. Then, the single profile could be published multiple times from the AMC – each time getting a command line parameter to tell it which local application to launch.
Pre-Launch scripts could be used as well to first identify that the local application is present. If it is not present or if something else would prevent successful execution, then return a non-zero return code from the pre-launch script and the Streaming Client will abort the launch and optionally trigger fallback to a ICA delivered equivalent application (dual mode streaming).
One last item to consider is that while the customer in this example was able to launch the application locally with centralized publishing, the end execution will be isolated and that may not be desired in all cases. Look here for a future post on running desktop local applications via Application Streaming outside of isolation.