2013-01-31 3 views
0

위력을 발휘할 수 있다면 저의 손길을 줄 수 있습니까?HTA - VBScript - 설치 프로그램을 완료하지만 설치가 완료 될 때까지 기다려주십시오.

나는 그 다음 프로그램을 설치하지만, 아무도하지 않습니다 를 완료 공상에 HTA 파일 것도 그 하나

내가 설치를 위해 대기하는 방법에 대한 몇 가지 장소에서 읽고있다가 몇 가지 프로그램을 설치할 수 없다 내가 원하는 것을 위해 나에게 감각도, 그들은 위대한 것입니다 wscript.sleep을 사용하는 말은하지만 그것은 HTA 권리에서 작동하지 않니?

저는 firefox, utorrent, symantec antivirus, adobe reader, office 2003 (KEY로 이미 포장되어 있습니다) 등이 있습니다.

내가 자동으로 설치 스위치를 찾으려하지만이 코드 누군가가 나 작동 표시하고자하는 경우 중요하지 이잖아

...

는 내가 이해가 희망?

내가 도움이된다면 도움이 될 것입니다.

환호 Pavle.

+1

브라우저 컨트롤에서도 CreateObject ("WScript.Shell")를 사용하여 셸 개체를 만들 수 있어야합니다. 이 개체에서 Run, Exec 또는 ShellExecute 메서드에 액세스 할 수 있습니다. 이러한 패키지를 실행하는 데는 각 공급 업체에 문의해야합니다. MSI 패키지 인 경우/qn!과 함께 msiexec.exe를 사용하십시오. 매개 변수. –

답변

0

당신은이 질문에 대한 내 대답 (https://stackoverflow.com/a/3742182/128427)에 유용 뭔가 찾을 수 있습니다 : How to get an HTA to restart itself?

그것은 프로세스가 끝날 때까지 기다려야하는 VBScript를 도우미를 사용합니다 (HTA 자체가) 다음 HTA를 다시 시작합니다. vbscript를 수정하여 특정 프로세스가 끝날 때까지 기다렸다가 (설치 관리자 중 한 명), 다음 설치 관리자를 시작하는 HTA로 제어를 되돌리고 대기 스크립트를 다시 호출 할 수 있습니다.

HTA가 WScript.Sleep 루틴을 호출 할 수 있다고 생각하지 않지만 HTA에 X 초 후에 루틴을 호출하거나 취소 될 때까지 X 초마다 반복적으로 루틴을 호출하는 setTimeout 및 setInterval 메서드가 있습니다. 프로세스를 계속 실행 중인지 (WMI Win32_Process를 사용하여 다른 대답에 표시) 주기적으로 점검 할 수 있습니다.

루프를 사용하여 목록을 살펴본 후 각 항목 다음에 일시 중지하는 대신 시스템을 발전시키기 위해 자주 호출하는 중앙 상태 시스템 루틴이 있습니다.

'!! extremely "pseudo" pseudo-code follows 

sub StartSystem() 
    state = "next program" 
    list = list of programs to install 
    AdvanceSystem() 
end sub 

sub AdvanceSystem() 

    if state = "next program" 

     if more items in list 
      start next installer 
      remove from list (or increment an index) 

      set state to "check program" 
     else 
      set state to "done" 

    if state = "check program" 

     use WMI to see if process is still running 
     if no 
      state = "next program" 

    if state <> "done" 
     setInterval(AdvanceSystem, 5000) ' call again in 5 seconds 

end sub 


' then somewhere in your HTA interface have a button to start things off 
buttonClick = StartSystem() 

이와 같은 구성을 사용하면 별도의 VBScript를 실행하여 프로세스 및 절전 모드를 확인하지 않아도됩니다. 또한 이러한 종류의 증분 프로세스를 사용하면 사용자가 진행 상황을 볼 수 있도록 DIV로 출력을 보내고 루프에서 물건을 처리 할 때 전체 프로세스가 완료 될 때까지 출력이 나타나지 않습니다. AdvanceSystem을 통과 할 때마다 컨트롤이 HTA 레벨로 돌아가고 시스템이 자체적으로 업데이트 할 수 있습니다.

좀 더 구체적인 예가 필요한 경우 알려 주시면 답변을 드리겠습니다.

관련 문제