我希望我的用户能够使用点击一次更新到特定版本。 目前我们有帮助|检查更新,只更新到最新版本。
我想添加一个帮助|更新到版本(然后会提示输入用户可以输入的版本号,并将它们更新为该版本(如果它们当前使用的是较低版本,或者它们的版本较高)。
使用c#
开发应用程序答案 0 :(得分:2)
我已经能够在每次发布后仅使用一些额外的工作来实现此功能,而不需要用户提供详细说明。获取特定版本的方式是您需要为每个版本提供多个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
答案 1 :(得分:0)
你正在达到ClickOnce的限制,无法做到这一点。有一个清单必须包含指向包含版本(新旧)的服务器的单个标识。将应用程序指向多个版本将无法正常工作。
提供您需要在应用程序的ClickOnce基础架构之外执行某些操作的版本选择,例如允许用户选择安装特定版本的另一个应用程序 - 这将是一个非常简单的下载清单类型程序和然后允许用户启动。不幸的是,每个应用程序都必须使用不同的名称从不同的位置提供,例如附加版本号。
答案 2 :(得分:0)
不太理想,但是如果您不顾一切就可以检索旧的二进制文件,则可以提供帮助
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
现在,您基本上可以像在便携式应用程序中一样使用它,双击可执行文件或类似的东西