Saltar al contenido principal

Probando Actualizaciones

Applies to
Windows
MacOS
Linux

Cuando desarrollas aplicaciones con Velopack, querrás probar tu lógica de actualización sin necesitar una instalación completa. Esta guía te muestra cómo probar actualizaciones, hooks y otras características de Velopack en entornos de desarrollo y CI/CD.

Probando en Desarrollo

La forma más sencilla de probar la integración de Velopack durante el desarrollo es usar los helpers de prueba integrados que proporciona el SDK.

C# - TestVelopackLocator

La clase TestVelopackLocator te permite simular una instalación de Velopack:

var locator = new TestVelopackLocator(
appId: "MyApp",
version: "1.0.0",
packagesDir: "/path/to/packages"
);

VelopackApp.Build()
.SetLocator(locator)
.Run();

Luego puedes probar la verificación y descarga de actualizaciones:

var updateManager = new UpdateManager(source, null, locator);
var updateInfo = await updateManager.CheckForUpdatesAsync();

if (updateInfo != null) {
await updateManager.DownloadUpdatesAsync(updateInfo);
}

Otros Lenguajes

El TestVelopackLocator mostrado aquí es exclusivo de C#. Para otros lenguajes (JS, Python, Rust, C++) no existe un locator de prueba integrado, así que prueba contra una instalación real en su lugar:

  1. Creando un paquete mínimo - Construye una versión de prueba con vpk pack e instálala localmente
  2. Usando una fuente de actualización local - Apunta tu UpdateManager a un directorio local (cada SDK acepta una ruta simple o una URL file de la misma manera que la forma new UpdateManager("C:\\path") de C#), así puedes servir actualizaciones directamente desde una carpeta sin un servidor HTTP.
  3. Simulando la fuente de actualización - Crea un servidor HTTP simulado o una fuente de archivos para pruebas

Probando Descargas de Actualizaciones

Para probar que tu aplicación puede verificar y descargar actualizaciones correctamente:

// Create a mock update source from an HTTP server
var source = new SimpleWebSource("http://localhost:8080/releases");

// Or use a local directory. SimpleWebSource only speaks HTTP, so for a
// local path use SimpleFileSource (which is what passing a path to
// UpdateManager resolves to under the hood).
var source = new SimpleFileSource(new DirectoryInfo(@"C:\my-test-updates"));
// equivalently: new UpdateManager(@"C:\my-test-updates")

var updateManager = new UpdateManager(source);
var updateInfo = await updateManager.CheckForUpdatesAsync();

Assert.NotNull(updateInfo);
Assert.True(updateInfo.TargetFullRelease.Version > currentVersion);

await updateManager.DownloadUpdatesAsync(updateInfo);

Probando Canales

Prueba el cambio de canal especificando un canal explícitamente:

var options = new UpdateOptions {
ExplicitChannel = "beta",
AllowVersionDowngrade = true
};

var updateManager = new UpdateManager(source, options);
var updateInfo = await updateManager.CheckForUpdatesAsync();

Lee más sobre los canales en la documentación de Canales.

Probando Hooks

Para probar los hooks de instalación/actualización/desinstalación sin pasar por una instalación completa:

Opción 1: Ejecuta tu aplicación con argumentos de hook

MyApp.exe --veloapp-install 1.0.0
MyApp.exe --veloapp-updated 1.1.0
MyApp.exe --veloapp-uninstall 1.0.0

Tu aplicación debería manejar estos argumentos y salir rápidamente.

Opción 2: Establece variables de entorno

# Windows
$env:VELOPACK_FIRSTRUN="true"
.\MyApp.exe

# Linux/macOS
VELOPACK_FIRSTRUN=true ./MyApp

Consulta la documentación de Hooks para más detalles sobre los hooks disponibles.

Probando en CI/CD

Puedes verificar tu integración de Velopack en pruebas automatizadas sin una instalación completa.

Ejemplo de Prueba Unitaria (C#)

[Fact]
public async Task CanCheckForUpdates()
{
var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
Directory.CreateDirectory(tempDir);

try {
var locator = new TestVelopackLocator("TestApp", "1.0.0", tempDir);
var source = new SimpleWebSource("https://my-updates.com");
var updateManager = new UpdateManager(source, null, locator);

var updateInfo = await updateManager.CheckForUpdatesAsync();
// Assert your expectations
} finally {
Directory.Delete(tempDir, true);
}
}

Escenarios de Prueba Comunes

Probar Degradación de Versión

var options = new UpdateOptions { AllowVersionDowngrade = true };
var updateManager = new UpdateManager(source, options, locator);

Probar Detección de Primera Ejecución

VelopackApp.Build()
.OnFirstRun((v) => {
// This code runs only on first launch after install
Console.WriteLine($"First run of version {v}");
})
.Run();

Probar Reinicio de Actualización

VelopackApp.Build()
.OnAfterUpdateFastCallback((v) => {
// This runs after an update is applied
Console.WriteLine($"Updated to version {v}");
})
.Run();

Consejos de Depuración

Al probar actualizaciones:

  1. Revisar los registros - Habilita el registro para ver qué está haciendo Velopack
  2. Inspeccionar el directorio de paquetes - Verifica que los paquetes se descarguen correctamente
  3. Verificar el feed de versiones - Asegúrate de que tu releases.{channel}.json sea válido

Para más orientación sobre depuración, consulta la documentación de Depuración.