Deploying Application on Citrix

I have an Access 2003 application with SQL Server 2000 backend that I wish to deploy on Citrix Presentation Server 4.0.  I have already deployed in a testing environment, with no problems.  However, there are many discussion threads here that mention that each user must have a copy of the front end in their profile, or the file will become corrupted.  

Is this applicable for Citrix, or just for Microsoft Terminal Server.  Im not a network admin, but it seems to me, that Citrix should somehow be able to handle this issue internally without the need to make several copies of the file for each user profile manually.

If I am wrong, and the multiple copy is necessary, can someone assist me with the steps for doing this.  I am very green with Citrix.

LVL 11
Who is Participating?

Improve company productivity with a Business Account.Sign Up

Scott McDaniel (Microsoft Access MVP - EE MVE )Connect With a Mentor Infotrakker SoftwareCommented:
Yes, each user should have their own copy of the frontend. Citrix is nothing more than a "network in a box" and has the same requirements as Terminal Server (they both run on the same platform, and Citrix is basically built on top of Terminal Services). Citrix can no more "handle this" than can Server 2000 or 2003.

You don't need to make copies for each user and deploy them manually, if that's what you're concerned with. I normally build a batch file that runs on user login that copies a frontend to the users MyDocuments folder and then runs that copy. This allows me to easily deploy updates as well, since all I have to do is just drop the new copy into the correct folder on the TS box and the update is done.

Here's a sample batch file:

@Echo Off
COPY "C:\PROGRA~1\LRO\WorkOrders.mde" "%USERPROFILE%\WorkOrders.mde"

This does nothing more than copy one file to the user's My Doc area, then launches a standard .lnk (shortcut) file to properly start the Access program. You can get much fancier, of course, but I've found this to be as easy as anything else.

It's tough to give advice on where to start; I'd assume that, if you have a Citrix box then someone in your organization will be able to assist you with this. If you're doing this for a client, then I'd suggest enlisting the help of a Citrix Pro (since you concede that your Citrix skills are lacking). Setting up a Citrix box correctly is a daunting task even for experienced admins. Of course, the Citrix site offers a lot of web-based assistance, and the good thing about Citrix is you can hire one of their pros to do it off-site (assuming you allow them Admin perms on the box, that is).
Jim P.Commented:
We have Citrix PS4. We use one DB per application with no problems.  Go for it.
Jillyn_DConnect With a Mentor Commented:
Hi BillPowell,

I have several applications with front-end/back-end that are deployed to multiple users in a Citrix environment.  I give each user a fresh copy of the front-end each time they log in, and place it in their profile on the Citrix box.  However, the other programming group has user connect directly.  They run into more corruption than I do, but not significantly more than they did connecting directly accross a semi-flakey network.

Good luck!
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

Jim P.Connect With a Mentor Commented:
We have successfully done published applications of Access DB's from front-ends on Sybase, Oracle and SQL Server to Access only solutions.  We have the one database located in one central location and have both local and citrix users accessing the same mdb without corruption problems.

We had a dodgy network originally, but that was 3-4 years back since we cured that and have not had any corruption issues.
jefftwilleyConnect With a Mentor Commented:
We use a centralized application (shared) with a backside connection to a shared network server and give only the citrix client itself to the users. They don't ever receive the front end of my application...just a shortcut or virtual version of the front end. thus far, no corruption. 50 plus users.
BillPowellAuthor Commented:
This is very interesting.  Differing points of view coming from seasoned Access veterans.  I have always deployed front ends to each users workstation.  I wouldnt have it any other way.
For those who say that having one file on the citrix server shared, would you do the same on a regular network, and if not, why is it any different when your working in a Terminal Services environment?
BillPowellAuthor Commented:
We have an inhouse Citrix Administrator, so with a little more explanation, this would not be hard to implement Im sure.
It's a design choice. In my instance the application deployed on citrix is all transaction based. It is not used for anything more than data entry much like a survey with some import/export and reporting features. for larger applications that require much more processing I deploy a front end app to each desktop with a remote back end catering to that specific location. I also run terminal sessions where I have a central server and a only shortcut to my front end on each user's desktop vs a client. Again, no issues. So I guess it all depends on what you're doing and the capabilities of your network.
Jim P.Commented:
I hate "Me too's" but we pretty much do it the same way as Jeff does his.
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
Install the application's frontend and backend as you normally would, making sure that all the necessary files, libaries, and controls (if needed) are available for All Users. Set the required permissions on the folder hosting the backend (read/write/create/delete for the Remote users group, whatever that may be called on your Citrix installation). Open the frontend and relink to the new backend location on the Citrix box.

If you're using a workgroup file, then build a desktop shortcut that correctly opens your database; if not, you can normally just call it directly, but I prefer to use a shortcut. Let's name the shortcut StartUp.lnk, and set the target to something like this:

"Full path to MSACCESS.exe" "Full path to the database" (add the /wrkgrp "Full path to your workgroup" if using security)

Note that on the Citrix box, the path to msaccess.exe will be the same for everyone, but the path to the database will be different user, so we use the environment variables to point the shortcut to the correct path:

"Full path to MSACCESS.exe" "%USERPROFILE%\UserFrontEnd.mde"

Note that the second part of the shortcut above exactly matches the second part of the COPY line in the batch file below ... that's important.

After building the shortcut, place it somewhere that's available to all users, like the folder hosting the backend file.

Now build a batch file similar to the one described above (we'll call it StartMeUp.bat, apologies to the Stones):

@Echo Off
COPY "C:\PROGRA~1\MyDatabase\MyFrontEnd.mde" "%USERPROFILE%\UserFrontEnd.mde"

If you want this available to all users, place it in the <root>\Documents and Settings\All User\Desktop folder. If you want to deploy it to certain users as needed, then you can do so manually, or you can add your db users to a specific group, and configure a logon script that will copy the shortcut to their %USERPROFILE%\Documents and Settings\Desktop folder. Note that %USERPROFILE% almost always points to the <Root>\Documents and Settings\<User> folder but you might want to verify that first.

So, basically what happens is

1) User logs onto Citrix box
2) User clicks on your StartMeUp.bat file
3) Batch file runs, copying over a new, fresh frontend
4) Batch file then fires the StartUp.lnk file
5) Access opens, and opens your db

So, when you want to deploy a new file, you simply replace the file at C:\PROGRA~1\MyDatabase\MyFrontEnd.mde with a new file, making sure to name it as MyFrontEnd.mde

You can also force your users to only interact with your program by immediately calling the Startup.bat file when they log in ... i'm not sure how Citrix does this, but your admin should be able to advise you how to run a program on startup.


You can find out what server/environment variables are available on your specific box by entering "set" (without the quotes) at a command prompt.
BillPowellAuthor Commented:
Does the users desktop shortcut launch your batch file before it attempts to open the database.  Or is launching the batch file something that Citrix initiates at the beginning of each user session.

Also, does each user get their own shortcut, or can that file be safely shared?
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
Either way ... the user could initiate, or you could configure a logon script that would automatically do so. In TS, we can set the "initial login program" to that batch file ... I'm sure you can do the same with Citrix, but I don't have access to a Citrix box right now.

The shortcut file is shared, there's a paragraph in my earlier post regarding this ...
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.