@@ -229,7 +229,6 @@ private void AddItemToPage(NotificationPage page, Item item)
229229
230230 /// <summary>
231231 /// Returns any check that fails.
232- /// (Could be extended to include other SystemInfo values.)
233232 /// </summary>
234233 /// <param name="check"></param>
235234 /// <returns></returns>
@@ -240,20 +239,26 @@ private Check CheckExcludes(Check check)
240239
241240 foreach ( var c in check . ExcludesAllOf )
242241 {
243- var lowerName = c . Name . ToLower ( ) ;
244- var lowerValue = c . Value . ToLower ( ) ;
245242 if ( c is Contains )
246243 {
247- switch ( lowerName )
244+ switch ( c . Name )
248245 {
246+ case "direct3d" :
247+ if ( SystemInfo . Direct3DFeatureLevels . Contains ( c . Value , StringComparer . OrdinalIgnoreCase ) )
248+ return check ;
249+ break ;
249250 case "installed_version" :
250- if ( SystemInfo . Application . Version . Contains ( lowerValue ) )
251+ if ( SystemInfo . Application . Version . IndexOf ( c . Value , StringComparison . OrdinalIgnoreCase ) > 0 )
251252 return check ;
252253 break ;
253- default : // generic exclusion
254- if ( lowerName == lowerValue )
254+ case "system" :
255+ var os = SystemInfo . OperatingSystem ;
256+ var system = $ "{ os . Name } { os . Version } { os . Architecture } { os . Language } { os . Languages ?? new string [ 0 ] } ";
257+ if ( system . IndexOf ( c . Value , StringComparison . OrdinalIgnoreCase ) > 0 )
255258 return check ;
256259 break ;
260+ default : // Any check that is not recognised fails.
261+ return check ;
257262 }
258263 }
259264 }
@@ -262,7 +267,6 @@ private Check CheckExcludes(Check check)
262267
263268 /// <summary>
264269 /// Returns any check that succeeds.
265- /// (Could be extended to include other SystemInfo values.)
266270 /// </summary>
267271 /// <param name="check"></param>
268272 /// <returns></returns>
@@ -273,20 +277,26 @@ private Check CheckIncludes(Check check)
273277
274278 foreach ( var c in check . IncludesAnyOf )
275279 {
276- var lowerName = c . Name . ToLower ( ) ;
277- var lowerValue = c . Value . ToLower ( ) ;
278280 if ( c is Contains )
279281 {
280- switch ( lowerName )
282+ switch ( c . Name )
281283 {
282284 case "direct3d" :
283- if ( SystemInfo . Direct3DFeatureLevels . Contains ( lowerValue ) )
285+ if ( SystemInfo . Direct3DFeatureLevels . Contains ( c . Value , StringComparer . OrdinalIgnoreCase ) )
286+ return check ;
287+ break ;
288+ case "installed_version" :
289+ if ( SystemInfo . Application . Version . IndexOf ( c . Value , StringComparison . OrdinalIgnoreCase ) > 0 )
284290 return check ;
285291 break ;
286- default : // generic inclusion
287- if ( lowerName == lowerValue )
292+ case "system" :
293+ var os = SystemInfo . OperatingSystem ;
294+ var system = $ "{ os . Name } { os . Version } { os . Architecture } { os . Language } { os . Languages ?? new string [ 0 ] } ";
295+ if ( system . IndexOf ( c . Value , StringComparison . OrdinalIgnoreCase ) > 0 )
288296 return check ;
289297 break ;
298+ default : // Any check that is not recognised fails.
299+ return null ;
290300 }
291301 }
292302 }
0 commit comments