2010-03-26 4 views
1

에 의해 자신의 링크를 여는 구현 :가 자신의 응용 프로그램

나는 특별한 미디어 플레이어를 가지고, 즉 인터넷 스트림을 재생할 수있다 (스트림의 종류는 중요하지 않습니다, 우리는이가 고려할 수 단순히 미디어 파일). 사람 X는 이러한 스트림에 대한 여러 링크를 가지고 있으며 사용자는 내 규칙에 따라 링크가있는 HTML 페이지를 준비합니다.

목표는 사용자가 브라우저에서 해당 링크를 클릭하면 설치된 응용 프로그램의 존재 여부를 확인하는 것입니다.

  • 응용 프로그램이 설치되어 있지 않으면 사용자에게 응용 프로그램을 설치하라는 메시지가 표시됩니다. 사용자가 설치에 동의하면 응용 프로그램이 원격 msi를 통해 설치되고 명령 줄 매개 변수로 문자열로 시작됩니다.

  • 응용 프로그램이 설치된 경우 명령 줄 매개 변수로 문자열로 시작됩니다.

나는이를 구현하는 방법 중 하나는 (액티브 X가 어떤 메시지 상자를 제외한 UI 요소를 포함하지 않기 때문에 실제로 제어되지 않도록) ActiveX 컨트롤을 작성하는 것입니다 것을 가정합니다. ActiveX가 내 앱이 설치되어 있는지 여부를 확인하고 필요한 경우 앱을 설치하라는 메시지를 표시합니다. 설치 프로그램을 시작합니다. 설치된 앱을 실행합니다. 질문은 다음과 같습니다 :

  • (AciveX 외에도) 다른 접근법을 적용 할 수 있습니까?
  • 저는 AciveX 컨트롤을 작성하지 않았습니다. 그러한 ActiveX 작성을 위해 권장 할 수있는 시작 지점 (유용한 링크)은 무엇입니까 (이를 고려하면 MSVC++로 코딩됩니다)?
  • 다른 의견이나 권장 사항이 있습니까?

미리 감사드립니다.

답변

1

ActiveX를 사용하면 브라우저 간 호환이되지 않습니다. 각 주요 브라우저에 대한 플러그인을 개발할 수도 있지만 사용자가 설치하거나 승인해야합니다. 귀하의 요구 사항 중 하나를 기꺼이 삭감하지 않으면 (예 : 첫 번째 요건) 기꺼이 어려운 일임을 알게 될 것 같습니다.

두 번째 요구 사항을 충족하려면 registering a custom URL protocol handler을 조사해야합니다. 그럼 당신은 간단한 링크에서 설치된 응용 프로그램을 시작할 수 있습니다 :

<a href="myapp://someCommand/>Click to open with my app!</a> 

응용 프로그램이 설치되어 있지 않은 사용자의 경우, 그러나, URL이 작동하지 않을 것입니다. IE에 대한 한 가지 해결 방법은 (ActiveX에 대해 언급 했으므로) 응용 프로그램에 the user agent string을 추가 한 다음이 문자열이 서버 측 또는 클라이언트 측 코드와 함께 존재하는지 확인하는 것입니다. 그것이 없다면 애플리케이션이 설치되었음을 알 수 있습니다.

+0

"ActiveX를 사용하면 브라우저 간 호환이되지 않습니다 ..."- OK, 브라우저를 IE로 제한 할 수 있습니다. 아니면 ActiveX 대신 브라우저 간 솔루션이 더 좋을 수 있습니까? "두 번째 요구 사항을 충족 시키려면 사용자 정의 URL 프로토콜 핸들러를 등록해야합니다."- ActiveX에서 CreateProcess 또는 ShellExecuteEx와 같은 간단한 호출을 허용하지 않는지 여부 – VitalyVal

+0

@VitalyVal :'WScript.Shell' ActiveX 객체로 쉘을 실행할 수는 있지만 많은 사용자는 실행을 허용하기에는 너무 조심 스럽습니다. 내가 ActiveX를 사용하지 않도록 조종해야한다고 생각하는 이유는 사용 권한과 브라우저 호환성을 고려해야하기 때문입니다.IE로 제한하려는 경우 커스텀 URL 프로토콜 핸들러는 모든 브라우저에서 작동 할 수있는 솔루션이 될 것이며 자바 스크립트 기반 솔루션을 필요로하지 않는다는 이점이 있습니다. Adobe Reader가 설치되어있는 경우 직접 테스트 해 볼 수 있습니다. IE의 주소 표시 줄에'acrobat : //'을 입력하고 return을 누르십시오. –

+0

답변 해 주셔서 감사합니다. 개인 프로토콜을 사용하는 것 같다 이유에 대해 사용자에게 알릴 수없는 이유는 링크가 열리지 못했습니다 (비 설치 응용 프로그램의 경우). ActiveX 동작에 대한 사용자 걱정은 AciveX에 서명되므로 ActiveX에 대한 더 많은 신뢰를 사용자에게 줄 수 있습니다. 일반적으로 내 작업에는 "일반적으로 받아 들여지는"접근 방식이없는 것처럼 보입니다. 이게 옳은 거니? – VitalyVal

관련 문제