2012-11-06 2 views
3

다음 코드는 디버그 모드 (F5)에서 실행될 때 완벽하게 작동하지만 디버거 (ctl + f5)없이 배포하거나 실행하면 이 제대로 작동하지 않습니다.WinJS System.Launcher가 디버그 모드에서만 작동

행동을 작업 할 때/예상 :는 타일을 클릭하면 눈에 띄게 HTML 페이지를 렌더링하지 않고, 즉시 증기 URL 링크를 실행합니다.이 타일을 클릭하면 응용 프로그램을 실행 만 HTML 페이지를 렌더링 결코 증기 URL을 실행하지 :

동작/작동하지 받았다.

var mydefs = new Object(); 
mydefs = { url: 'steam://rungameid/200710' }; 

function launch(url) { 
    var uri = new Windows.Foundation.Uri(url); 

    Windows.System.Launcher.launchUriAsync(uri).then(
     function (success) { 
      if (success) { 
       // File launched 
       window.close(); 
      } else { 
       // File launch failed 
      } 
     }); 
} 

(function() { 
    "use strict"; 

    WinJS.Binding.optimizeBindingReferences = true; 

    var app = WinJS.Application; 
    var activation = Windows.ApplicationModel.Activation; 

    app.onactivated = function (args) { 
     if (args.detail.kind === activation.ActivationKind.launch) { 
      launch(mydefs.url); 

      args.setPromise(WinJS.UI.processAll()); 
     } 
    }; 

    app.oncheckpoint = function (args) { 
     window.close(); 
    }; 

    app.start(); 
})(); 

답변

2

타이밍 문제처럼 보입니다. 다음은 나를 위해 타일로 작동

(function() { 
    "use strict"; 
    var mydefs = new Object(); 
    mydefs = { url: 'steam://rungameid/200710' }; 

    WinJS.Namespace.define("Steam", { 
     launch: function launch(url) { 
     var uri = new Windows.Foundation.Uri(url); 

     Windows.System.Launcher.launchUriAsync(uri).then(
      function (success) { 
       if (success) { 
        // File launched 
        window.close(); 
       } else { 
        // File launch failed 
       } 
      }); 
      } 
    }); 


    WinJS.Binding.optimizeBindingReferences = true; 

    var app = WinJS.Application; 
    var activation = Windows.ApplicationModel.Activation; 

    app.onactivated = function (args) { 
    if (args.detail.kind === activation.ActivationKind.launch) {     
     setTimeout('Steam.launch("steam://rungameid/200710");', 2000); 
     args.setPromise(WinJS.UI.processAll()); 
    } 
    }; 

    app.start(); 
})(); 
+0

감사합니다. - 남은 유일한 문제는 디버그에서 실행될 때와 동작이 동일하지 않다는 것입니다. 즉, 앱은 스팀 URL을 실행 한 후에도 실행 중이거나 열려 있습니다. 나는 그것을 이해할 것이라고 확신한다. 이것은 대단한 답변이었습니다. –

+0

이 작동하지만 이상적이지 않습니다. 누구든지 이것이 필요한 기술적 인 이유를 알고 있습니까? – kamranicus

+0

'setImmediate'를 사용하여 고정 될 수 있다고 생각했지만 그럴 것 같지 않습니다. 내 앱이 빠르게 로딩 되었기 때문에 나를 위해 일할 수도 있었지만 더 많이 테스트하고 여전히 작동하지 않는 것으로 나타났습니다. 지금 당장 작동하는 유일한 것은 타임 아웃입니다. – kamranicus