Lanzar aplicación UWP desde navegador con ASP.NET, HTML o JavaScript

veréis quería plantear la siguiente pregunta.

Es posible lanzar una aplicación diseñada mediante UWP desde el navegador para que se ejecute en el equipo cliente de la persona que accede a la pagina web? o quizas lanzar y ejecutar un comando en el cmd. Para lanzar mi aplicacion por ejemplo desde el CMD necesito ejecutar el siguiente comando:

explorer.exe shell:appsFolder\xxxaplicacionfamilixxx!App

Logre hacerlo en C# pero ese código no se ejecuta en el cliente, si no en el servidor, y claro cuando subo la web diseñada en asp.net al servidor deja de funcionar, solo funciona en depuración, porque servicio web y aplicación están en el mismo equipo.

(dejar claro que la persona previamente tendrá instalada dicha aplicación por supuesto)

Lanzar eventos con parámetros propios en pruebas

Desarrollé una biblioteca en JavaScript para controlar los eventos generados por un mando de consola o joystick, y tengo una serie de tests en Jest para probar diferentes casos, pero me encuentro con un problema: no puedo simular los eventos gamepadconnected y gamepaddisconnected de forma correcta.

Mi código tiene algo como esto (simplificado):

const gameControl = {   // ...   init: function() {     window.addEventListener('gamepadconnected', e => {       console.log('gamepad conectado');       if (!window.gamepads) window.gamepads = {};       if (e.gamepad) {         if (!window.gamepads[e.gamepad.index]) {           window.gamepads[e.gamepad.index] = e.gamepad;           // ...         }       }     });     window.addEventListener('gamepaddisconnected', e => {       console.log('gamepad desconectado');       if (e.gamepad) {         delete window.gamepads[e.gamepad.index];         // ...       }     });   }   // ... };  gameControl.init();  export default gameControl; 

Los eventos nativos gamepadconnected y gamepaddisconnected son lanzados en la ventana cuando se conecta o desconecta (respectivamente) un mando/joystick. Reciben como parámetro un evento con la propiedad gamepad que contiene los datos del mando/joystick conectado.

Intento lanzar los eventos de forma manual en Jest, creando un evento propio, con los parámetros que quiero (gamepads es un array con datos de prueba (mocks) válidos). Más o menos de este modo:

describe('gameControl', () => {    // ...    test('lanzar evento gamepadconnected', () => {     const event = new CustomEvent('gamepadconnected', {       detail: { gamepad: gamepads[0] }     });     global.dispatchEvent(event);   });    test('lanzar evento gamepaddisconnected', () => {     const event = new CustomEvent('gamepaddisconnected', {       detail: { gamepad: gamepads[0] }     });     global.dispatchEvent(event);   });    // ...  }); 

El problema viene cuando esos eventos se lanzan correctamente pero el parámetro no se pasa de forma correcta. Por ejemplo, se detecta que gamepadconnected se lanzó, se muestra por consola “gamepad conectado”, pero luego el objeto de evento e no contiene la propiedad gamepad.

Hice un console.log(e) para ver qué propiedades tenía, pero me encuentro que mi parámetro no aparece por ningún lado. Esto es lo que obtengo con el console.log:

CustomEvent { isTrusted: [Getter] }

¿Por qué sucede esto? ¿Cómo puedo lanzar un evento con el parámetro que yo quiera para poder probar esos eventos?

Angular6, Lanzar el evento Key Enter OR focusout

Tengo un formulario en Angular y tengo que ejecutar la función cuando en el input se pulse la tecla enter o pierda el foco.

  <form class="form-custom" #m="ngForm">           <div class="form-custom--input-btn">             <input #ofi="ngModel" type="text" class="clr-col-12 form-custom--input form-custom--input"               id="oficina" (keyup.enter)="hello()" (focusout)="hello()" name="oficina" [(ngModel)]="oficina" minlength="4" maxlength="4" [placeholder]="placeholderOficina" required>             <button type="button"  class="btn--custom-over-input btn--custom-over-input--arrow" [disabled]="mult.invalid" (click)="hello()"></button>           </div>         </form> 

Si por ejemplo el usuario pulsa la tecla enter, se lanza el evento “hello” y luego al salir del input (perder el focus) se VUELVE a lanzar el evento, necesito que angular solo coja uno de los 2 eventos.

Establecer que test lanzar en comandos maven consola

Tengo una serie de test los cuales testean diversas situaciones que puede dar la lógica de negocio.

public class IntegrationTest {  public IntegrationTest() {     super(); }  @Test public void successfulFlow() throws Exception {     SuccessfulFlowTest.getInstance().run(); }  @Test public void failureFlow() throws Exception {     CreationStateFailureTest.getInstance().run(); }  @Test public void successfulFlowWithPartner() throws Exception {     SuccessfulFlowWithPartnerTest.getInstance().run(); }  @Test public void handlerTest() throws Exception {     HandlerTest.getInstance().run(); } } 

A la hora de lanzar los test con mvn test -e hay alguna forma de ejecutar el test que le pase como parametro. Me refiero, algo similar a:

mvn test -e ‘handlerTest’

O por lo contrario, ¿debería de segmentar los test que quiera lanzar en distintas clases para así seleccionar clases en vez de métodos? De ser esa una opción como debería de ejecutarlo??

Lanzar Intent y volver a la app

Estoy intentando lanzar la aplicación de las alarmas con el fin de poner una alarma en el sistema, pero quiero que, al estar la alarma puesta y activada, vuelva a mi aplicación.

He implementado esto a través de un servicio:

@Override     protected void onHandleIntent(@Nullable Intent intent) {         Alarm alarm = intent.getParcelableExtra(Constants.ALARMOBJT);         alarm.updateTimeInMilis();         int mode = intent.getIntExtra(Constants.INTDATA,-1);         switch (mode){             case Constants.AL_MOD_ADD:  // Add the alarm                 Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);                 int hour = alarm.getAlarmDate().get(Calendar.HOUR) +                         (alarm.getAlarmDate().get(Calendar.AM_PM) == Calendar.PM ? 12 : 0);                 int min = alarm.getAlarmDate().get(Calendar.MINUTE);                 i.putExtra(AlarmClock.EXTRA_HOUR,hour);                 i.putExtra(AlarmClock.EXTRA_MINUTES,min);                 i.putExtra(AlarmClock.EXTRA_MESSAGE,alarm.getName()                         + "(" +alarm.getDetails() + ")");                 startActivity(i);                 break;             case Constants.AL_MOD_DEL:  // Delete the alarm                 break;         }     } 

La clase alarma que he creado es la siguiente:

public class Alarm implements Parcelable {     private String name;     @Exclude private Calendar alarmDate;     private long timeInMilis;     private String type;     private String details;     private boolean deletable;     private boolean active;     @Exclude private Context context;     // ...     public void updateTimeInMilis() {         alarmDate = Calendar.getInstance();         alarmDate.setTimeInMillis(timeInMilis);     } } 

Sin embargo, cuando ejecuto el servicio, simplemente se pone la alarma y se queda abierto el gestor de alarmas del sistema. ¿Hay alguna forma de hacer que vuelva a mi app? O en su defecto, ¿Hay alguna forma de hacer que este proceso sea transparente y no abra directamente el gestor de alarmas?

¿Es recomendable lanzar una excepción en tiempo de ejecución en tiempo de compilación?

Por ejemplo, supongamos que yo creé cierto método que hace un proceso y en caso de algún error retorna null, se me hace lógico hacer un throws NullPointerException para obligar al que utiliza este método a capturar la excepción, así mi método sera mas seguro. Mi duda esta en que si esto se puede considerar una buena practica, o existen mejores alternativas para controlar estos problemas.