Se necesita ayuda de Squirrel.Windows UpdateManager.GitHubUpdateManager

Estoy intentando usar Squirrel.Windows con mi aplicación para instalar y actualizar automáticamente desde sus repositorys de GitHub. Siguiendo a lo largo de los ejemplos en

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

Pude completar todos los pasos con éxito. Probé la installation, la aplicación no abre ningún problema. Lo actualicé y lo "libere", y la aplicación local instalada se actualizó como se esperaba.

Así que con eso, sé que Squirrel está funcionando correctamente si estoy haciendo esto desde un directory local, sin embargo, tengo que hacer esto desde GitHub. Estaba siguiendo las instrucciones aquí

A partir de eso, actualicé el código en mi App.xaml.cs a la siguiente

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(); } } 

Luego paso por el mismo process que antes, creando nupkg y ejecutando el command de liberación con Squirrel. No hay problemas aquí, bien.

Después de todo esto, realizo un git commit y un git push de la fuente hasta GitHub. Todo en GitHub se actualiza con la última confirmación. Bien aquí

Luego, en la página de GitHub, creo una nueva versión. La label utilizada para la versión es la misma que la versión de ensamblaje utilizada en .nupkg que se creó. Para que los files se adjunten al lanzamiento, arrastro y coloco todos los files de la carpeta Release que se creó a través de Squirrel.

Ok, ahora todo está en GitHub. Luego paso a probar esto para asegurarme de que cuando un usuario descarga todos los files, ejecuta el Setup.exe, se instala correctamente y se abre. Cuando hago esto, descargo cada uno de los files en una carpeta en mi escritorio, luego hago clic en Setup.exe. Cuando hago esto, obtengo el MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString()); esperado MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString()); Ventana emergente MessageBox de la aplicación, que muestra el número de versión de ensamblaje correcto, pero luego nada. Es como en este punto, se queda atascado en la parte de actualización del código y nunca pasa de él. Puedo dejarlo allí sentado toda la noche y nada. Incluso puedo ver el process ejecutándose en la memory en el Administrador de tareas, así sé que no se ha producido un error y no se cerró, pero tiene un uso de CPU del 0% y un uso de la networking de 0%.

Cualquier ayuda sería fenomenalmente apreciada.

Me di count de esto, y quería publicar la respuesta para cualquier otra persona que pueda llegar a este punto y tenga el mismo problema. Todo fue un error del usuario.

En primer lugar, tener el UpdateManager dentro del método OnStartup de OnStartup provocaba que la ejecución del código se detuviera OnStartup await la actualización. Moví la verificación de actualización a un método en MainWindowViewModel .

A partir de ahí, envolví el código de actualización en un try / catch y usé un MessageBox para mostrar los posts de exception. Fue " No se pudo encontrar el recurso: Error 404" .
Comprobé dos veces la URL que estaba usando para el origen de GitHubManager , y era la dirección correcta para la página del repository.
Sin embargo, el problema era / al final de la URL. Lo cambié de

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

a

https://github.com/dartvalince/DiscerningEye

y probado todo, y está funcionando ahora. Esta es la function CheckForUpdate dentro de 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); } }