So far I discussed some high level info about the Symantec Workspace products. Yet I have barely touched the tip of the iceberg in terms of how vast the "virtualization" industry is. Just with application streaming and virtualization alone, you can cover most if not all desktops out there.
Virtualization provides a tool for creating efficient deployable application layers that can also be isolated to keep a completely pristine environment. When you couple this together with application streaming you are with this single step now creating a complete solution for delivering traditional Windows based applications on-demand into anything that looks and acts like a Windows desktop.
This is not limited to the traditional desktop either. While that is probably the larger percentage of endpoints today, eventually we will see this shift to the hypervisor and VDI solutions. The options are vast, Type 2 hypervisors such as Parallels Workstation or VMware Fusion, running Windows on Mac OS or any virtual desktop solution like Symantec Workspace Corporate or XenDesktop from Citrix, irrespective of this being inside the enterprise or the cloud. Really any place, any time, you can deliver applications as needed.
But first we need to enable our endpoints with the streaming capability. While thinking about all this I wanted to write about something that is a bit more detailed, but yet very relevant. Something that can apply regardless of deployment to VDI, VHD, thin-client, in the cloud or the traditional desktop. Yet deployment can become a nightmare if your options are confusing at best, and everyone wants to be as efficient as possible.
With this in mind I thought that a good area to write about is the streaming agent, which is a common piece in the streaming plus virtualization environment, that will enable our endpoints to take advantage of streaming and provide our end users with a much more efficient, virtualized, yet seamless "desktop" experience.
You know, I've been in the technology industry for many years and have had the pleasure of working with many different products, and the one thing that seems to me always lacked good instruction has been silent installation. I remember in my early days, (I'm really not -that- old), when I wanted to put together a silent install for some application, and reading the instructions made me want to shoot myself. By the time I was done with the answer file I wished someone could have given it to me in a more direct manner. Why should I have to spend so much time configuring something that shouldn't be so complicated when there is someone out there that can give me the facts and tell me where to plug in my details. So that brought me to this article and I hope that you will find it useful and it will bring some benefit to your respective needs.
Before I delve into the heart of the silent install of the streaming agent, let's just look at the acronyms I'll be using.
- STE: Streamlet Engine
- STS: Streaming Server
- LS: Launch Server
- FE: Front-end
- MSI: Microsoft Installer
- MST: Transform
- AD: Active Directory
- GPO: Group Policy Object
Silent install options
- Using the "setup.exe" wrapper.
- Using the "AppStream Technology Windows Edition Client.msi" installer.
- Customized MSI or using a transform (MST).
- Default configuration with settings import through .reg.
The streaming agent can also be deployed via GPO, but given the amount of information I'm already trying to relay in this article, I thought I'd save it for another day in order to keep things clean.
Prior to deployment make sure you have the following version of the install shield engine installed. (ISScript10.msi). You can get this and the streaming agent MSI installer from START->Run->Type %temp% ->Click OK, after running "setup.exe". You can exit out of the installer after you grab the files you need. The setup.exe is basically a wrapper. As you will see shortly, the silent install command line is pretty much the same thing used for both the .EXE and the .MSI.
.EXE (Fig. A)
setup.exe /S /v" /qn SILENT_ERROR_NOTIFY=0 REBOOT=ReallySuppress FROM_LAUNCHER=1 CURRENT_DIR=C:\installs\config SILENT_REBOOT_NOTIFY=FALSE APPSTREAM_STS_SERVER=STShostName APPSTREAM_STS_SERVER_PORT=80 APPSTREAM_LAUNCH_SERVER_URL=http://LaunchServerHostName
.MSI (Fig. B)
Msiexec /qb!- /i "AppStream Technology Windows Edition Client.msi" SILENT_ERROR_NOTIFY=0 REBOOT=ReallySuppress FROM_LAUNCHER=1 CURRENT_DIR=C:\installs\config SILENT_REBOOT_NOTIFY=FALSE APPSTREAM_STS_SERVER=STShostName APPSTREAM_STS_SERVER_PORT=80 APPSTREAM_LAUNCH_SERVER_URL=http://LaunchServerHostName
To use a transform for the MSI, just specify the path to your MST file in the command line.
- Msiexec /qb!- /i "AppStream Technology Windows Edition Client.msi" TRANSFORMS="Path\To\MSTfile.mst"
The following command line variables will need to be modified to match your environment:
- CURRENT_DIR=C:\installs\config indicates the location of the AppstreamCfg.txt. If you want to deploy a customized configuration file, this will be the directory where the installer will look for this file. If you aren't making any client customization changes and the default configuration is acceptable, simply omit this part from the command line and the default configuration will be applied.
- APPSTREAM_STS_SERVER=STSHostName indicates the host name of your STS server. If you recall in my last article (Workspace Streaming Server Primer), I discussed the various deployment types for streaming. This becomes important here because it can be different depending on your deployment. It will be the same host name as the streaming server if it's single-node. It will be the host name of the front-end if it's multi-node and can be different host names if you have multiple front-ends. So you can have a different command line for deployment for different locations.
- APPSTREAM_STS_SERVER_PORT=80 indicates the HTTP port of your streaming server. Even if you installed using the default port, 80, you still need to indicate it here.
- APPSTREAM_LAUNCH_SERVER_URL=http://LaunchServerHostName:80 indicates the host name of your launch server including the port, which will be the same host name as your STS host. (STS + LS = FE). See Workspace Streaming Server Primer
• This will also populate the portals key which is responsible for providing a URL to the "Portal" button located on the streaming agent GUI. This key will automatically generate the first time the streaming agent GUI is launched after install. If the host indicated in this value is not accessible at this time and/or the STE is down, the key will NOT auto-generate with the URL.
Silent install with LS, STS and STS Port configured using a .reg import
Whichever way you choose to deploy the client, you can, if so desired import the host names of your STS and LS server, as well as the STS port number directly into your registry. Just leave those out of the command line.
After deploying the streaming agent, you will need to update the Licenses and Portals registry keys.
As you can see in Fig. C, those three entries are located in HKLM-->Software-->AppStream-->AppMgr-->Apps-->Licenses
The simplest thing to do is right click the top level key that you want to import to other machines and select export from the context menu. Save the file with a descriptive name so that it's easy to identify.
If you edit this file, the contents should look similar to the following (host name(s) changed as needed):
Windows Registry Editor Version 5.00
Since the streaming agent records the LS URL you will also need to add the LS address under the key, HKLM-->Software-->AppStream-->AppMgr-->Portals (Fig. D). You can either manually add this into the previous .reg file or add it in the registry, export the key as before and then copy/paste that portion into the .reg you will deploy. If deploying using this method, you will not need to consider the availability check of the LS and the STE as indicated earlier when this is passed via command line.
When all is said and done, your final .reg file should look similar to the following:
Windows Registry Editor Version 5.00
- "InstallServerPort" is a HEX value. You will need to convert your HTTP port to HEX if you customize this variable. The current HEX value of "50" is the decimal value of "80". Which is the standard HTTP port. If you have a different port you will need to Google a decimal to HEX converter. So if I have a non-standard HTTP port of 8080, I would enter that as my decimal and the conversion will give me "1F90". Now that variable will be, "00001f90". If I was entering this directly into the Registry, I would only type in the HEX value, omitting the leading zeros.
- Or to make life easier, you can just toggle the edit dialog to use “decimal” and enter the actual port number.
You can import this file by simply double-clicking, but that's not what you need. You are going to push this to multiple endpoints so it should be able to import silently, and immediately following the installation of the streaming agent. With this approach your command line now looks like this:
setup.exe /S /v" /qn SILENT_ERROR_NOTIFY=0 REBOOT=ReallySuppress FROM_LAUNCHER=1 SILENT_REBOOT_NOTIFY=FALSE
Msiexec /qb!- /i "AppStream Technology Windows Edition Client.msi" SILENT_ERROR_NOTIFY=0 REBOOT=ReallySuppress SILENT_REBOOT_NOTIFY=FALSE
Finally, you will need to configure a script to run after the agent install completes, containing the following command line:
regedit.exe /s c:\Path\To\RegFile.reg
Customizing your MSI or creating an MST
You can customize the MSI logic by modifying the following values in the Property tables of the MSI installer. Fig. E.
There are some really great tools out there for customizing MSI logic. One of the top products for working with MSI's is Wise Package Studio. Of course, you may prefer some other tool. But whichever means you are using to customize your MSI, you will find that getting familiar with such tools will make life a lot easier.
I do hope the intent of this article was successful and has not served to confuse you more. I tried to simplify this to the point where it doesn't require much effort to configure and deploy the streaming agent silently. Again, this deployment can be applied to any environment ranging from standard desktops to virtual desktops to hosted operating systems.
If you did not see something in this article that you think is important and should be there, throw it at me and I will add to the article. Is anything here not clear or confusing... let me know and I will answer, try to answer, every question. I hope you don't mind that I changed "will" to "try" given that it may actually be physically impossible for one person to field hundreds of questions in a reasonable period of time.