我们在 ClickOnce 部署的一个应用程序中遇到了这个奇怪的问题:
在某些客户端计算机上,更新应用程序时 ClickOnce 不会复制 .pre 文件夹中的旧数据库。
ClickOnce 会更新应用程序,但它的行为就像是新安装一样。
另一个奇怪的事情是,尽管指定了最低要求的版本,以强制任何客户端更新有此问题的客户端 PC,但仍显示 ClickOnce 升级提示(它还在控制面板中显示“将应用程序恢复到以前的状态”程序和功能”项目)。
实际上,其他客户端 PC 会自动升级而无需提示,并且 ClickOnce 更新的行为也应如此。
这是一个成熟的应用程序,这是我们的第 30 个出版物。
另一个要素是:通常我们使用两台 PC 交替发布此应用程序,但在安装 Visual Studio 2012 后,我们无法使用它们发布 ClickOnce,然后我们创建一个仅用于发布此应用程序的虚拟机。
- - - - - - - 更新 - - - - - - - -
我接受了RobinDotNet的解决方案,因为不依赖 ClickOnce 可靠地移动数据是完全正确的。
我还发现您不能依赖ApplicationDeployment.IsFirstRun。
我更改了我的代码以使用我对 IsFirstRun 的内部检查,现在每个更新都运行顺利。