@@ -276,8 +276,13 @@ var nativePackage in TaskRecycler<IReadOnlyList<CatalogPackage>>.RunOrAttach(
276276 )
277277 )
278278 {
279- if ( nativePackage . IsUpdateAvailable )
279+ try
280280 {
281+ if ( ! nativePackage . IsUpdateAvailable )
282+ {
283+ continue ;
284+ }
285+
281286 IManagerSource source ;
282287 source = Manager . SourcesHelper . Factory . GetSourceOrDefault (
283288 nativePackage . DefaultInstallVersion . PackageCatalog . Info . Name
@@ -311,6 +316,10 @@ var nativePackage in TaskRecycler<IReadOnlyList<CatalogPackage>>.RunOrAttach(
311316 ) ;
312317 }
313318 }
319+ catch ( Exception ex )
320+ {
321+ LogSkippedPackage ( logger , nativePackage , "listing available updates" , ex ) ;
322+ }
314323 }
315324
316325 logger . Close ( 0 ) ;
@@ -328,41 +337,92 @@ var nativePackage in TaskRecycler<IReadOnlyList<CatalogPackage>>.RunOrAttach(
328337 )
329338 )
330339 {
331- IManagerSource source ;
332- var availableVersions = nativePackage . AvailableVersions ? . ToArray ( ) ?? [ ] ;
333- if ( availableVersions . Length > 0 )
340+ try
334341 {
335- var installPackage = nativePackage . GetPackageVersionInfo ( availableVersions [ 0 ] ) ;
336- source = Manager . SourcesHelper . Factory . GetSourceOrDefault (
337- installPackage . PackageCatalog . Info . Name
342+ IManagerSource source ;
343+ var availableVersions = nativePackage . AvailableVersions ? . ToArray ( ) ?? [ ] ;
344+ if ( availableVersions . Length > 0 )
345+ {
346+ var installPackage = nativePackage . GetPackageVersionInfo ( availableVersions [ 0 ] ) ;
347+ source = Manager . SourcesHelper . Factory . GetSourceOrDefault (
348+ installPackage . PackageCatalog . Info . Name
349+ ) ;
350+ }
351+ else
352+ {
353+ source = Manager . GetLocalSource ( nativePackage . Id ) ;
354+ }
355+
356+ string version = nativePackage . InstalledVersion . Version ;
357+ if ( version == "Unknown" )
358+ version = WinGetPkgOperationHelper . GetLastInstalledVersion ( nativePackage . Id ) ;
359+
360+ logger . Log (
361+ $ "Found package { nativePackage . Name } { nativePackage . Id } on source { source . Name } "
362+ ) ;
363+ var UniGetUIPackage = new Package (
364+ nativePackage . Name ,
365+ nativePackage . Id ,
366+ version ,
367+ source ,
368+ Manager
338369 ) ;
370+ NativePackageHandler . AddPackage ( UniGetUIPackage , nativePackage ) ;
371+ packages . Add ( UniGetUIPackage ) ;
339372 }
340- else
373+ catch ( Exception ex )
341374 {
342- source = Manager . GetLocalSource ( nativePackage . Id ) ;
375+ LogSkippedPackage ( logger , nativePackage , "listing installed packages" , ex ) ;
343376 }
344-
345- string version = nativePackage . InstalledVersion . Version ;
346- if ( version == "Unknown" )
347- version = WinGetPkgOperationHelper . GetLastInstalledVersion ( nativePackage . Id ) ;
348-
349- logger . Log (
350- $ "Found package { nativePackage . Name } { nativePackage . Id } on source { source . Name } "
351- ) ;
352- var UniGetUIPackage = new Package (
353- nativePackage . Name ,
354- nativePackage . Id ,
355- version ,
356- source ,
357- Manager
358- ) ;
359- NativePackageHandler . AddPackage ( UniGetUIPackage , nativePackage ) ;
360- packages . Add ( UniGetUIPackage ) ;
361377 }
362378 logger . Close ( 0 ) ;
363379 return packages ;
364380 }
365381
382+ private static void LogSkippedPackage (
383+ INativeTaskLogger logger ,
384+ CatalogPackage nativePackage ,
385+ string operation ,
386+ Exception ex
387+ )
388+ {
389+ string packageDescription = DescribePackage ( nativePackage ) ;
390+ logger . Error ( $ "Skipping WinGet package while { operation } : { packageDescription } ") ;
391+ logger . Error ( ex ) ;
392+ Logger . Warn (
393+ $ "Skipping WinGet package while { operation } : { packageDescription } . { ex . GetType ( ) . Name } : { ex . Message } "
394+ ) ;
395+ }
396+
397+ private static string DescribePackage ( CatalogPackage nativePackage )
398+ {
399+ try
400+ {
401+ string id = nativePackage . Id ;
402+ if ( ! string . IsNullOrWhiteSpace ( id ) )
403+ {
404+ return id ;
405+ }
406+ }
407+ catch
408+ {
409+ }
410+
411+ try
412+ {
413+ string name = nativePackage . Name ;
414+ if ( ! string . IsNullOrWhiteSpace ( name ) )
415+ {
416+ return name ;
417+ }
418+ }
419+ catch
420+ {
421+ }
422+
423+ return "<unknown package>" ;
424+ }
425+
366426 private IReadOnlyList < CatalogPackage > GetLocalWinGetPackages ( )
367427 {
368428 var logger = Manager . TaskLogger . CreateNew ( LoggableTaskType . OtherTask ) ;
0 commit comments