2013-10-08 6 views
2

Я хочу, чтобы мои пользователи имели возможность обновлять до определенной версии, кликнув один раз. В настоящее время мы имеем помощь | Проверьте наличие обновлений, обновляемых до последней версии.Нажмите «Обновить» до определенной версии

Я бы хотел добавить эту страницу Помощь | Обновите версию (которая затем предложит номер версии, которую пользователь может ввести, и он будет обновлять их до этой версии (оба, если они в настоящее время находятся на более низкой версии или находятся на более высокой версии)).

Приложение разработано с использованием C#

  • Примечание мы хотим сделать это с помощью приложения не за его пределами, например, мы знаем, что мы можем откатываться через панель управления и т. д. ... но мы хотим, чтобы объект в приложении мог перейти к определенной версии, которая либо выше, либо ниже текущей версии.

ответ

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

побочный эффект этого что проверка для последовательных обновлений с использованием манифеста будет проверять только определенную папку, я создал второй метод для получения последней версии из каталога по умолчанию:

heres для получения центральной версии

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 
0

Вы нажимаете ограничение на ClickOnce, и не можете этого сделать. Существует один манифест, который должен содержать один идентификатор, указывающий на сервер, содержащий версию (новую или старую). Указание приложения на несколько версий не будет работать.

Чтобы обеспечить выбор версий, вам нужно будет что-то сделать вне инфраструктуры ClickOnce для вашего приложения, например, другое приложение, позволяющее пользователю выбирать установку определенных версий - это будет очень простая загрузка программы типа манифеста а затем разрешить запуск пользователя. К сожалению, каждое приложение должно быть доступно из разных мест с другим именем, например, для добавления номера версии.

+0

Я нашел способ сделать это аналогично вашему предложению. Собираясь писать код здесь как ответ, как только я его протестировал, но мы вроде как сейчас работаем. – DermFrench

+0

Кстати, для этого приложения не требуется отдельное приложение, мы работаем из нашего приложения. – DermFrench

+0

@ DermFrench Fair достаточно –

Смежные вопросы