Windows Installer Commit에서 배치 파일을 실행하십시오
-
14-09-2019 - |
문제
기본 출력이 설치된 후 Batch 파일을 실행하기 위해 Windows 설치 프로그램 MSI를 수정하는 데 성공하지 못했습니다. 나는 이것을 검색하고 많은 제안을 발견했지만 아무것도 작동하지 않습니다.
- 사용자 정의 액션을 추가하십시오
- 사용자 정의 작업은 실행 가능한 파일 일 수 있습니다. 배치 파일은 실행 가능하지 않습니다.
- 배치 파일을 실행하는 Windows 스크립팅 호스트 실행 가능
- 많은 사람들이 그래서, 그리고 아무도 이것을 일할 수 없었습니다.
- Wix 또는 InstallShield를 사용하십시오
- 회사 설치 프로그램을 변경할 시간이나 권한이 없습니다.
- .msi를 Orca로 편집하고 사용자 정의 속성을 추가 한 다음 사용자 정의 작업을 추가 한 다음 Installexecutesequence를 편집하십시오.
- 나는 이것을 몇 시간 동안 시도해 왔으며 그것을 실행할 때 시스템 오류를 던지는 설치 자만 만들었습니다.
해결책
위에서 말한 것은 잘못되었습니다.
사용자 정의 작업은 실행 가능한 파일 일 수 있습니다. 배치 파일은 실행 가능하지 않습니다.
사용자 정의 작업 (InstallShield와 같은 도구가 없어도)은 .exe, vbscript, jscript 또는 dll 기반 일 수 있습니다. DLL을 작성하는 경우 배치 파일을 호출하려는 코드를 작성하거나 시스템을 변경하려는 모든 코드를 작성할 수 있습니다. 제한이 없습니다.
업데이트: 나를 위해 일한 예 : (사용자 정의 테이블의 항목)
Action Test
Type 34
Source SystemFolder
Target cmd.exe /c c:\test.bat
ExtendedType <blank>
다른 팁
나는 본질적으로 다음과 같은 exe를 만들어 이것을 해결할 수있었습니다.
System.Diagnostics.Process.Start(pathToBatchFile);
MSI 파일에 exe를 추가 한 다음 사용자 정의 작업으로 실행하십시오.
"William Leara"가 제안한 대답은 아주 좋은 시작이지만 더 나은 솔루션을 찾았습니다. 여기 언급 할 가치가 있습니다.
이 방법이있는 또 다른 장점 filecopy 행동, 우리는 또한 사용합니다 무시자 더 높은 특권을 얻는 데 필요한 것 프로그램 파일
몇 가지 메모 :
- 사용 TargetDir 대신에 installdir
- 경로를 인용하십시오.
이것들은 나의 두 가지 사용자 정의 행동입니다. 제 경우에는 강요하고 싶습니다 토종의 몇 가지 레지스트리 항목을 수정하려면 명령 프로세서를 사용하지 않습니다. comspec.
첫 번째 조치 (유형 50)는 타겟의 입력 인수가있는 소스에서 명령을 수행합니다. 유형은 50+1024+2048이기 때문에 무시자 깃발.
- 동작: 최종 행동
- 유형: 3122
- 원천: NCOM
- 표적: /c [targetDir] fixup.bat"
두 번째 행동이 정의됩니다 NCOM 즉시 속성 :
- 동작: Finalnativesys
- 유형: 51
- 원천: NCOM
- 표적: WindowsFolder] System32 Cmd.exe
그런 다음이 작업을 추가해야합니다 installexecutesequence:
- 동작: 최종 행동
- 상태: 설치되지 않았습니다
- 순서: 5002
그리고 이것:
- 동작: Finalnativesys
- 상태:
- 순서: 5001
제 경우에는 전화 할 조치를 쉽게 조정할 수 있습니다. reg.exe import fixup.reg 도. 마지막으로 사용할 수 있습니다 Msitran 제안 된대로 여기 프로 시저를 자동화하기위한 게시물 빌드에서.
임시 .BAT 파일을 원하는 디렉토리로 변경하고 원하는 디렉토리로 변경하는 EXE를 만드십시오. CALL
필요한 것을 수행하는 또 다른 박쥐 파일.
그 exe를 사용하도록 사용자 정의 조치를 알려주십시오.
CPP EXE에 대한 첫 번째 주장은 EXE 자체로가는 길입니다. 이것은 자신을 지향하는 데 사용될 수 있으며, 그 정보는 임시 .Bat 제작에 사용될 수 있습니다.
제 경우에는 "사용자 정의 작업"을 추가했습니다.
폴더에서 "설치"선택 "사용자 정의 액션 추가"
cmd.exe를 선택하십시오 (c : windows system32 cmd.exe)
그런 다음 cmd.exe 편집 "인수"의 속성에서
" /install /c c : myapp.exe -exec-some-action"