mj@home:~$

install shield로 다른 프로그램 설치

프로젝트를 진행하면서 프로젝트에 필요한 파일들을 한번에 설치할 수 있는 설치 파일을 만들어 달라는 요청이 있었다.

이를 위해 필요한 실행파일들을 가지고 있고 이를 직접 실행하기 위해 새로운 실행파일을 만들었다.

프로젝트 생성

  • install shield를 실행하고 새로운 프로젝트를 만든다.
  • 기본적으로 Basic MSI Project를 만들어서 실행파일을 만들지만, InstallScript를 쉽게 컨트롤하기 위해서 InstallScript Project로 만든다.

프로젝트 설정

Install Script 수정

  • 상단의 Installation Designer 탭을 들어간다.
  • Behavior and Logic - InstallScript를 클릭한다.
  • 우측의 스크립트 창 상단에 Select box가 생기는데, 언제 동작하는 지를 결정하는 것이다.
  • 여기선 설치 중에 내부 실행파일들이 실행되게 하도록 만들기 위해서 DefaultFeature - Installing을 선택한다.

소스 첨부

//---------------------------------------------------------------------------
// The Installed event is sent after the feature DefaultFeature
// is installed.
//---------------------------------------------------------------------------
export prototype DefaultFeature_Installed();

function DefaultFeature_Installed()
    STRING sCmdExe, sMsiExe, sParam1, sParam2;
    STRING sJavaPath, sPostgresqlPath, sActivemqPath;    
begin
    sMsiExe = "C:\\Windows\\System32\\msiexec.exe";
    sCmdExe = "C:\\Windows\\System32\\cmd.exe";
    sJavaPath = TARGETDIR + "\\jdk-8u121-windows-x64.exe";
    sMsxmlPath = TARGETDIR + "\\Prerequisite\\msxml\\msxml.msi";
    sActivemqPath = TARGETDIR + "\\apache-activemq-5.14.0\\bin\\win64\\activemq.bat";
    sParam1 = "/i " + "\"" + sMsxmlPath + "\"";
    sParam2 = "/c \"" + sActivemqPath + "\"";

    if(LaunchAppAndWait(sJavaPath, "", WAIT) < 0) then
		MessageBox("Failed to install Java.", SEVERE);
    endif;

    if(LaunchAppAndWait(sMsiExe, sParam1, WAIT) < 0) then
		MessageBox ("Failed to install msxml library.",SEVERE);
    endif;

    if(LaunchAppAndWait(sCmdExe, sParam2, WAIT) < 0) then
		MessageBox("Failed to install ActiveMQ.", SEVERE);
    endif;
end;

  • 위의 소스는 쉽게 이해할 수 있을 것이다.
  • exe파일, bat파일, msi파일 별로 실행하는 방법이 다르다는 것만 알면 쉽게 실행 시킬 수 있다.