2017-12-06 35 views
2

내가 만든 응용 프로그램에 대해 Inno Setup을 사용하여 Windows 설치 프로그램을 만들었습니다. 설치 프로그램의 일부로, 제 3 자 응용 프로그램을 설치하고 배치 파일 다음에 많은 수의 npm 명령 실행 가능 프로그램 또는 배치 파일을 실행하는 것을 포함 시켰습니다.Inno 설치 - 하위 설치 프로그램에서 PATH에 추가 된 npm 프로그램이 설치 프로그램에서 실행되는 배치 파일에서 인식되지 않습니다

다 괜찮 설치하지만 배치 파일이 실행될 때 나는 메시지를 얻을

'고궁 박물원'은 (는) 내부 또는 외부 명령의 명령이 실행되지 않는

그래서으로 인식되지 않습니다 앱이 열리지 않습니다. 그러나 모든 것을 그대로두고 설치 후 배치 파일을 다시 실행하면 명령이 실행되고 응용 프로그램이 올바르게 작동합니다. 배치 파일을 설치의 일부로 올바르게 실행하려면 어떻게해야합니까?

이노 설정 Run

[Run] 
Filename: "{tmp}\Git-2.15.0-64-bit.exe"; Flags: waituntilterminated 
Filename: "{tmp}\rubyinstaller-2.3.3-x64.exe"; Flags: waituntilterminated 
Filename: "{tmp}\visualcppbuildtools_full.exe"; Flags: waituntilterminated 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\mongodb-win32-x86_64-2008plus-ssl-3.4.10-signed.msi"; WorkingDir: {tmp}; Flags: waituntilterminated 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\node-v6.11.0-x64.msi"; WorkingDir: {tmp}; Flags: waituntilterminated 
Filename: "{tmp}\setup.bat"; 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: shellexec postinstall skipifsilent 

배치 파일

cd C:/Users/%USERNAME%/Documents/myApp/api/ 
call npm install -g bower 
call npm install -g grunt 
call npm install -g grunt-cli 
call npm config set msvs_version 2015 -global 
call npm install bcrypt -save 
call npm install 
cd ../admin/ 
call npm install -g bower 
call npm install -g grunt 
call npm install -g grunt-cli 
echo 1 | call gem install compass 
call bower install 
call npm install 
+0

파일 이름 : "{tmp} \ python-3.5.4-amd64-webinstall.exe"; 플래그 : waituntilterminated 도 설치되었습니다 – Deef

+1

'NPM'폴더가 무엇인지 모릅니다. 전체 경로를 지정해야합니다. – Squashman

답변

0

NPM이되지 않도록 내가 당신을 위해 경로를 수정하지 않는 설치 프로그램을 추측하고있어 명령으로 별칭이 지정됩니다. 실행 파일의 절대 경로를 사용하여 npm을 호출하면 예상대로 작동합니다.

+0

감사합니다. Squshman과 posit 실험실이 도움이 될 것입니다. – Deef

+0

설치 프로그램이'PATH'를 수정하지 않았다면, 설치 프로그램이 완료된 후에 어떻게 배치 파일이 작동합니까? –

+0

PATH를 수정해야합니까? 나는 그렇게 생각하지 않는다. 설치 관리자가 묻지 않고 내 노드 버전을 덮어 쓰면 너무 행복하지 않을 것입니다. –

0

설치 프로그램이 완료된 후 배치 파일이 작동하는 경우 하위 설치자 중 하나가 을 환경 변수 PATH에 추가하는 것일 수 있습니다. 그러나 환경 변화는 Inno Setup 인스톨러 자체를 포함한 기존 프로세스와 Inno Setup 인스톨러에서 실행 한 배치 파일을 포함하는 자식 프로세스에 자동으로 적용되지 않으며 새로운 프로세스에만 적용됩니다.

배치 파일을 실행하기 전에 환경을 명시 적으로 다시로드해야합니다. RefreshEnvironment 구현에 표시됩니다

[Run] 
Filename: "{tmp}\setup.bat"; BeforeInstall: RefreshEnvironment 

:
Environment variable not recognized [not available] for [Run] programs in Inno Setup


아니면 물론 배치 파일의 절대 경로를 사용할 수 있습니다. 그러나 설치 위치에 따라 배치 파일을 즉석에서 생성해야합니다.

npm 디렉토리에서 배치 파일을 실행하십시오. 그것에 대해 WorkingDir parameter을 사용하십시오.