Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programming .NET apps for Citrix/Terminal server: Compliance and Pitfalls

We are a bit lost here. We need to make our app installable on a network with 80+ Citrix servers. Although our app is 100% valid and working .NET, we've experienced some (for us weird) behavior:

  • You cannot use any "Documents and settings" folders for storing data or settings. Apparently these folders are virtualized and are located in multiple places.
  • Checking if a file exists (i.e., in your own 'program files' folder) doesn't work. Probably for the same reason.

  • Why is the filesystem behaving this way?
  • How do you need to store your data to make an app work on Citrix?
  • Are there any other pitfalls or things you need to know about?
like image 939
Run CMD Avatar asked Jun 07 '10 11:06

Run CMD


2 Answers

A Citrix environment is for practical purposes the same as Remote Desktop Services (used to be Terminal Services) environment.

Microsoft has published Remote Desktop Services Programming Guidelines on MSDN, which is a good starting point to get a feel for what you need to be thinking about.

Microsoft UK Application Development Consulting group has a guide on Developing .NET applications for deployment on Terminal Services or Citrix , which is more performance focused.

You can get free development licenses for Citrix for 12 months, which may be useful for testing.

We've done some deployment to Citrix, and the thing that caught us out must was the Citrix admins fiddling with the permissions for their users. They sometimes broke major parts of Windows, in which case the only thing you can do is log lots :)

good luck!

like image 140
Colin Pickard Avatar answered Oct 28 '22 20:10

Colin Pickard


Sounds like you're not using System.Environment.GetFolderPath(...), which is the correct way to get to the user profile directories. This is the approach I've used in the past with success with Citrix environments.

like image 20
Rowland Shaw Avatar answered Oct 28 '22 20:10

Rowland Shaw