473,563 Members | 2,445 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Advanced ClickOnce Question

Hi

I have a rather advanced deployment scenario and wanted to know, if anyone
has an idea how to accomplish that with ClickOnce:

We are deploying a 3-tier application with a client connecting to web
services, which then connect to a database. The tiers are all on different
nodes and we have around 1000 client users. We currently deploy the web
services with Wise and adjust the database (cluster) manually. The clients
should be deployed with either No-touch or ClickOnce, as our customer is not
able to manually install the application on the client computers.

No-touch soon proved too rigid, as it apparently only loads assemblies that
are linked/referenced to each other, but our client uses CAB and is highly
decoupled. There are no direct references to some of the assemblies.

So ClickOnce seemed to do the job, but we then came across two difficulties
which we do not know how to solve properly:

1. Our solution is installed on several servers, most importantly for
internal and external users (DMZ), so the web services are found at different
urls by different users. The url to use is read from the app.config file.
Without ClickOnce, we could set that url at install time (when installing a
"template" version on the server that gets copied to the test clients
manually). Now that ClickOnce computes a hash over the app.config file, we
can't change it after compilation...

2. The ClickOnce manifest contains the url where the application is to be
downloaded from. Now, as I layed out above, we have different users that
should get the application from different urls. But as ClickOnce needs the
manifest to be signed, we can't change that value after compilation...

So the obvious solution is to provide different client applications, ready
for ClickOnce deployment and one per configuration (in our case, that would
currently result in 4 versions). But this approach means that everytime the
customer wants to deploy the solution on a different server, we need to
rebuild and ship something.

Can anyone think of a more elegant solution?

Alex
Oct 25 '06 #1
2 2730
Can anyone think of a more elegant solution?

1) Maybe you can program these URLs into the program. Which means,
that you know the target Webservice URL e.g. from the clients
IP-Adress or Hostname. So no settings in App.Config is
necessary.

2) You don't have do build it 4 times, only make a short script,
that copies the app.config into 4 different folders and
automatically signs and zips/mails/ftps the applications.
The first setup is more work, but afterwards you don't have
to care about, if there are 4 or 5 distributed versions.

3) You make a drop-down field on the login-screen, where the
client choses its location. Not fool-proved, but make sure,
that the last settings are stored and after starting it the
first time, users will manage it.

4) You make one public webservice, that everybody can reach. This
tells the client at the first startup (depending on ip-address,
client settings or username) to which webservices he must
connect. This is also only necessary on the first startup and
will be remembered on the local computer for the next starts.

hope to give you some ideas you didn't think about yet.

Markus
Oct 25 '06 #2
I created a similar deployment to what you are describing. The company
where I work sells a very complex piece of software that has been
migrated over to dotnet. In order to use the ClickOnce method of
deployment but retain control over what gets downloaded for the
application, I created a deployment that is essentially a bootstrapper
for our application. After it's on the client and running we then do
the necessary downloads and launch the application in it's own
AppDomain. In doing this we've gotten around the gotchas you mentioned
below. With dotnet the additional work in putting together code to
download the necessary files is minimal.

Hope that helps.

Alex Bögli wrote:
Hi

I have a rather advanced deployment scenario and wanted to know, if anyone
has an idea how to accomplish that with ClickOnce:

We are deploying a 3-tier application with a client connecting to web
services, which then connect to a database. The tiers are all on different
nodes and we have around 1000 client users. We currently deploy the web
services with Wise and adjust the database (cluster) manually. The clients
should be deployed with either No-touch or ClickOnce, as our customer is not
able to manually install the application on the client computers.

No-touch soon proved too rigid, as it apparently only loads assemblies that
are linked/referenced to each other, but our client uses CAB and is highly
decoupled. There are no direct references to some of the assemblies.

So ClickOnce seemed to do the job, but we then came across two difficulties
which we do not know how to solve properly:

1. Our solution is installed on several servers, most importantly for
internal and external users (DMZ), so the web services are found at different
urls by different users. The url to use is read from the app.config file.
Without ClickOnce, we could set that url at install time (when installinga
"template" version on the server that gets copied to the test clients
manually). Now that ClickOnce computes a hash over the app.config file, we
can't change it after compilation...

2. The ClickOnce manifest contains the url where the application is to be
downloaded from. Now, as I layed out above, we have different users that
should get the application from different urls. But as ClickOnce needs the
manifest to be signed, we can't change that value after compilation...

So the obvious solution is to provide different client applications, ready
for ClickOnce deployment and one per configuration (in our case, that would
currently result in 4 versions). But this approach means that everytime the
customer wants to deploy the solution on a different server, we need to
rebuild and ship something.

Can anyone think of a more elegant solution?

Alex
Oct 26 '06 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
4677
by: Mika M | last post by:
Hi! I made ClickOnce deployment for Windows Forms VB 2005 application, and it's working mostly fine. Now I have some question: 1. Is it okay when my application goes into x:\Documents and Settings\...-directory in target computer, or is there something wrong with my ClickOnce deployment? I assumed application(s) goes into x:\Program...
3
947
by: dgk | last post by:
I have an app that I've installed on three computers and I'd like to convert it to use ClickOnce in order to get updates. Any advice on what I need to do to make this happen?
0
1098
by: chris.thistlethwaite | last post by:
Greetings, I have a question about ClickOnce and daily builds. Currently all our software is housed in TFS, and we have a daily build that dumps everything into a nice, neat directory. Now here comes the science. I want to automate ClickOnce so that after the build, it then creates the App and Delpoy manifests. I'm well versed in Powershell,...
8
1803
by: Tina | last post by:
While ASP.Net is migrating toward more robust presentation by using things like AJAX I am wondering if ClickOnce will errode a lot of ASP.Net presence in Corporate Applications. I've been reading a lot about ClickOnce and it seems compelling particularily since Vista will have the .Net framework included along with the other requirements for...
2
2527
by: Michael D. Reed | last post by:
I am using ClickOnce to distribute a program. It works well except for one detail. When a new version is installed, the program does not initialize properly immediately after the update. The sequence is the user starts the program, is informed a new version is ready, installs it, when it is complete and the main form is displayed, the user...
6
6834
by: Irfan | last post by:
hi, After installing the application in the client machine using ClickOnce, i would like that the client be able to change the database path in the Application.Config file. However, clickonce does not copy the Application.Config file when it deploys. How can i be able to do it, Am i missing something in ClickOnce. Thanks
3
3792
by: Peter Wyss | last post by:
Hello! I've a few questions about ClickOnce in VisualStudio 2005. The installation of my application works fine, I published the files on a webserver and installed the app on a winxp client, updates works also fine. But here's my first question: - Our app produces xml-files on startup, which stores several informations like gui-settings...
1
1872
by: =?Utf-8?B?S2VuIExlbWlldXg=?= | last post by:
I've deployed, successfully, several Clickonce applications. The problem I have is the negative reaction to my software when a user attempts to open a file and no association exists between the file and the application. Now I understand the technical’s of why it currently isn't possible to do this 'out of the box' with Clickonce, and I...
1
1565
by: Joe | last post by:
Hello to all! I have an interessting question here concerning ClickOnce technology. I have a .NET 3.5 Windows application that is deployed on client computer via ClickOnce. The version is 1.0.0.0. Now I want my users to get the lastest updates for the 1.X.X.X versions. That is not a problem and easy to do. Of course. However when the time...
0
7658
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
7579
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7876
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
8101
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
7630
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
7941
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
1
5479
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
3628
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
1
2077
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.