Hello Matteo Pagani !
First of all, I hope you get better soon.
Don't be in a hurry to answer me. Take your time!
I've tried a WPF app with one Add-On (optional package). The addon package only get the update if the main bundle (.appinstaler) is updated on Update URI definition. I tried the Windows 10 API for scanning Dependencies Packages for the main app on trying to discover updates, but the URI for the dependency package always returns null and throws exception, or CheckUpdateAvailabilityAsync returns no updates available. I didn't figure why yet.
The code that I've used (addonsexecutehost is a ListView WPF control):
private async Task LoadAddons()
{
addonsexecutehost.Items.Clear();
addonsexecutehost.Items.Add("Obtendo add-ons...");
try
{
if (Package.Current.Dependencies.Count > 0)
{
var packageManager = new Windows.Management.Deployment.PackageManager();
foreach (var package in Package.Current.Dependencies)
{
addonsexecutehost.Items.Add($"ID: {package.Id.Name}");
addonsexecutehost.Items.Add($"Version: {package.Id.Version.Major}.{package.Id.Version.Minor}.{package.Id.Version.Build}.{package.Id.Version.Revision}");
addonsexecutehost.Items.Add($"Publisher: {package.Id.Publisher}");
addonsexecutehost.Items.Add($"Verificando atualizações do pacote...");
var result = await package.CheckUpdateAvailabilityAsync();
if (result.Availability == PackageUpdateAvailability.Available | result.Availability == PackageUpdateAvailability.Required)
{
addonsexecutehost.Items.Add("Atualização encontrada, iniciando processo...");
try
{
await packageManager.UpdatePackageAsync(package.GetAppInstallerInfo().Uri, null, Windows.Management.Deployment.DeploymentOptions.ForceApplicationShutdown);
}
catch (Exception pkex)
{
addonsexecutehost.Items.Add($"Erro: {pkex}");
}
break;
}
else
{
addonsexecutehost.Items.Add("Add-on atualizado.");
}
addonsexecutehost.Items.Add("========================");
//System.Diagnostics.Debug.WriteLine($"ID: {package.Id}, DisplayName: {package.DisplayName}");
//var file = await package.InstalledLocation.GetFileAsync($"{LabsApp.App.Current.ToString()}.dll");
//plugin = LoadAssembly(file.Path);
//exportAsCsvButton.Visible = true;
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
addonsexecutehost.Items.Add("Pesquisa concluída.");
}
About the CI/CD scenario on the second question: It solves my problem! Big thank you!
Regards,