@@ -203,8 +203,8 @@ public async Task<bool> Apply(IProgress<InstallationProgress> progress,
203
203
{
204
204
Host . Log ( $ "Received fix application arguments: { arg } ") ;
205
205
206
- await Launcher . LaunchUriAsync ( new Uri ( $ "amethyst-app:crash-message#{ Host . RequestLocalizedString (
207
- "/Plugins/KinectOne/Fixes/NotReady/Prompt/MustEnableKinectMicrophone" ) } " ) ) ;
206
+ await $ "amethyst-app:crash-message#{ Host . RequestLocalizedString (
207
+ "/Plugins/KinectOne/Fixes/NotReady/Prompt/MustEnableKinectMicrophone" ) } " . Launch ( ) ;
208
208
209
209
// Open sound control panel on the recording tab
210
210
Process . Start ( "rundll32.exe" , "shell32.dll,Control_RunDLL mmsys.cpl,,1" ) ;
@@ -269,4 +269,61 @@ public static async Task CopyToWithProgressAsync(this Stream source,
269
269
progress ? . Invoke ( total ) ;
270
270
} while ( amtRead == bufferSize ) ;
271
271
}
272
+ }
273
+
274
+ public static class UriExtensions
275
+ {
276
+ public static Uri ToUri ( this string source )
277
+ {
278
+ return new Uri ( source ) ;
279
+ }
280
+
281
+ public static async Task LaunchAsync ( this Uri uri )
282
+ {
283
+ try
284
+ {
285
+ if ( await Launcher . QueryAppUriSupportAsync ( uri ) is LaunchQuerySupportStatus . Available ||
286
+ uri . Scheme is "amethyst-app" ) await Launcher . LaunchUriAsync ( uri ) ;
287
+ }
288
+ catch ( Exception )
289
+ {
290
+ // ignored
291
+ }
292
+ }
293
+
294
+ public static async Task Launch ( this string uri )
295
+ {
296
+ try
297
+ {
298
+ if ( PathsHandler . IsAmethystPackaged )
299
+ {
300
+ await uri . ToUri ( ) . LaunchAsync ( ) ;
301
+ }
302
+ else
303
+ {
304
+ // If we've found who asked
305
+ if ( File . Exists ( Assembly . GetExecutingAssembly ( ) . Location ) )
306
+ {
307
+ var info = new ProcessStartInfo
308
+ {
309
+ FileName = Assembly . GetExecutingAssembly ( ) . Location . Replace ( ".dll" , ".exe" ) ,
310
+ Arguments = uri
311
+ } ;
312
+
313
+ try
314
+ {
315
+ Process . Start ( info ) ;
316
+ }
317
+ catch ( Exception )
318
+ {
319
+ // ignored
320
+ }
321
+ }
322
+ }
323
+ }
324
+ catch ( Exception )
325
+ {
326
+ // ignored
327
+ }
328
+ }
272
329
}
0 commit comments