ClickOnce部署并在安装后更改配置文件

时间:2010-01-11 17:54:32

标签: clickonce

我们正在考虑使用ClickOnce进行部署。我不确定使用ClickOnce时是否可以轻松实现这一点。我们创建ClickOnce安装程序并分发给客户端,每个客户端都将ClickOnce安装程序放在他们自己的网络上。客户端的每个用户都将从本地网络运行它。

应用程序在配置文件中有一些设置。每个客户端都有自己的设置(客户端下的所有用户都将使用相同的设置)。我的理解是,一旦创建了ClickOnce包,客户端就无法更改配置文件以设置自己的设置,或者必须重新签名ClickOnce。

我的理解是否正确?有解决方法吗?应用程序是否可以访问ClickOnce清单中未包含的文件的更新位置?

4 个答案:

答案 0 :(得分:3)

如果您的目标是3.5 Framework,则无需签署ClickOnce部署。确保在项目属性的“签名”选项卡上取消选中“签署ClickOnce清单”。这将允许您在创建部署后编辑.application文件。更改deploymentProvider标记的codebase属性...
<deploymentProvider codebase="http://theirserver/.../Foo.application" />

但这并不能解决应用程序设置问题。如果您编辑正在部署的文件,则必须重新生成文件的哈希值。

您知道客户端设置需要什么吗?如果是这样,也许您可​​以为每个客户端分别配置文件,并使用预构建事件执行某些操作来复制配置文件?

设置是否在客户端配置文件中?您可以将设置存储在服务器上并通过url参数传递,或者在应用程序启动后通过Web服务调用获取它吗?

如果这些不起作用,您可以为您的客户提供一个简单的脚本(可能使用Mage),这样他们就可以在编辑部署后重新生成并重新签名清单(使用自己的证书)。 / p>

答案 1 :(得分:1)

我们在公司使用ClickOnce,我必须按URL发布一个包。但是,在您的情况下,您始终可以使用DNS名称发布,并告诉您的客户在其网络上使用相同的DNS名称,并且应始终有效。

答案 2 :(得分:1)

您可能会发现我最近在MSBuild and Multiple environments发布的博文非常有用。请考虑每个客户都可以拥有自己的“环境”,允许您单独指定各种配置。

如果您使用此方法,您仍然可以“签署”部署。

祝你好运!

答案 3 :(得分:0)

还有一个不是很好的解决方案

您可以将配置文件放置到不同的“可选组”,并通过手动使用ApplicationDeployment.DownloadFileGroup下载特定配置。但是,对我而言,这不是一个完美的解决方案。