ClickOnce部署 - 非常混乱

时间:2014-03-28 09:48:56

标签: .net c#-4.0 visual-studio-2012 clickonce

我不确定为我的后续查询提供什么标题,但我真的需要帮助才能理解。

截至目前,我有两个问题需要澄清自己。

查询1:

我的申请背景。

我们有一个“FIRSTRUN = True”的概念,我们在settings.settings中为我们的应用程序设置参数,然后设置“FIRSTRUN = False”。所以从下次应用程序正常启动。使用Click一次的应用程序和部署工作正常 - 没有问题。

查询

现在,回到绘图板,我们对新版本构建的应用程序进行了一些修改。在打包期间,在Settings.settings文件中,我们设置“FIRSTRUN = True”并打包应用程序以供客户端部署。

当客户端部署最新版本的应用程序时,会通知ClickOnce有一个新版本,并且在客户端安装了最新版本 - 到目前为止一切正常。

但是当应用程序再次启动时,不会执行“FIRSTRUN”检查 继续正常开始。

在研究为什么会这样发生的时候,我注意到%appdata%/ local / apps / 2.0 /及其各自的文件夹以及%appdata%/ local / apps / 2.0 / Data文件夹下有多个文件夹同一申请的条目。即使我们打包一个新版本并发送到客户端,它也会使用旧的settings.settings数据然后执行。

为什么会这样?怎么避免这个?

是否每次用户应始终卸载并手动安装最新版本?如果是,那么自动更新功能的用途是什么?在我个人看来,目前的工作方式也很好,但有时客户可能不接受这一点。

问题2

如果用户跳过新版本的更新,如何重新初始化此功能?因为,我们所看到的是很多时候用户点击跳过按钮而不是接受新版本。

有没有办法禁用“SKIP”按钮并始终强制用户接受新版本?

希望得到回应。我对这项技术的疑问仍然很少,但这些是我的首要任务。

2 个答案:

答案 0 :(得分:3)

问题1:是,如果安装了更新,则Click-Once始终会创建新文件夹。您可能已经认识到,如果您转到programm and features并卸载Click-Once应用程序,您可以选择回滚到旧版本。这就是ClickOnce保留一些旧文件的原因。 将设置安全到另一个地方会更好。例如:Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+"\\Application-name"

第二个选项是将这些设置保护到注册表。

问题2:当然有办法做到这一点。您必须取消自动更新并编写自己的更新类或函数。下面是一个示例,只需禁用Message-Box即可安装更新:How to: Check for Application Updates Programmatically Using the ClickOnce Deployment API

答案 1 :(得分:1)

问题1
这内置于ClickOnce中。不要保存自己的设置。请改用ApplicationDeployment.IsFirstRun。该值的行为符合预期,并在用户升级到较新版本时重置。

问题2
请查看本文的'Making Updates Required'部分。通过将最低要求版本设置为当前版本,用户无法选择跳过更新。

相关问题