Citrix Receiver Msi

Posted on  by 



When upgrading to Citrix Workspace app from an older and unsupported version (for example Citrix Receiver 3.4) make sure to use the parameter /rcu or /forceinstall (Citrix Workspace app 1909 and later). This article describes how to manually extract and install individual.msi files from ReceiverEnterprise.exeCitrix does not recommend extracting the Receiver (Enterprise).msi files instead of running the installer packages.

The example programs included with the Virtual Channel SDK arebuildable, working virtual channels. Use these examples to:

  • Verify your Virtual Channel SDK is correct by building a known working example program.
  • Provide working examples of code that can be modified to suit your requirements.
  • Explore the features and functionality provided in the Virtual Channel SDK.

Each of these example programs comprises a client virtual driver and aserver application. The server-side application is run from the commandline within an ICA session. A single virtual channel comprises anapplication pair.

The example programs included with the Virtual Channel SDK are:

  • Ping: Records the round-trip delay time for a test packet sent over a virtual channel.
  • Mix: Demonstrates a mechanism to call functions (for example, to get the time of day) on a remote client.
  • Over: Simple asynchronous application that demonstrates how to code an application where the server must receive a response from the client asynchronously, and where the type of packet being sent to the client is different from the type received.

Each example includes a description of the program, packet format, andother necessary information.

Msi

Ping¶

Ping is a simple program that records the round-trip delay timefor a test packet sent over a virtual channel. The server sends a packet to the client and theclient responds with a packet containing the time it received the original packet from theserver. This sequence is repeated a specified number of times, and then the program displaysthe round-trip time for each ping and the average round-trip delay time.

For this example, there is no significant difference between a BEGINpacket and an END packet. The two types of packets are provided as an example forwriting your own virtual channel protocols.

This program demonstrates:

  • How to transfer data synchronously. The sequence of events is:{SrvWrite, ClntRead, ClntWrite, SrvRead} {SrvWrite, ClntRead} {..}.The server waits for the client to reply before sending the nextpacket.
  • How to read parameter data (in this case, the number of times to sendpackets to the client) from the Module.ini files.

Packet Format¶

The following packet is exchanged between the client and the server.

Mix¶

Mix demonstrates a mechanism that can be used to call functions on a remote client (for example to get the time of day). This program demonstrates an extensible scheme for making function calls from the server to the client that allows the server to specify when it expects a response from the client and when it does not. This method can increase performance, because the server does not have to constantly wait for a reply from the client.

The server calls a series of simple functions:

  • Add No: Add two numbers and return the sum as the return value.
  • Disp Str: Write a string to the log file. There is no return value (write-only function).
  • Gettime: Read the client time and return it as the return value.

The actual implementation of these functions is on the client side. The server conditionally waits for the response from the client, depending on the function being executed. For example, the server waits for the result of the AddNo or Gettime function, but not the write- only function DispStr, which returns no result.

Packet Format¶

The data consists of the above structure followed by the arguments tothe function being called. uLen is the total length of the data beingsent, including the arguments. DwLen1 is the length of the data pointedto by a pointer argument.

Citrix receiver msi silent install

Sequence of Events¶

This figure illustrates the sequence of events that occurs when you usethe Mix program, starting at the top.

Over¶

Over is a simple asynchronous application. It demonstrates how to code an application in which the server must receive a response from the client asynchronously, and the type of packet being sent to the client is different from the type received.

When the Over program begins, it:

  1. Spawns a thread that waits for a response from the client.
  2. Begins sending data packets with sequence numbers to the client.
  3. (After sending the last packet of data) sends a packet with a sequence number of NO_MORE_DATA, and then closes the connection.

The client receives packets and inspects the sequence number. Forevery sequence number divisible by 10, the client increases thesequence number by 7 and sends a response to the server. These numbersare chosen arbitrarily to demonstrate that the client canasynchronously send data to the server at any time.

The packet type used to send data from the server to the client isdifferent from the packet type used to receive data from the client.

Packet Format - From Server to Client¶

Packet Format - From Client to Server¶

Sequence of Events¶

This figure illustrates the sequence of events that occurs when youuse the Over program, starting at the top.

Building Examples¶

Building a Server- side Example using NMAKE¶

  1. Change to the vcsdksrcexamplesvcserver subdirectory.

  2. At a command prompt, type NMAKE clean all.

  3. To build an individual server example, run NMAKE from the example subdirectory.

Building a Server- side Example using Visual Studio or .NET¶

  1. Create a new Win32 console project. Citrix recommends that the project name be associated with the example (for example, ctxping). You can set the location of the project to the srcexamplesvcserver directory so that the .c source files are readily available.

  2. Add the following directories to include the search path of the C++ preprocessor in the project settings (where vcsdk is the directory for the Virtual Channel SDK):

    • vcsdksrcexamplesvcsharedinc
    • vcsdksrcsharedincCitrix
  3. Point to the wfapi include and library paths. Open file wfapi.mak from vcsdk installation pathsrcexamplesbuild. 1password x.

    • Set WFAPILIB to the full path of WFAPI lib directory.
    • Set WFAPIINC to the full path of WFAPI include directory.

The WFAPI SDK installs Wfapi.lib into the designated library directory.

Building a Client- side Example for Win 32 using NMAKE¶

  1. Browse to the Visual Studios Common tools folder and run vsvars32.bat.

  2. Open user.mak in the srcexamplesbuild directory. Set the paths corresponding to your installation of WFAPI.

  3. Change to directory Grammerly for outlook mac.

  4. For each example you want to build, type

    • cd clientexample
    • nmake win32.cln
  5. To build the retail modules, type nmake win32

  6. To build the debug modules, type nmake win32.dbg

Building a Client-side Example for Win 32 using Visual Studio¶

  1. For all platforms, the virtual channel driver DLL must export the Load function. You can do this with either a .DEF file or by specifying it as a compiler option in your Visual Studio project setting.

  2. Make sure the calling convention is set to stdcall.

Preparing and Deploying a Virtual Driver¶

Before installing a virtual driver on a client, copy the virtualdriver for the platform to the client device and configure the clientMSI.

  1. Copy the appropriate virtual driver for the platform to the directory on the device where the client is installed. The virtual driver is the .Dll file in srcexamplesvcclientdriverplatformobjretail, where driver is vdmix, vdover, or vdping. The default installation directory is %SystemDrive%Program FilesCitrixICA Client.

  2. Open the standard client MSI package with the Microsoft packaging tools (for example, Orca in the Windows Installer SDK).

  3. Add the virtual channel .DLL to the MSI package.

  4. Modify the Configuration Storage file /configuration/module.ini.

Warning

Editing the Registry incorrectly can cause serious problemsthat may require you to reinstall your operating system. Citrix cannotguarantee that problems resulting from the incorrect use of RegistryEditor can be solved. Use the Registry Editor at your own risk. Besure to back up the registry before you edit it.

  • Locate the VirtualDriverEx string REG_SZ value in the HKEY_LOCAL_MACHINESOFTWARECitrixICAClientEngineConfigurationAdvancedModulesICA3.0 key. Append the name of the virtual driver to the end of this line, for example: VirtualDriverEx = VDPING.
  • Under the HKEY_LOCAL_MACHINESOFTWARECitrixICAClientEngineConfigurationAdvancedModules key, create a new key, where ; is VDMIX, VDOVER, VDPING. For VDPING, the section would be: HKEY_LOCAL_MACHINESOFTWARECitrixICAClientEngineConfigurationAdvancedModules VDPING. Add the following string REG_SZ values under the above key:

The client engine uses DriverName, DriverNameWin16, andDriverNameWin32 to determine the module filename to load for eachplatform. PingCount is a tunable parameter used by the Ping virtualchannel.

5. Repackage the MSI for deployment.

To deploy the MSI¶

Deploy your MSI package with Windows Active Directory Services orMicrosoft Systems Management Server. See your Windows or SystemsManagement Server documentation for more information. No furtherconfiguration is necessary.

Deploy citrix workspace intune

Citrix Msi Installer

To add a virtual channel after installation¶

Because the Module.ini file is installed in the registry, modifyingthe file after installation has no effect. To add a virtual channelafter installation, use the Group Policy template or change theregistry keys corresponding to those in the Module.ini file at thefollowing registry location:

Running an Example Virtual Channel¶

  1. On a client configured with the client-side example, connect to a server running XenApp/XenDesktop with the associated server-side example.

  2. Within the ICA session, run the server-side executable.

The server-side example queries the client-side virtual driver, andthen displays the driver information. Use the -d parameter to display detailed information.

For Ping only: CTXPING sends PingCount separate pings. PingCount has adefault value of three, but can be set in the [Ping] section of theModule.ini file. Each ping consists of a BEGIN packet and an ENDpacket.

Debugging a Win32 virtual driver¶

Use the TRACE feature to log events on the client. To enable the TRACEstatements, you must build the debug version of the virtual driver. Whenthe debug module is installed on the client, the TRACE statements writethe debug information to a file.

At run time, you can specify which class and event flags to trace. Thisallows you to trace only the sections you need, minimizing performancedegradation.

The class flag for virtual channels is 00000080. For the complete listof class and event flags, see Logflags.h (in srcinc).

  1. Compile the debug version of the virtual driver for the client platform.

  2. If it is running, close the client on the client device.

  3. Copy the compiled debug version of the library into the directory on the client device where the client is installed. For example, for the Ping example, copy VdpingN.dll to CitrixICA Client.

  4. Change to the directory containing the client and type:

where:* connection is the name of the connection in Remote ApplicationManager.* xxxxxxxx are the event flags you want to log.* yyyyyyyy are the class flags you want to log.* filename is the relative path of the file to which you want to savethe log.

The client stores the Appsrv.ini file in each user’s profile directory.When starting the ICA session with event logging, add/iniappsrv:%userprofile%”application data”icaclientappsrv.ini tothe end of the command line above.

Citrix Receiver Msi File

Deploying Client Virtual Channels Remotely¶

To deploy virtual channels remotely, make changes based on the followingadministrative template (.adm) file.

Citrix Receiver Download Windows 7 64 Bit

CustomVC is a placeholder for the channel name of the virtual channel.

Citrix Workspace For Windows

Administrative Template Changes for Ping Example¶

For the ping virtual channel example, edit the .adm template file asfollows (changes in the text are in boldface).

Note

The Memory INI functions require the lines in the examplereferencing VCEnable. Every parameter used by the virtual channel mustappear in this file. The client uses these to place securityrestrictions on the virtual channels.

Best Practices¶

Citrix recommends using the .adm file to customize the following parts of the Group

Policy GUI:

  • Specify a name (Additional Virtual Channel in the template file) that describes the functionality provided by the virtual channel.
  • Description text
  • Supplier
  • Reference (for example, add a URL or email address to access furtherinformation).
  • GUI that appears when the policy is double-clicked (optionally and as required).

Do not change the name of the Citrix ComponentsPresentation ServerClientExtensions folder.

Deploy the virtual channel DLL remotely using existing management toolsand enable and configure using the above GUI. You can do this to entiregroups of computers within an organization.





Coments are closed