ClickOnce Roll-Back
一个用户回滚一个版本后,应用程序如何在本地检查此版本并提供安装最新版本的选项?
由于该技术的持续集成方面,我们的Clickonce应用程序众多。我们有一个新版本,用户所要做的就是接受安装。通过简单地将特定于版本的.application文件从"应用程序文件"移动到主根路径,甚至可以全局回滚新版本。子目录。如果特定用户需要回滚,他只需从注册表运行卸载字符串或使用控制面板恢复到以前的版本。
我无法解决的一个问题是让该用户重新进入"升级检查"环。我一直在使用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}
答案 0 :(得分:0)
我相信我找到了解决方案。要将ClickOnce应用程序恢复到升级循环中,只需从本地版本链接到当前服务器版本。您的ClickOnce应用程序使用桌面图标启动。即使用户回滚本地版本,桌面图标也不会更改,它仍然指向服务器位置。但是,它只会运行本地回滚版本,不会检查更新。解决方案是使用方法启动链接到服务器当前.application文件的进程。这可以通过创建一个新的流程变量,然后使用ClickOnce应用程序的WorkingDirectory和Filename设置“StartInfo”来完成。
\服务器\分享{的ClickOnce}。应用
DGP