我希望我的用户能够使用单击一次更新到特定版本。目前我们有帮助 | 检查更新,它只是更新到最新版本。
我想添加帮助 | 更新到版本(然后会提示用户输入一个版本号,并将它们更新到该版本(如果它们当前使用较低版本或使用较高版本))。
该应用程序是使用 c# 开发的
- 请注意,我们希望通过应用程序而不是外部的应用程序来执行此操作,例如,我们知道我们可以通过控制面板等回滚......但我们想要的是应用程序内的工具可以转到高于或低于当前版本的特定版本.
每次发布后,我只需做一些额外的工作就可以实现此功能,而无需用户提供详细说明。获取特定版本的方式是您需要为每个版本拥有多个 clickonce 目录
发布后,您需要在记事本中打开 myApplication.application 并进行更改
<deploymentProvider codebase="http://www.example.com/ClickOnce/MyApplication/MyApplication.application" />
至
<deploymentProvider codebase="http://www.example.com/ClickOnce/MyApplication1.02.03.45/MyApplication.application" />
或您将提供的任何版本;在上传到 clickonce 之前。
以下是用户如何获得特定版本
Public Shared Sub GetSpecificVersion()
Try
Dim spre As String = InputBox("press enter to download the current version of myApplication. If you would want to download a specific version of myApplication please append the version number i.e myApplication1.02.03.45", , "myApplication")
Dim spost As String = "/myApplication.application"
Dim finalUrl As String = "http://www.example.com/clickonce/"
finalUrl = finalUrl & spre & spost
Try
My.Computer.Network.DownloadFile(finalUrl, "C:/ProgramFiles", Nothing, Nothing, Nothing,
1000, True) 'url/filename/username/password/showui/timeout/overwriteExiting
Process.Start("C:/ProgramFiles/myApplication.application")
Application.Current.Shutdown()
Dim r As String
Catch ex As Exception
MsgBox("The desired version of myApplication may not be typed correctly or is unavailable on clickonce. alternatively a connection could not be established to the clickonce server")
MsgBox(ex.ToString())
End Try
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
要获得特定版本,用户只需输入版本“myApplication1.02.34
这样做的副作用是使用清单检查连续更新只会检查该特定文件夹,我创建了第二种方法来从默认目录获取最新版本:
继承人获得中央版本
Public Shared Sub GetLatestCentralizedVersion()
Try
My.Computer.Network.DownloadFile("http://www.example.com/clickonce/myApplication/myApplication.application", "C:/ProgramFiles/myApplication.application", Nothing, Nothing, Nothing, 1000, True) 'url/filename/username/password/showui/timeout/overwrite
Process.Start("C:/ProgramFiles/myApplication.application")
Application.Current.Shutdown()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
不理想,但如果您迫切需要检索旧的二进制文件,它会有所帮助
setup.exe
,publish.htm
myapplicationname.application
在其他文件中,它还有一个名为Application Files
Application Files
文件夹中,您将找到所有以前 ClickOnce 上传的版本myapplicationname_1_2_30_145
) find -type f -name '*.deploy' | while read f; do mv "$f" "${f%.deploy}"; done
现在您基本上可以像使用便携式应用程序一样使用它,双击可执行文件或其他东西
您遇到了 ClickOnce 的限制,无法做到这一点。有一个清单必须包含一个标识,该标识指向包含版本(新的或旧的)的服务器。将应用程序指向多个版本将不起作用。
要提供版本选择,您需要在 ClickOnce 基础架构之外为您的应用程序做一些事情,例如另一个允许用户选择安装特定版本的应用程序 - 这将是一个非常简单的下载清单类型程序,然后允许用户启动。不幸的是,每个应用程序都必须以不同的名称从不同的位置提供,例如附加版本号。