Probando Actualizaciones
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:
- Creando un paquete mínimo - Construye una versión de prueba con
vpk packe instálala localmente - Usando una fuente de actualización local - Apunta tu
UpdateManagera un directorio local (cada SDK acepta una ruta simple o una URLfilede la misma manera que la formanew UpdateManager("C:\\path")de C#), así puedes servir actualizaciones directamente desde una carpeta sin un servidor HTTP. - 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:
- Revisar los registros - Habilita el registro para ver qué está haciendo Velopack
- Inspeccionar el directorio de paquetes - Verifica que los paquetes se descarguen correctamente
- Verificar el feed de versiones - Asegúrate de que tu
releases.{channel}.jsonsea válido
Para más orientación sobre depuración, consulta la documentación de Depuración.