ClickOnce 回滚
一旦单个用户回滚一个版本,应用程序如何在本地检查这个并提供安装最新版本的选项?
由于技术的持续集成方面,我们的 Clickonce 应用程序众多。我们有一个新版本,用户所要做的就是接受安装。只需将特定于版本的 .application 文件从“Application Files”子目录移动到主根路径,甚至可以全局回滚新版本。如果特定用户需要回滚,他可以简单地从注册表运行卸载字符串或使用控制面板恢复到以前的版本。
我无法解决的一个问题是让该用户重新进入“升级检查”循环。我一直在使用Sysinternals工具Process Monitor来跟踪 ClickOnce 的注册表和文件系统逻辑。查看工具数据,它告诉我本地 ClickOnce 文件的位置和 SideBySide 设置的注册表项。但是,我无法弄清楚要更改哪些设置以覆盖已进行单独回滚的本地用户。我确定他们必须更改注册表中的 SideBySide PackageMetadata 才能完成此任务。
具体来说,我希望用户可以为运行的任何版本的 ClickOnce 应用程序提供两种选择。一个选择强制回滚,另一个选择允许用户回到当前更新的轨道。我只能在代码中完成第一个。
\\Server\Share\{clickonce}.application
\\Server\Share\Application_Files\{clickonce}_{version x}\{Clickonce}.application
\\Server\Share\Application_Files\{clickonce}_{version y}\{Clickonce}.application
Process:
dfsvc.exe
Local Storage:
C:\Users\{user}\AppData\Local\Apps\2.0\{unique}\{unique}
C:\Users\plugged\AppData\Local\Temp\Deployment\{unique}\{unique}.application
Registry:
HKCU\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0\PackageMetadata
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\{guid}