473,915 Members | 5,000 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 2748
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
4708
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 Files\... -directory.
3
964
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
1115
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, so I first set out using that along with Mage.exe. I found mage extremely lacking in options for...
8
1826
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 ClickOnce deployment. Is there some downside to ClickOnce deployment that I'm now aware of? ...
2
2542
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 needs close the form, and restarts the program to the form to initialize properly. The problem is...
6
6846
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
3803
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 etc...now when I publish a new version and my app updates, this xml-files rested in the old folder...
1
1898
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 don't like the con's associated with creating the association programmatically. But my reality is:...
1
1581
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 will come to upgrade to 2.0.0.0 I want every clients with the 1.X.X.X installed TO NOT UPGRADE to...
0
10039
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 usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9881
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 synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
1
11066
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 most users, this new feature is actually very convenient. If you want to control the update process,...
0
9732
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
8100
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 instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
7256
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5943
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 the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
6148
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
3
3368
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.