문제

기본 출력이 설치된 후 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 행동, 우리는 또한 사용합니다 무시자 더 높은 특권을 얻는 데 필요한 것 프로그램 파일

몇 가지 메모 :

  1. 사용 TargetDir 대신에 installdir
  2. 경로를 인용하십시오.

이것들은 나의 두 가지 사용자 정의 행동입니다. 제 경우에는 강요하고 싶습니다 토종의 몇 가지 레지스트리 항목을 수정하려면 명령 프로세서를 사용하지 않습니다. 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"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top