Proper way to install a ClickOnce application on Terminal Server

R

Roger Tranchez

Hello,

I would like to know the best way to install an clickonce in .net 3.5 (we
use LINQ 8-D) published application on terminal server 2003

Do I have to install it on EVERY user that will use it ?
If so, all the files will be duplicated for every user ? in wich folder ?
If not, where will reside the application on the server ? how to make a
shortcut for the main "executable" for all the users pointing to that ?

The last question is: my application is a single instance application. If
the user tries to launch it and is already in memory, I handle an event to
maximize the already loaded in memory app, and bring it to the foreground...
This could cause me problems within terminal server, or the check for the
instance will search only from within the actual user's memory/process scope ?

Thanks in advance !

Roger Tranchez
MCTS
..NET 2005 and DB developer
 
J

Jeffrey Tan[MSFT]

Hi Roger,

ClickOnce is a per-user deployment feature, it can not be seen my all the
users in the system(machine-wide). If all the users want to use it, all the
users have to click and install the clickonce application. The clickonce
application executables are maintained in the running user's "Documents and
Settings" folders which are called ClickOnce Cache. For example, one of my
ClickOnce application is downloaded and installed to the path below:
"C:\Documents and Settings\[user name]\Local
Settings\Apps\2.0\E7YB1GQ1.KCQ\ZYCNLLDL.7ZT\work..tion_0f883115a8a87864_0001
.0000_fb2c402e6e30d78a\[appname]"

Please refer to the link to understand ClickOnce cache:
"ClickOnce Cache Overview"
http://msdn2.microsoft.com/en-us/library/267k390a.aspx

If you really want to install machine-wide, you should use Windows
Installer. The link below compares the deployment difference between MSI
and ClickOnce:
"Choosing Between ClickOnce and Windows Installer"
http://msdn2.microsoft.com/en-us/library/ms973805.aspx

Normally, the easiest way of implementing single instance application is
using global named mutex. The principle of this approach leverages the fact
that mutex kernel object can have a global name associated with it.
Multiple processes can see the same registered name. So if the first
process has created the name, the second instance(process)'s creation will
fail.

.Net has the build-in support for the named mutex, so it is easy to use
this approach in .Net:
"Ensuring that only a single instance of a .NET application is running"
http://www.ai.uga.edu/mc/SingleInstance.html

Hope this helps.

Best regards,
Jeffrey Tan
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
R

Roger Tranchez

Hello Jeffrey,

Thanks for your answer, it was very clear.

For the time being, we will continue to deploy the application on our
Terminal Server trough ClickOnce, as it will not take up too much space on
the server.

About the mutex: yes, I know about it... I hope that our current
implementation for the single app instance would not cause us too much
headaches, but if it occurs in the "uncertain" future we'll consider another
options.

Bye,

Roger Tranchez
MCTS
..NET 2005 and DB developer


"Jeffrey Tan[MSFT]" said:
Hi Roger,

ClickOnce is a per-user deployment feature, it can not be seen my all the
users in the system(machine-wide). If all the users want to use it, all the
users have to click and install the clickonce application. The clickonce
application executables are maintained in the running user's "Documents and
Settings" folders which are called ClickOnce Cache. For example, one of my
ClickOnce application is downloaded and installed to the path below:
"C:\Documents and Settings\[user name]\Local
Settings\Apps\2.0\E7YB1GQ1.KCQ\ZYCNLLDL.7ZT\work..tion_0f883115a8a87864_0001
.0000_fb2c402e6e30d78a\[appname]"

Please refer to the link to understand ClickOnce cache:
"ClickOnce Cache Overview"
http://msdn2.microsoft.com/en-us/library/267k390a.aspx

If you really want to install machine-wide, you should use Windows
Installer. The link below compares the deployment difference between MSI
and ClickOnce:
"Choosing Between ClickOnce and Windows Installer"
http://msdn2.microsoft.com/en-us/library/ms973805.aspx

Normally, the easiest way of implementing single instance application is
using global named mutex. The principle of this approach leverages the fact
that mutex kernel object can have a global name associated with it.
Multiple processes can see the same registered name. So if the first
process has created the name, the second instance(process)'s creation will
fail.

.Net has the build-in support for the named mutex, so it is easy to use
this approach in .Net:
"Ensuring that only a single instance of a .NET application is running"
http://www.ai.uga.edu/mc/SingleInstance.html

Hope this helps.

Best regards,
Jeffrey Tan
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
J

Jeffrey Tan[MSFT]

Hi Roger,

Thanks for your confirmation.

Ok, if you need further help, please feel free to feedback, thanks.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
=========================================
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top