2016-03-24 4 views
2

Я пытаюсь использовать Squirrel.Windows с моим приложением для установки и автоматического обновления из его репозиториев GitHub. Следуя вдоль в примерах наSquirrel.Windows UpdateManager.GitHubUpdateManager Необходимая помощь

https://github.com/Squirrel/Squirrel.Windows/blob/master/docs/getting-started/1-integrating.md

Я был в состоянии выполнить все шаги успешно. Я тестировал установку, приложение не вызывает никаких проблем. Я обновил и «отпустил» его, а локальное установленное приложение обновилось, как ожидалось.

Таким образом, я знаю, что Squirrel работает правильно, если я делаю это из локального каталога, однако мне нужно сделать это из GitHub. Я после directions here

От этого я обновил код в моем App.xaml.cs к следующему

public partial class App : Application 
{ 
    protected override async void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 
     MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString()); 

     // Check for application updates 
     using (var mgr = UpdateManager.GitHubUpdateManager("https://github.com/Dartvalince/DiscerningEye")) 
     { 
      await mgr.Result.UpdateApp(); 
     } 
    } 

Далее я иду через тот же процесс, как и прежде, создавая nupkg, и выполнени освободить команду с помощью Squirrel. Здесь нет проблем, хорошо.

После этого я выполняю git commit и git push от источника до GitHub. Все в GitHub обновляется с последней фиксацией. Хорошо здесь

Далее, на странице GitHub, я создаю новый выпуск. Тег, используемый для выпуска, такой же, как версия сборки, используемая в созданном .nupkg. Для файлов, прикрепляемых к выпуску, я перетаскиваю все файлы из папки Release, созданной с помощью Squirrel.

Хорошо, теперь все на GitHub. Затем я перехожу к тестированию, чтобы убедиться, что когда пользователь загружает все файлы, затем запускает Setup.exe, он устанавливается правильно и открывается. Когда я это сделаю, я загружаю каждый из файлов в папку на своем рабочем столе, а затем нажмите Setup.exe. Когда я это сделаю, я получаю ожидаемое сообщение MessageBox из приложения, отображающее правильный номер версии сборки, но потом ничего. Это похоже на этот момент, он застревает в части обновления кода и никогда не проходит мимо него. Я могу оставить его сидеть там всю ночь и ничего. Я даже вижу процесс, выполняющийся в памяти в диспетчере задач, поэтому я знаю, что он не имеет ошибок и закрыт, но он сидит при 0% использования ЦП и 0% использования сети.

Любая помощь была бы феноменально оценена.

ответ

3

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

Во-первых, имея UpdateManager внутри App.xaml.csOnStartup игровая метод причинял выполнение кода, чтобы остановить на await, пока обновление не завершено. Я переместил проверку обновления на метод в MainWindowViewModel.

Оттуда я завернул код обновления в try/catch и использовал MessageBox для отображения сообщений об исключениях. Это было "Ресурс не обнаружен: Ошибка 404".
Я дважды проверил URL-адрес, который я использовал для источника GitHubManager, и он был правильным адресом на странице репозитория.
Однако проблема заключалась в / в конце URL-адреса.Я изменил его от

https://github.com/dartvalince/DiscerningEye/

в

https://github.com/dartvalince/DiscerningEye

и проходят все, и теперь он работает. Это функция CheckForUpdate в пределах MainWindowViewModel

private async void CheckForUpdate() 
{ 
    try 
    { 
     using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/dartvalince/DiscerningEye")) 
     { 
      updateManager = mgr; 
      var release = await mgr.UpdateApp(); 
     } 
    } 
    catch (Exception ex) 
    { 
     string message = ex.Message + Environment.NewLine; 
     if (ex.InnerException != null) 
      message += ex.InnerException.Message; 
     MessageBox.Show(message); 
    } 
}