2011-12-13 4 views
1

Visual Studio 2010 설치 프로그램을 사용하여 개발중인 응용 프로그램의 설치 프로그램을 만들려고합니다. 내가해야 할 일 중 하나는 일부 exe 프로그램을 실행하는 것입니다. VBS를 실행하기 위해 커스텀 액션을 사용하고 있습니다. 이 실행하는 데 사용하는 메신저 방법 :msi 설정 내에서 VBS 실행

Set objShell = CreateObject("Shell.Application") 
objShell.ShellExecute """c:\prog.exe""","-parm bla" ,"","","" 

이 가진 문제는 내가이 방법을 사용하여 완료 할 프로그램을 기다리는 못할 것입니다. 그래서 나는이 방법을 사용하여 시도 :

Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run "c:\prog.exe -parm bla",1,True 

을하지만 인 MSI가 실행될 때 dosnt되는 스크립트는 WScript와는 개체가 보인다. 제 질문은 어떻게 든 MSI에서 WScript 객체에 접근 할 수 있습니까? 아니면 이렇게하는 것이 더 좋은 방법일까요?

+1

나는 더러운 임시 해결책을 발견했다. 나는 cscript.exe로 다른 스크립트를 실행했고, 그 스크립트에서 WScript 객체를 사용할 수있다. –

+0

사용자 지정 실행에 실행을 추가하고이를 INstallExecuteSequence에 삽입 할 수 없습니다? – Totonga

+0

아마도 설치 패키지에 cscript.exe를 추가해야 할 수도 있습니다. –

답변

2

예는 MSI가 호출하는 스크립트에서 WScript와는 개체를 사용할 수 없습니다. 해결 방법은 Action = NewAction, Type = 38, Source = (공백)으로 새 사용자 지정 작업을 만드는 것입니다. TArget = 다음 명령을 실행하여 vb 스크립트 파일을 TARGET으로 추가하십시오. CScript WiTextIn.vbs mymsi.msi CustomAction NewAction TargetVBscript.vbs.

WiTextIn 파일은 C : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ 7.0의 \ 샘플 \ sysmgmt \ MSI \ 스크립트

(PS : 당신이 VBScript를 실행하려고하면 VB 스크립트이기 때문에 그것은 실패 할 수 있습니다 비활성화되어 레지스트리에서 키를 삭제하고 vbscript를 활성화해야 할 수도 있습니다)

+0

그것은 내 프로젝트에 cscript.exe를 추가 한 다음 매개 변수로 실행하려는 스크립트로 사용자 지정 작업을 실행하는 것만 큼 효과가있는 것처럼 보였습니다. 자신의 방식대로 프로젝트를 스크립트에 추가 할 필요가 없도록 할 것입니다. 나는 os 메신저에 설치되어있는 cscript의 현재 버전을 사용합니다. –

+0

은 cscript를 사용하고있는 유일한 시간은 사전 설치 프로세스 또는 MSi ​​작성 프로세스 인 MSI에 VB 코드를 삽입 할 때이기 때문에 설치할 OS에 csript가 필요하지 않습니다. 내가 언급 한 명령은 CustomAction의 TARGET 열에 일반 텍스트로 VB 스크립트 코드를 입력합니다. – Jignesh

3

실제로 Windows Installer는 WScript 개체를 직접 지원하지 않습니다. "CreateObject"기능을 직접 사용해 보셨습니까?

Set objShell = CreateObject("WScript.Shell")

+0

나는 그것을 시도했다, 그것은 실패한다. –

+0

Bogdan의 답변에 동의합니다. 작동하지 않을 때의 작업 스크립트. –

0

이것은 내 vbs 스크립트에서 서비스에 대한 방화벽 예외를 열어 놓은 것입니다. UI가 없어 서비스 (방화벽을 열 수있는 권한을 묻는 메시지)에 표준 대화 형 팝업을 사용할 수 없습니다.

set oShell = CreateObject("WScript.shell") 
oShell.run "cmd /C netsh advfirewall firewall add rule program=""C:\Program Files (x86)\foo\bar\prog.exe"" name=""my-service"" dir=in action=allow" 

나는 기본값으로 속성을 떠나, 설치 & 배포 프로젝트의 "커밋"에서 CustomAction이 VBS 스크립트를 추가했다. VBS 스테이지 디버그 문제

, 난 원래 "Wscript.CreateObject"사용하지만 실패

msiexec /i mysetup.msi /L* install.log 

주를 사용하여 DOS에서 MSI를 실행. 이것은 효과가 있었다.

관련 문제