By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
428,786 Members | 2,241 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 428,786 IT Pros & Developers. It's quick & easy.

Creat an Installation package for client and server

P: n/a
I have developed an application using C# under .NET 2.0 framework. It is
almost done and it is time for me to think about deploymnet to all users. I
don't have any background about this and would like to see if anyone can help
me get started. I have read some about clickonce deployment and not sure
much about this yet. Thanks for your help.

Nov 21 '06 #1
Share this Question
Share on Google+
20 Replies


P: n/a
Hi,

Assuming that you have written a client application and a server
application, you should have two separate installation packages unless you
want a fair number of servers to be clients as well.

ClickOnce works quite nicely, but you may have to configure each client to
increase the permission level for your application if it needs FullTrust,
for example. For this reason, it's not recommended as a public installation
method, so you should use a "Setup and Deployment project" instead if you
need higher levels of trust than normally allowed by web installations and
if you don't have access to configure the security levels on each client.

You can create a ClickOnce installation easily in VS 2005, which will also
help to deploy the files to your server. The clients simply need to connect
to your server the first time to install the application and they'll
automatically receive updated software each time a newer version is
available from the server, making maintenance much easier for you and almost
transparent to the end-users.

"ClickOnce Deployment Overview"
http://msdn2.microsoft.com/en-us/library/142dbbz4.aspx

If you are only installing the server software once then you probably won't
need a ClickOnce deployment for that. Just create a "Setup and Deployment"
project in VS 2005.

"Setup and Deployment Projects"
http://msdn2.microsoft.com/en-us/lib...9t(VS.80).aspx

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:C1**********************************@microsof t.com...
>I have developed an application using C# under .NET 2.0 framework. It is
almost done and it is time for me to think about deploymnet to all users.
I
don't have any background about this and would like to see if anyone can
help
me get started. I have read some about clickonce deployment and not sure
much about this yet. Thanks for your help.

Nov 21 '06 #2

P: n/a
Dave,

Thanks for your response.

I have tried to setup 2 extra setup projects in my application solution. 1
is for client setup and the other is for server setup. As soon as i am done
with this, i have setup.exe and clientsetup.msi under \bin\debug directory
for both client and server. For deployment, i will hand those folder to the
end users and they will run the install. What if i have release a new
version?

About clickonce, it is the great solution for automatically deployment but i
am concern about granting permission when needed. As you mentioned early,
clickonce is not recommended as a public installation. So what is your
recommendation on this? My users are over the state. Thanks,
"Dave Sexton" wrote:
Hi,

Assuming that you have written a client application and a server
application, you should have two separate installation packages unless you
want a fair number of servers to be clients as well.

ClickOnce works quite nicely, but you may have to configure each client to
increase the permission level for your application if it needs FullTrust,
for example. For this reason, it's not recommended as a public installation
method, so you should use a "Setup and Deployment project" instead if you
need higher levels of trust than normally allowed by web installations and
if you don't have access to configure the security levels on each client.

You can create a ClickOnce installation easily in VS 2005, which will also
help to deploy the files to your server. The clients simply need to connect
to your server the first time to install the application and they'll
automatically receive updated software each time a newer version is
available from the server, making maintenance much easier for you and almost
transparent to the end-users.

"ClickOnce Deployment Overview"
http://msdn2.microsoft.com/en-us/library/142dbbz4.aspx

If you are only installing the server software once then you probably won't
need a ClickOnce deployment for that. Just create a "Setup and Deployment"
project in VS 2005.

"Setup and Deployment Projects"
http://msdn2.microsoft.com/en-us/lib...9t(VS.80).aspx

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:C1**********************************@microsof t.com...
I have developed an application using C# under .NET 2.0 framework. It is
almost done and it is time for me to think about deploymnet to all users.
I
don't have any background about this and would like to see if anyone can
help
me get started. I have read some about clickonce deployment and not sure
much about this yet. Thanks for your help.


Nov 21 '06 #3

P: n/a
Hi,
I have tried to setup 2 extra setup projects in my application solution.
1
is for client setup and the other is for server setup. As soon as i am
done
with this, i have setup.exe and clientsetup.msi under \bin\debug directory
for both client and server. For deployment, i will hand those folder to
the
end users and they will run the install. What if i have release a new
version?
Using the GAC for your shared assemblies can ease dependency issues with
concurrently installed versions of your application and updating the
installation package's codes (via the Properties Window) is recommended, but
the users will still have to obtain the latest installation package and
execute it themselves.

There is another property in Setup and Deployment projects that can be used
to tell the Installer whether your latest .msi should replace earlier
versions of the application. In my experience, this is usually desirable,
but that will depend on whether your end-users require the earlier versions
of your application due to dependencies in functionality or the format of
persisted state. You should be careful about introducing breaking changes
into your applications so that all earlier versions may be removed without
harm.
About clickonce, it is the great solution for automatically deployment but
i
am concern about granting permission when needed. As you mentioned early,
clickonce is not recommended as a public installation. So what is your
recommendation on this? My users are over the state. Thanks,
It's not recommended if your application can't deal with restricted security
settings because it will run "sand-boxed", unless configured by the client.
Otherwise, there should be no problem at all. Verify whether your
application can run sand-boxed.

If your clients are all known ahead of time then it might not have to be a
public installation. Here are a few options:

A. Create a VPN for your users to securely connect and download your
ClickOnce installation
B. Allow users to connect to a Virtual Server using Remote Desktop and run
the program from there (this is more complex and not usually desirable by
end-users)
C. Deploy the ClickOnce installation to a public server protected by some
security mechanism (such as Basic Authentication in IIS). You must assign
users names and passwords. The problem with this approach is that you won't
be able to perform automatic updates, IIRC. So your end-users would have to
download updates manually.

--
Dave Sexton
Nov 21 '06 #4

P: n/a
Dave,

I would like all the update will happen automatically. For example, when a
user launch an application, it first cheks to see if there is a new version,
if it is, a user will be asked to run the update, as soon as it is done, then
the app will be launched. Is that possible to do? Thanks,

"Dave Sexton" wrote:
Hi,
I have tried to setup 2 extra setup projects in my application solution.
1
is for client setup and the other is for server setup. As soon as i am
done
with this, i have setup.exe and clientsetup.msi under \bin\debug directory
for both client and server. For deployment, i will hand those folder to
the
end users and they will run the install. What if i have release a new
version?

Using the GAC for your shared assemblies can ease dependency issues with
concurrently installed versions of your application and updating the
installation package's codes (via the Properties Window) is recommended, but
the users will still have to obtain the latest installation package and
execute it themselves.

There is another property in Setup and Deployment projects that can be used
to tell the Installer whether your latest .msi should replace earlier
versions of the application. In my experience, this is usually desirable,
but that will depend on whether your end-users require the earlier versions
of your application due to dependencies in functionality or the format of
persisted state. You should be careful about introducing breaking changes
into your applications so that all earlier versions may be removed without
harm.
About clickonce, it is the great solution for automatically deployment but
i
am concern about granting permission when needed. As you mentioned early,
clickonce is not recommended as a public installation. So what is your
recommendation on this? My users are over the state. Thanks,

It's not recommended if your application can't deal with restricted security
settings because it will run "sand-boxed", unless configured by the client.
Otherwise, there should be no problem at all. Verify whether your
application can run sand-boxed.

If your clients are all known ahead of time then it might not have to be a
public installation. Here are a few options:

A. Create a VPN for your users to securely connect and download your
ClickOnce installation
B. Allow users to connect to a Virtual Server using Remote Desktop and run
the program from there (this is more complex and not usually desirable by
end-users)
C. Deploy the ClickOnce installation to a public server protected by some
security mechanism (such as Basic Authentication in IIS). You must assign
users names and passwords. The problem with this approach is that you won't
be able to perform automatic updates, IIRC. So your end-users would have to
download updates manually.

--
Dave Sexton
Nov 21 '06 #5

P: n/a
Hi,
I would like all the update will happen automatically. For example, when
a
user launch an application, it first cheks to see if there is a new
version,
if it is, a user will be asked to run the update, as soon as it is done,
then
the app will be launched. Is that possible to do? Thanks,
ClickOnce will do that, yes.

You could design that functionality into your own program. I'm not sure
what problems you'll run into since I've never tried myself, but I can't
imagine that it would be too difficult:

1. When the application starts check some persisted setting to see whether
the application should check for newer versions on the web
2. Call into a custom Web Service (on a well-known server) that informs your
application whether a new version is available
3. If so, download the new version and start the installer Process. If not,
open the application as normal.

You'll have to account for security if clients will not be on a private
network or VPN by requiring the clients to authenticate with the server that
hosts the Web Service and installation package.

Your customers will have to manually obtain the installation package for
your application from the web, but only the first time it's installed.

The benefit of this approach is that your application can run with the trust
of the end-user without them having to configure it first, however you'll
have to develop the feature yourself, including a web service.

--
Dave Sexton
Nov 21 '06 #6

P: n/a
Dave,

i have had this information in pieces. If you don't mind, could you put
together all the steps in order to complete the installation package? Thanks,

"Dave Sexton" wrote:
Hi,
I would like all the update will happen automatically. For example, when
a
user launch an application, it first cheks to see if there is a new
version,
if it is, a user will be asked to run the update, as soon as it is done,
then
the app will be launched. Is that possible to do? Thanks,

ClickOnce will do that, yes.

You could design that functionality into your own program. I'm not sure
what problems you'll run into since I've never tried myself, but I can't
imagine that it would be too difficult:

1. When the application starts check some persisted setting to see whether
the application should check for newer versions on the web
2. Call into a custom Web Service (on a well-known server) that informs your
application whether a new version is available
3. If so, download the new version and start the installer Process. If not,
open the application as normal.

You'll have to account for security if clients will not be on a private
network or VPN by requiring the clients to authenticate with the server that
hosts the Web Service and installation package.

Your customers will have to manually obtain the installation package for
your application from the web, but only the first time it's installed.

The benefit of this approach is that your application can run with the trust
of the end-user without them having to configure it first, however you'll
have to develop the feature yourself, including a web service.

--
Dave Sexton
Nov 21 '06 #7

P: n/a
Hi,

The links I posted in my original response should provide all the
information that you need. There are many possible steps depending upon
your requirements. It just doesn't make sense to go through all of them
here.

Basically, you have to go to the "Publish" tab in your project's properties
window and configure ClickOnce there. VS 2005 does everything for you so
it's really just a matter of configuration.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:58**********************************@microsof t.com...
Dave,

i have had this information in pieces. If you don't mind, could you put
together all the steps in order to complete the installation package?
Thanks,

"Dave Sexton" wrote:
>Hi,
I would like all the update will happen automatically. For example,
when
a
user launch an application, it first cheks to see if there is a new
version,
if it is, a user will be asked to run the update, as soon as it is
done,
then
the app will be launched. Is that possible to do? Thanks,

ClickOnce will do that, yes.

You could design that functionality into your own program. I'm not sure
what problems you'll run into since I've never tried myself, but I can't
imagine that it would be too difficult:

1. When the application starts check some persisted setting to see
whether
the application should check for newer versions on the web
2. Call into a custom Web Service (on a well-known server) that informs
your
application whether a new version is available
3. If so, download the new version and start the installer Process. If
not,
open the application as normal.

You'll have to account for security if clients will not be on a private
network or VPN by requiring the clients to authenticate with the server
that
hosts the Web Service and installation package.

Your customers will have to manually obtain the installation package for
your application from the web, but only the first time it's installed.

The benefit of this approach is that your application can run with the
trust
of the end-user without them having to configure it first, however you'll
have to develop the feature yourself, including a web service.

--
Dave Sexton

Nov 21 '06 #8

P: n/a
Dave,

i have another question about choosing a ClickOnce Update strategy. My app
is used by state troopers. They only have high bandwidth network connections
when they are in the offices. Low bandwidth is at all time when they are on
the roads. I know there are three ways that we can do. 1) checking for
updates after application startup 2) checking for updates before applicaton
startup 3) Making udpates required. The first one is best for low bandwidth
and the second one is best for high bandwidth. In my case, the network
connection is changing based on where they are. Some times they will have no
network coverage at all if they are in the far mountains for example.
Thanks,

"Dave Sexton" wrote:
Hi,

The links I posted in my original response should provide all the
information that you need. There are many possible steps depending upon
your requirements. It just doesn't make sense to go through all of them
here.

Basically, you have to go to the "Publish" tab in your project's properties
window and configure ClickOnce there. VS 2005 does everything for you so
it's really just a matter of configuration.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:58**********************************@microsof t.com...
Dave,

i have had this information in pieces. If you don't mind, could you put
together all the steps in order to complete the installation package?
Thanks,

"Dave Sexton" wrote:
Hi,

I would like all the update will happen automatically. For example,
when
a
user launch an application, it first cheks to see if there is a new
version,
if it is, a user will be asked to run the update, as soon as it is
done,
then
the app will be launched. Is that possible to do? Thanks,

ClickOnce will do that, yes.

You could design that functionality into your own program. I'm not sure
what problems you'll run into since I've never tried myself, but I can't
imagine that it would be too difficult:

1. When the application starts check some persisted setting to see
whether
the application should check for newer versions on the web
2. Call into a custom Web Service (on a well-known server) that informs
your
application whether a new version is available
3. If so, download the new version and start the installer Process. If
not,
open the application as normal.

You'll have to account for security if clients will not be on a private
network or VPN by requiring the clients to authenticate with the server
that
hosts the Web Service and installation package.

Your customers will have to manually obtain the installation package for
your application from the web, but only the first time it's installed.

The benefit of this approach is that your application can run with the
trust
of the end-user without them having to configure it first, however you'll
have to develop the feature yourself, including a web service.

--
Dave Sexton


Nov 22 '06 #9

P: n/a
Hi,

My suggestion would be to choose the approach that works best for all
possible situations, which I believe is option 1. In this case, end-users
will have to restart the application for any updates to take affect, but
they'll still be downloading at full-speed when connected to a
high-bandwidth network and when they are mobile it's obviously the best
choice.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:BF**********************************@microsof t.com...
Dave,

i have another question about choosing a ClickOnce Update strategy. My
app
is used by state troopers. They only have high bandwidth network
connections
when they are in the offices. Low bandwidth is at all time when they are
on
the roads. I know there are three ways that we can do. 1) checking for
updates after application startup 2) checking for updates before
applicaton
startup 3) Making udpates required. The first one is best for low
bandwidth
and the second one is best for high bandwidth. In my case, the network
connection is changing based on where they are. Some times they will have
no
network coverage at all if they are in the far mountains for example.
Thanks,

"Dave Sexton" wrote:
>Hi,

The links I posted in my original response should provide all the
information that you need. There are many possible steps depending upon
your requirements. It just doesn't make sense to go through all of them
here.

Basically, you have to go to the "Publish" tab in your project's
properties
window and configure ClickOnce there. VS 2005 does everything for you so
it's really just a matter of configuration.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:58**********************************@microso ft.com...
Dave,

i have had this information in pieces. If you don't mind, could you
put
together all the steps in order to complete the installation package?
Thanks,

"Dave Sexton" wrote:

Hi,

I would like all the update will happen automatically. For example,
when
a
user launch an application, it first cheks to see if there is a new
version,
if it is, a user will be asked to run the update, as soon as it is
done,
then
the app will be launched. Is that possible to do? Thanks,

ClickOnce will do that, yes.

You could design that functionality into your own program. I'm not
sure
what problems you'll run into since I've never tried myself, but I
can't
imagine that it would be too difficult:

1. When the application starts check some persisted setting to see
whether
the application should check for newer versions on the web
2. Call into a custom Web Service (on a well-known server) that
informs
your
application whether a new version is available
3. If so, download the new version and start the installer Process.
If
not,
open the application as normal.

You'll have to account for security if clients will not be on a
private
network or VPN by requiring the clients to authenticate with the
server
that
hosts the Web Service and installation package.

Your customers will have to manually obtain the installation package
for
your application from the web, but only the first time it's installed.

The benefit of this approach is that your application can run with the
trust
of the end-user without them having to configure it first, however
you'll
have to develop the feature yourself, including a web service.

--
Dave Sexton



Nov 22 '06 #10

P: n/a
option 1 is what i thought as well. What i am not sure is i only want the
update to happen when the network is high which means that they can only do
when they are in the office. When they are on the roads, this option won't
happen, the update and download have to be ignored. Thanks,

"Dave Sexton" wrote:
Hi,

My suggestion would be to choose the approach that works best for all
possible situations, which I believe is option 1. In this case, end-users
will have to restart the application for any updates to take affect, but
they'll still be downloading at full-speed when connected to a
high-bandwidth network and when they are mobile it's obviously the best
choice.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:BF**********************************@microsof t.com...
Dave,

i have another question about choosing a ClickOnce Update strategy. My
app
is used by state troopers. They only have high bandwidth network
connections
when they are in the offices. Low bandwidth is at all time when they are
on
the roads. I know there are three ways that we can do. 1) checking for
updates after application startup 2) checking for updates before
applicaton
startup 3) Making udpates required. The first one is best for low
bandwidth
and the second one is best for high bandwidth. In my case, the network
connection is changing based on where they are. Some times they will have
no
network coverage at all if they are in the far mountains for example.
Thanks,

"Dave Sexton" wrote:
Hi,

The links I posted in my original response should provide all the
information that you need. There are many possible steps depending upon
your requirements. It just doesn't make sense to go through all of them
here.

Basically, you have to go to the "Publish" tab in your project's
properties
window and configure ClickOnce there. VS 2005 does everything for you so
it's really just a matter of configuration.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:58**********************************@microsof t.com...
Dave,

i have had this information in pieces. If you don't mind, could you
put
together all the steps in order to complete the installation package?
Thanks,

"Dave Sexton" wrote:

Hi,

I would like all the update will happen automatically. For example,
when
a
user launch an application, it first cheks to see if there is a new
version,
if it is, a user will be asked to run the update, as soon as it is
done,
then
the app will be launched. Is that possible to do? Thanks,

ClickOnce will do that, yes.

You could design that functionality into your own program. I'm not
sure
what problems you'll run into since I've never tried myself, but I
can't
imagine that it would be too difficult:

1. When the application starts check some persisted setting to see
whether
the application should check for newer versions on the web
2. Call into a custom Web Service (on a well-known server) that
informs
your
application whether a new version is available
3. If so, download the new version and start the installer Process.
If
not,
open the application as normal.

You'll have to account for security if clients will not be on a
private
network or VPN by requiring the clients to authenticate with the
server
that
hosts the Web Service and installation package.

Your customers will have to manually obtain the installation package
for
your application from the web, but only the first time it's installed.

The benefit of this approach is that your application can run with the
trust
of the end-user without them having to configure it first, however
you'll
have to develop the feature yourself, including a web service.

--
Dave Sexton



Nov 22 '06 #11

P: n/a
Hi,
option 1 is what i thought as well. What i am not sure is i only want the
update to happen when the network is high which means that they can only
do
when they are in the office. When they are on the roads, this option
won't
happen, the update and download have to be ignored. Thanks,
That's an interesting point.

The application should work when there is no connectivity at all:

"Application updates require network connectivity. If a network connection
is not present, the application will run without checking for updates,
regardless of the update strategy that you choose."

"Choosing a ClickOnce Update Strategy"
http://msdn2.microsoft.com/en-us/library/s22azw1e.aspx

(All citations in the remainder of this post refer to the document at the
url above)

When there is limited connectivity, ClickOnce will still attempt to download
any updates if you've configured it to do so.

If you will be making a lot of updates or if the speed at which updates are
downloaded and installed when a client has limited connectivity is
unacceptable, then you can do one of three things:

1. Choose the first option in your list (check after startup) and configure
the update interval appropriately:

"For example, you may want to check each time the application runs, or once
a week, or once a month. If a network connection is not present at the
specified time, the update check is performed the next time the application
runs."
Specifying Update Intervals

2. Allow the user to choose when it's appropriate to check for updates:

"For example, you might provide a "Check for Updates Now" menu item, or an
"Update Settings" dialog box with choices for different update intervals."
Providing a User Interface For Updates

3. Use a standard "Setup and Deployment" project and require users to
periodically check an ftp site or web site for updates.

(You may even have one more option, which is xcopy deployment).

It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration.

--
Dave Sexton
Nov 22 '06 #12

P: n/a
I have read "Choose a ClickOnce update strategy" even before i asked you the
question below. It is obvious that if there is no network connection, there
is no update. When network is limited, how can i configure that the
application won't check for the update and download? Because of this
problem, i do think option 2 which is allow user to check for updates maybe a
better choice since from here i can check for current network connectivity
level.

"Dave Sexton" wrote:
Hi,
option 1 is what i thought as well. What i am not sure is i only want the
update to happen when the network is high which means that they can only
do
when they are in the office. When they are on the roads, this option
won't
happen, the update and download have to be ignored. Thanks,

That's an interesting point.

The application should work when there is no connectivity at all:

"Application updates require network connectivity. If a network connection
is not present, the application will run without checking for updates,
regardless of the update strategy that you choose."

"Choosing a ClickOnce Update Strategy"
http://msdn2.microsoft.com/en-us/library/s22azw1e.aspx

(All citations in the remainder of this post refer to the document at the
url above)

When there is limited connectivity, ClickOnce will still attempt to download
any updates if you've configured it to do so.

If you will be making a lot of updates or if the speed at which updates are
downloaded and installed when a client has limited connectivity is
unacceptable, then you can do one of three things:

1. Choose the first option in your list (check after startup) and configure
the update interval appropriately:

"For example, you may want to check each time the application runs, or once
a week, or once a month. If a network connection is not present at the
specified time, the update check is performed the next time the application
runs."
§ Specifying Update Intervals

2. Allow the user to choose when it's appropriate to check for updates:

"For example, you might provide a "Check for Updates Now" menu item, or an
"Update Settings" dialog box with choices for different update intervals."
§ Providing a User Interface For Updates

3. Use a standard "Setup and Deployment" project and require users to
periodically check an ftp site or web site for updates.

(You may even have one more option, which is xcopy deployment).

It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration.

--
Dave Sexton
Nov 22 '06 #13

P: n/a
Hi,

ClickOnce cannot be configured to pass on updates when network connectivity
is low, AFAIK.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:75**********************************@microsof t.com...
>I have read "Choose a ClickOnce update strategy" even before i asked you
the
question below. It is obvious that if there is no network connection,
there
is no update. When network is limited, how can i configure that the
application won't check for the update and download? Because of this
problem, i do think option 2 which is allow user to check for updates
maybe a
better choice since from here i can check for current network connectivity
level.

"Dave Sexton" wrote:
>Hi,
option 1 is what i thought as well. What i am not sure is i only want
the
update to happen when the network is high which means that they can
only
do
when they are in the office. When they are on the roads, this option
won't
happen, the update and download have to be ignored. Thanks,

That's an interesting point.

The application should work when there is no connectivity at all:

"Application updates require network connectivity. If a network
connection
is not present, the application will run without checking for updates,
regardless of the update strategy that you choose."

"Choosing a ClickOnce Update Strategy"
http://msdn2.microsoft.com/en-us/library/s22azw1e.aspx

(All citations in the remainder of this post refer to the document at the
url above)

When there is limited connectivity, ClickOnce will still attempt to
download
any updates if you've configured it to do so.

If you will be making a lot of updates or if the speed at which updates
are
downloaded and installed when a client has limited connectivity is
unacceptable, then you can do one of three things:

1. Choose the first option in your list (check after startup) and
configure
the update interval appropriately:

"For example, you may want to check each time the application runs, or
once
a week, or once a month. If a network connection is not present at the
specified time, the update check is performed the next time the
application
runs."
Specifying Update Intervals

2. Allow the user to choose when it's appropriate to check for updates:

"For example, you might provide a "Check for Updates Now" menu item, or
an
"Update Settings" dialog box with choices for different update
intervals."
Providing a User Interface For Updates

3. Use a standard "Setup and Deployment" project and require users to
periodically check an ftp site or web site for updates.

(You may even have one more option, which is xcopy deployment).

It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration.

--
Dave Sexton

Nov 26 '06 #14

P: n/a
Do you have any suggestions of the best way to do solve this? Appreciate
your help.

"Dave Sexton" wrote:
Hi,

ClickOnce cannot be configured to pass on updates when network connectivity
is low, AFAIK.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:75**********************************@microsof t.com...
I have read "Choose a ClickOnce update strategy" even before i asked you
the
question below. It is obvious that if there is no network connection,
there
is no update. When network is limited, how can i configure that the
application won't check for the update and download? Because of this
problem, i do think option 2 which is allow user to check for updates
maybe a
better choice since from here i can check for current network connectivity
level.

"Dave Sexton" wrote:
Hi,

option 1 is what i thought as well. What i am not sure is i only want
the
update to happen when the network is high which means that they can
only
do
when they are in the office. When they are on the roads, this option
won't
happen, the update and download have to be ignored. Thanks,

That's an interesting point.

The application should work when there is no connectivity at all:

"Application updates require network connectivity. If a network
connection
is not present, the application will run without checking for updates,
regardless of the update strategy that you choose."

"Choosing a ClickOnce Update Strategy"
http://msdn2.microsoft.com/en-us/library/s22azw1e.aspx

(All citations in the remainder of this post refer to the document at the
url above)

When there is limited connectivity, ClickOnce will still attempt to
download
any updates if you've configured it to do so.

If you will be making a lot of updates or if the speed at which updates
are
downloaded and installed when a client has limited connectivity is
unacceptable, then you can do one of three things:

1. Choose the first option in your list (check after startup) and
configure
the update interval appropriately:

"For example, you may want to check each time the application runs, or
once
a week, or once a month. If a network connection is not present at the
specified time, the update check is performed the next time the
application
runs."
§ Specifying Update Intervals

2. Allow the user to choose when it's appropriate to check for updates:

"For example, you might provide a "Check for Updates Now" menu item, or
an
"Update Settings" dialog box with choices for different update
intervals."
§ Providing a User Interface For Updates

3. Use a standard "Setup and Deployment" project and require users to
periodically check an ftp site or web site for updates.

(You may even have one more option, which is xcopy deployment).

It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration.

--
Dave Sexton


Nov 28 '06 #15

P: n/a
Do you have any suggestions of the best way to solve this? Appreciate your
help.

"Dave Sexton" wrote:
Hi,

ClickOnce cannot be configured to pass on updates when network connectivity
is low, AFAIK.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:75**********************************@microsof t.com...
I have read "Choose a ClickOnce update strategy" even before i asked you
the
question below. It is obvious that if there is no network connection,
there
is no update. When network is limited, how can i configure that the
application won't check for the update and download? Because of this
problem, i do think option 2 which is allow user to check for updates
maybe a
better choice since from here i can check for current network connectivity
level.

"Dave Sexton" wrote:
Hi,

option 1 is what i thought as well. What i am not sure is i only want
the
update to happen when the network is high which means that they can
only
do
when they are in the office. When they are on the roads, this option
won't
happen, the update and download have to be ignored. Thanks,

That's an interesting point.

The application should work when there is no connectivity at all:

"Application updates require network connectivity. If a network
connection
is not present, the application will run without checking for updates,
regardless of the update strategy that you choose."

"Choosing a ClickOnce Update Strategy"
http://msdn2.microsoft.com/en-us/library/s22azw1e.aspx

(All citations in the remainder of this post refer to the document at the
url above)

When there is limited connectivity, ClickOnce will still attempt to
download
any updates if you've configured it to do so.

If you will be making a lot of updates or if the speed at which updates
are
downloaded and installed when a client has limited connectivity is
unacceptable, then you can do one of three things:

1. Choose the first option in your list (check after startup) and
configure
the update interval appropriately:

"For example, you may want to check each time the application runs, or
once
a week, or once a month. If a network connection is not present at the
specified time, the update check is performed the next time the
application
runs."
§ Specifying Update Intervals

2. Allow the user to choose when it's appropriate to check for updates:

"For example, you might provide a "Check for Updates Now" menu item, or
an
"Update Settings" dialog box with choices for different update
intervals."
§ Providing a User Interface For Updates

3. Use a standard "Setup and Deployment" project and require users to
periodically check an ftp site or web site for updates.

(You may even have one more option, which is xcopy deployment).

It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration.

--
Dave Sexton


Nov 28 '06 #16

P: n/a
Hi,

I already stated that, of the three choices I supplied, #1 sounds like the
best choice to me. But if you feel like doing some coding, #2 could work as
well. #3 is a last resort - not using ClickOnce at all.

Have I misunderstood the problem at hand?

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:A5**********************************@microsof t.com...
Do you have any suggestions of the best way to do solve this? Appreciate
your help.

"Dave Sexton" wrote:
>Hi,

ClickOnce cannot be configured to pass on updates when network
connectivity
is low, AFAIK.

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:75**********************************@microso ft.com...
>I have read "Choose a ClickOnce update strategy" even before i asked you
the
question below. It is obvious that if there is no network connection,
there
is no update. When network is limited, how can i configure that the
application won't check for the update and download? Because of this
problem, i do think option 2 which is allow user to check for updates
maybe a
better choice since from here i can check for current network
connectivity
level.

"Dave Sexton" wrote:

Hi,

option 1 is what i thought as well. What i am not sure is i only
want
the
update to happen when the network is high which means that they can
only
do
when they are in the office. When they are on the roads, this
option
won't
happen, the update and download have to be ignored. Thanks,

That's an interesting point.

The application should work when there is no connectivity at all:

"Application updates require network connectivity. If a network
connection
is not present, the application will run without checking for updates,
regardless of the update strategy that you choose."

"Choosing a ClickOnce Update Strategy"
http://msdn2.microsoft.com/en-us/library/s22azw1e.aspx

(All citations in the remainder of this post refer to the document at
the
url above)

When there is limited connectivity, ClickOnce will still attempt to
download
any updates if you've configured it to do so.

If you will be making a lot of updates or if the speed at which
updates
are
downloaded and installed when a client has limited connectivity is
unacceptable, then you can do one of three things:

1. Choose the first option in your list (check after startup) and
configure
the update interval appropriately:

"For example, you may want to check each time the application runs, or
once
a week, or once a month. If a network connection is not present at the
specified time, the update check is performed the next time the
application
runs."
Specifying Update Intervals

2. Allow the user to choose when it's appropriate to check for
updates:

"For example, you might provide a "Check for Updates Now" menu item,
or
an
"Update Settings" dialog box with choices for different update
intervals."
Providing a User Interface For Updates

3. Use a standard "Setup and Deployment" project and require users to
periodically check an ftp site or web site for updates.

(You may even have one more option, which is xcopy deployment).

It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration.

--
Dave Sexton



Nov 28 '06 #17

P: n/a
Hi,
Because of the special requiremnet that download and update won't happen
when
the network connectivity is low. Only high. That is why i can't use
ClickOnce update automatically. It will have to be programatically. I
think
you may have missed the important part that no download and update when
network connectivity is low.
Actually, that's why I brought up option #2, and this is what I said about
it:

"It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration."

It's your choice, since you know whether it's a requirement or something you
can avoid. I don't think that what you want is possible in ClickOnce, as
I've already stated, without programming it. Therefore, #2 might be your
only option. #1, IMO, is preferable if you can avoid this "feature".
I have created a very simple app and public it using ClickOnce technology.
I public it to a file share which is in my C drive
(C:\DeployTest\ClickOnceTest\). Run the setup.exe and it is installed in
my
PC (pretent that i am the end user). Then i created another form called
to
do the update but for some reason the
applicationDeployment.IsNetworkDeployed
returns fall all the time. here is the code. Hope you can help me with
this.
I have found the code from the msdn website. Thanks,
It sounds like, from the MSDN documentation, that your app isn't a ClickOnce
application or was installed on the local computer when the
IsNetworkDeployed property returns false:

"If you want your application to run both inside and outside of a ClickOnce
deployment (for example, if you need to debug your application on the local
computer before deploying it), test IsNetworkDeployed before accessing the
CurrentDeployment property.

IsNetworkDeployed will return true regardless of whether the application is
installed or hosted online, and regardless of whether it was installed from
a Web site, file share, or CD-ROM."

"ApplicationDeployment.IsNetworkDeployed Property"
http://msdn2.microsoft.com/en-us/lib...kdeployed.aspx

<snip>

In the future, you may find it easier to load up the MSDN documentation for
classes and APIs that you don't understand. Reading the documentation
should prove to be quicker than waiting for responses in newsgroups, and
you'll acquire a much better understanding about the subject matter. I
recommend asking questions in newsgroups after you do the research or if you
don't quite understand something that you've read. My responses in this
thread were based partially on knowledge that I acquired from the
documentation on MSDN, which is readily available to you as well :)

HTH

--
Dave Sexton
Nov 30 '06 #18

P: n/a
Hi,

Well, from the docs on MSDN it looks like you might have to use a program
called MageUI.exe. I haven't used this myself, so I'm not sure how it
works, but it seems that you might have to manually configure the
application manifest (AFAICT).

"How to: Check for Application Updates Programmatically Using the ClickOnce
Deployment API"
http://msdn2.microsoft.com/en-us/lib...63(VS.80).aspx

(Check out the table of contents (TOC) to the left and you'll see a whole
bunch of links to information regarding ClickOnce deployments.)

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:AE**********************************@microsof t.com...
>I appreciate your help.

i have a sample app (it just has a simple form) and i pulish it but i
uncheck the "appliation should check for update" since i don't want to the
application to automatically check for the new version. I got that part
done
and working. Then i add a update form in the same solution. The form has
a
"update button" and that is the event handler when the event is raised.
But
it always returns "no new version" and it makes sense because i run the
setup
again so it has the lastest version. Then i create a new application with
an
update in there and it is still the same thing. I am trying to come up
with
the way to test for update programatically. Do you have any ideas how
this
can be done? thanks,

"Dave Sexton" wrote:
>Hi,
Because of the special requiremnet that download and update won't
happen
when
the network connectivity is low. Only high. That is why i can't use
ClickOnce update automatically. It will have to be programatically. I
think
you may have missed the important part that no download and update when
network connectivity is low.

Actually, that's why I brought up option #2, and this is what I said
about
it:

"It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration."

It's your choice, since you know whether it's a requirement or something
you
can avoid. I don't think that what you want is possible in ClickOnce, as
I've already stated, without programming it. Therefore, #2 might be your
only option. #1, IMO, is preferable if you can avoid this "feature".
I have created a very simple app and public it using ClickOnce
technology.
I public it to a file share which is in my C drive
(C:\DeployTest\ClickOnceTest\). Run the setup.exe and it is installed
in
my
PC (pretent that i am the end user). Then i created another form
called
to
do the update but for some reason the
applicationDeployment.IsNetworkDeployed
returns fall all the time. here is the code. Hope you can help me with
this.
I have found the code from the msdn website. Thanks,

It sounds like, from the MSDN documentation, that your app isn't a
ClickOnce
application or was installed on the local computer when the
IsNetworkDeployed property returns false:

"If you want your application to run both inside and outside of a
ClickOnce
deployment (for example, if you need to debug your application on the
local
computer before deploying it), test IsNetworkDeployed before accessing
the
CurrentDeployment property.

IsNetworkDeployed will return true regardless of whether the application
is
installed or hosted online, and regardless of whether it was installed
from
a Web site, file share, or CD-ROM."

"ApplicationDeployment.IsNetworkDeployed Property"
http://msdn2.microsoft.com/en-us/lib...kdeployed.aspx

<snip>

In the future, you may find it easier to load up the MSDN documentation
for
classes and APIs that you don't understand. Reading the documentation
should prove to be quicker than waiting for responses in newsgroups, and
you'll acquire a much better understanding about the subject matter. I
recommend asking questions in newsgroups after you do the research or if
you
don't quite understand something that you've read. My responses in this
thread were based partially on knowledge that I acquired from the
documentation on MSDN, which is readily available to you as well :)

HTH

--
Dave Sexton

Dec 2 '06 #19

P: n/a
After doing some research, i don't think ClickOnce works well for us down the
road. We are thinking about ftp file synch. Download the new version if
available to user machine. Is it possible? Thanks.

"Dave Sexton" wrote:
Hi,

Well, from the docs on MSDN it looks like you might have to use a program
called MageUI.exe. I haven't used this myself, so I'm not sure how it
works, but it seems that you might have to manually configure the
application manifest (AFAICT).

"How to: Check for Application Updates Programmatically Using the ClickOnce
Deployment API"
http://msdn2.microsoft.com/en-us/lib...63(VS.80).aspx

(Check out the table of contents (TOC) to the left and you'll see a whole
bunch of links to information regarding ClickOnce deployments.)

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:AE**********************************@microsof t.com...
I appreciate your help.

i have a sample app (it just has a simple form) and i pulish it but i
uncheck the "appliation should check for update" since i don't want to the
application to automatically check for the new version. I got that part
done
and working. Then i add a update form in the same solution. The form has
a
"update button" and that is the event handler when the event is raised.
But
it always returns "no new version" and it makes sense because i run the
setup
again so it has the lastest version. Then i create a new application with
an
update in there and it is still the same thing. I am trying to come up
with
the way to test for update programatically. Do you have any ideas how
this
can be done? thanks,

"Dave Sexton" wrote:
Hi,

Because of the special requiremnet that download and update won't
happen
when
the network connectivity is low. Only high. That is why i can't use
ClickOnce update automatically. It will have to be programatically. I
think
you may have missed the important part that no download and update when
network connectivity is low.

Actually, that's why I brought up option #2, and this is what I said
about
it:

"It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration."

It's your choice, since you know whether it's a requirement or something
you
can avoid. I don't think that what you want is possible in ClickOnce, as
I've already stated, without programming it. Therefore, #2 might be your
only option. #1, IMO, is preferable if you can avoid this "feature".

I have created a very simple app and public it using ClickOnce
technology.
I public it to a file share which is in my C drive
(C:\DeployTest\ClickOnceTest\). Run the setup.exe and it is installed
in
my
PC (pretent that i am the end user). Then i created another form
called
to
do the update but for some reason the
applicationDeployment.IsNetworkDeployed
returns fall all the time. here is the code. Hope you can help me with
this.
I have found the code from the msdn website. Thanks,

It sounds like, from the MSDN documentation, that your app isn't a
ClickOnce
application or was installed on the local computer when the
IsNetworkDeployed property returns false:

"If you want your application to run both inside and outside of a
ClickOnce
deployment (for example, if you need to debug your application on the
local
computer before deploying it), test IsNetworkDeployed before accessing
the
CurrentDeployment property.

IsNetworkDeployed will return true regardless of whether the application
is
installed or hosted online, and regardless of whether it was installed
from
a Web site, file share, or CD-ROM."

"ApplicationDeployment.IsNetworkDeployed Property"
http://msdn2.microsoft.com/en-us/lib...kdeployed.aspx

<snip>

In the future, you may find it easier to load up the MSDN documentation
for
classes and APIs that you don't understand. Reading the documentation
should prove to be quicker than waiting for responses in newsgroups, and
you'll acquire a much better understanding about the subject matter. I
recommend asking questions in newsgroups after you do the research or if
you
don't quite understand something that you've read. My responses in this
thread were based partially on knowledge that I acquired from the
documentation on MSDN, which is readily available to you as well :)

HTH

--
Dave Sexton


Dec 4 '06 #20

P: n/a
Hi,

By "ftp file synch", do you mean that you'll write your own program that
monitors an ftp directory?

That would surely work, however that's basically what ClickOnce does anyway.
Automatically or on demand, ClickOnce will check whether a newer version is
available on a web server, download it and then install it. Why reinvent
the wheel?

BTW, the requirement to defer updates when the program detects low network
connectivity doesn't really make much sense anyway. What happens if the
program detects high connectivity, then the user moves to a place with low
connectivity, or no connectivity at all, while the download is in progress?

I think that allowing the user to choose when they will perform the update
is a good choice, but if coding ClickOnce to do this is too complex for you
then I can't see how a custom solution is going to be any easier to develop
unless you already "know" exactly how to do it.

GL

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:83**********************************@microsof t.com...
After doing some research, i don't think ClickOnce works well for us down
the
road. We are thinking about ftp file synch. Download the new version if
available to user machine. Is it possible? Thanks.

"Dave Sexton" wrote:
>Hi,

Well, from the docs on MSDN it looks like you might have to use a program
called MageUI.exe. I haven't used this myself, so I'm not sure how it
works, but it seems that you might have to manually configure the
application manifest (AFAICT).

"How to: Check for Application Updates Programmatically Using the
ClickOnce
Deployment API"
http://msdn2.microsoft.com/en-us/lib...63(VS.80).aspx

(Check out the table of contents (TOC) to the left and you'll see a whole
bunch of links to information regarding ClickOnce deployments.)

--
Dave Sexton

"piggy" <pi***@discussions.microsoft.comwrote in message
news:AE**********************************@microso ft.com...
>I appreciate your help.

i have a sample app (it just has a simple form) and i pulish it but i
uncheck the "appliation should check for update" since i don't want to
the
application to automatically check for the new version. I got that
part
done
and working. Then i add a update form in the same solution. The form
has
a
"update button" and that is the event handler when the event is raised.
But
it always returns "no new version" and it makes sense because i run the
setup
again so it has the lastest version. Then i create a new application
with
an
update in there and it is still the same thing. I am trying to come up
with
the way to test for update programatically. Do you have any ideas how
this
can be done? thanks,

"Dave Sexton" wrote:

Hi,

Because of the special requiremnet that download and update won't
happen
when
the network connectivity is low. Only high. That is why i can't
use
ClickOnce update automatically. It will have to be programatically.
I
think
you may have missed the important part that no download and update
when
network connectivity is low.

Actually, that's why I brought up option #2, and this is what I said
about
it:

"It sounds to me like option 1 is your best choice, but option 2 is
definitely worth consideration."

It's your choice, since you know whether it's a requirement or
something
you
can avoid. I don't think that what you want is possible in ClickOnce,
as
I've already stated, without programming it. Therefore, #2 might be
your
only option. #1, IMO, is preferable if you can avoid this "feature".

I have created a very simple app and public it using ClickOnce
technology.
I public it to a file share which is in my C drive
(C:\DeployTest\ClickOnceTest\). Run the setup.exe and it is
installed
in
my
PC (pretent that i am the end user). Then i created another form
called
to
do the update but for some reason the
applicationDeployment.IsNetworkDeployed
returns fall all the time. here is the code. Hope you can help me
with
this.
I have found the code from the msdn website. Thanks,

It sounds like, from the MSDN documentation, that your app isn't a
ClickOnce
application or was installed on the local computer when the
IsNetworkDeployed property returns false:

"If you want your application to run both inside and outside of a
ClickOnce
deployment (for example, if you need to debug your application on the
local
computer before deploying it), test IsNetworkDeployed before accessing
the
CurrentDeployment property.

IsNetworkDeployed will return true regardless of whether the
application
is
installed or hosted online, and regardless of whether it was installed
from
a Web site, file share, or CD-ROM."

"ApplicationDeployment.IsNetworkDeployed Property"
http://msdn2.microsoft.com/en-us/lib...kdeployed.aspx

<snip>

In the future, you may find it easier to load up the MSDN
documentation
for
classes and APIs that you don't understand. Reading the documentation
should prove to be quicker than waiting for responses in newsgroups,
and
you'll acquire a much better understanding about the subject matter.
I
recommend asking questions in newsgroups after you do the research or
if
you
don't quite understand something that you've read. My responses in
this
thread were based partially on knowledge that I acquired from the
documentation on MSDN, which is readily available to you as well :)

HTH

--
Dave Sexton



Dec 4 '06 #21

This discussion thread is closed

Replies have been disabled for this discussion.