설치 프로젝트에서 ".exe, .dll, .js, .vbs"와 같은 실행 파일은 허용되지만 사용자 지정 동작에서 .bat
파일을 실행할 방법이 없습니다.설치하는 동안 ".bat"파일을 실행하는 방법은 무엇입니까?
설치하는 동안 *.bat
파일을 실행하는 방법은 무엇입니까?
설치 프로젝트에서 ".exe, .dll, .js, .vbs"와 같은 실행 파일은 허용되지만 사용자 지정 동작에서 .bat
파일을 실행할 방법이 없습니다.설치하는 동안 ".bat"파일을 실행하는 방법은 무엇입니까?
설치하는 동안 *.bat
파일을 실행하는 방법은 무엇입니까?
글쎄, 많은 검색과 시행 착오 후 나는 이것을 해결했다. 이것이 최선의 방법인지 확실하지 않지만 작동합니다.
다음 시나리오가 있습니다. Visual Studio 설치 프로젝트를 통해 배포하려는 응용 프로그램이 있습니다. 내 응용 프로그램 파일 외에도 배치 (.bat) 파일이 들어있는 대상 디렉토리에 하위 디렉토리를 만들고 싶습니다. 이 파일을 설치 프로세스가 끝날 때 실행하고 싶습니다. 여기
은 당신이 무엇을 :/c "[TARGETDIR]subdirectoryname\batchfile.bat"
내가 그랬던 것처럼 ..., 값이되어야한다 /c "[TARGETDIR]batchfile.bat"
)이며 batchfile.bat는 배치 파일의 파일 이름이어야합니다.그게 전부입니다. 나머지 설치 프로세스가 완료되면 배치 파일이 실행됩니다.
여기 명확성을 위해 예입니다 :
내 배치 파일 :
blah.bat 내 하위 디렉토리 : 가 mydir
내 사용자 지정 작업은 cmd를 타겟팅 인수의 값. EXE는
/c "[TARGETDIR]mydir\blah.bat"
희망 HEL이 될 것입니다 ps 누군가!
부록으로, 패키지 된 cmd.exe (System32 디렉터리의 cmd.exe와 반대)를 실행하면 유익한 문에서 모든 오류 메시지가 "시스템에서 메시지 번호 0x8에 대한 메시지 텍스트를 찾을 수 없습니다" . 이 문제를 해결하려면 (대상 컴퓨터의 System32에 cmd.exe가 있음을 확실히 알고있는 경우)'/ c cmd.exe/c "TARGETDIR] 하위 디렉터리 이름 \ batchfile.bat"를 사용하십시오. 이렇게하면 패키지 된 cmd.exe가 대상 컴퓨터에서 기본 cmd.exe를 호출하게되어 올바른 오류 메시지가 나타납니다. –
경고 : Windows 10에서 설치 프로그램을 만들고 Windows 7에서 실행하면이 방법이 작동하지 않습니다 !! – Lumo
@ 루모 : 단지 정보 용; 'vbs '옵션은 OS와 독립적으로 작동합니다. – Stefan
설치 프로세스 중에 상대 경로가있는 배치 파일을 실행하려고하면 실패하게됩니다. 왜냐하면 배치 파일은 설치 프로그램이 실행되는 디렉토리와 파일이 설치되는 디렉토리를 고려하지 않기 때문입니다. 배치 파일을 임시 디렉토리에 복사하는 설치 빌더를 사용하십시오.
VB.NET에서도이 기사를 확인하십시오 (기사는 더 이상 사용되지 않습니다). C#에도 적용됩니다. 가장 중요한 부분은 새 클래스 라이브러리를 만들고 다음 내용이 포함 된 새 Installer 클래스를 추가하는 것입니다 (C#으로 변환 됨). 기사에서 언급했듯이 방금 작성한 프로젝트에 대한 참조로 새 사용자 정의 액션을 만들 수 있습니다.
override void Commit(IDictionary savedState)
{
base.Commit(savedState);
System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
}
이제 설치 프로그램 프로젝트에 배치 파일을 추가하고 있습니다. 배치 파일을 배치 할 하위 디렉토리를 포함하여 설치 프로젝트를 만들고 평소대로 구성하십시오 (하위 디렉토리에 배치하지 않으려는 경우 응용 프로그램 폴더에 직접 배치 할 수 있음).
"파일 시스템"보기 (솔루션 탐색기 ->보기 -> 파일 시스템에서 프로젝트를 마우스 오른쪽 단추로 클릭)에서 실행할 배치 파일을 추가하십시오.
설치 프로그램 프로젝트를 빌드하십시오.
동일한 결과에 도달하는 다른 방법 중 하나는 .vbs 파일을 해당 .bat 파일을 실행하는 사용자 지정 작업에 넣는 것입니다. 다음 코드는 설치 응용 프로그램 폴더에 넣은 "RunRegisterComponents.vbs"코드입니다. 물론 Visual Studio 속성 창에서 .vbs 매개 변수로 [TARGETDIR]을 넣었습니다. 나는이 당신을 도울 수 있기를 바랍니다
: 내 사용자 지정 작업을 설정 한 것입니다
dim WshShell
Set WshShell = CreateObject("WScript.Shell")
' Read the "CustomActionData" property holding the install directory.
dim programDir
programDir= property("CustomActionData")
' Make the batch full file name and parameter
commandString = chr(34) & programDir & "RegisterComponents.bat" & chr(34) & " " & chr(34) &
programDir& chr(34)
' Set the current directory
WshShell.CurrentDirectory = programDir
' Run batch.
ret = WshShell.Run (commandString, 0, 0)
!
매개 변수로 xxxx.bat와 함께 cmd.exe를 테스트 해 보셨습니까? –
아니요. 어떻게해야합니까? – mammadalius