출처 : http://discafe.tistory.com/entry/inno-setup-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0


이번에 스프링 부트로 개발을 했는데,

솔루션 형식으로 설치파일로 배포할 일이 생겼다.


그리하여 Inno Setup을 처음 써보게 되었는데 다음과 같이 스크립트를 작성하였다.


#define zuluPath "origin\zulu8.31.0.1-jdk8.0.181-win_x64"

#define TomcatSourcePath "origin\apache-tomcat-9.0.10-windows-x64"

#define readMeFile "origin\readme.txt"

#define createServiceFile "origin\createService.bat"

 

[Setup]

AppId={{********-****-****-****-************}

AppName={#MyAppName}

AppVersion={#MyAppVersion}

AppPublisher={#MyAppPublisher}

AppPublisherURL={#MyAppURL}

AppSupportURL={#MyAppURL}

AppUpdatesURL={#MyAppURL}

DefaultDirName={sd}\{#MyAppName}

DisableProgramGroupPage=yes

OutputBaseFilename=my_app

Compression=lzma

SolidCompression=yes

ChangesEnvironment=yes

 

[Languages]

Name: "english"; MessagesFile: "compiler:Default.isl"

 

[Files]

Source: "{#zuluPath}\*"; DestDir: "{app}\zulu"; Flags: ignoreversion recursesubdirs

Source: "{#TomcatSourcePath}\*"; DestDir: "{app}\Tomcat"; Flags: ignoreversion recursesubdirs

Source: "{#readMeFile}"; DestDir: "{app}"; Flags: ignoreversion

Source: "{#createServiceFile}"; DestDir: "{app}"; Flags: ignoreversion

 

[Registry]

Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}\zulu\bin"; Check: NeedsAddPath('{app}\zulu\bin')

 

[Run]

Filename: "{cmd}"; Parameters: "/c setx /m JAVA_HOME ""{app}\zulu"" "; Flags: runhidden

Filename: "{cmd}"; Parameters: "/c setx /m JRE_HOME ""{app}\zulu\jre"" "; Flags: runhidden

Filename: "{cmd}"; Parameters: "/c setx /m CATALINA_HOME ""{app}\Tomcat"" "; Flags: runhidden

Filename: "{cmd}"; Parameters: "/c explorer ""{app}"" "; Flags: runhidden

Filename: "{cmd}"; Parameters: "/c readme.txt"; WorkingDir: "{app}";

 

[UninstallRun]

Filename: "{cmd}"; Parameters: "/c sc delete my_app"; Flags: runhidden

 

[Code]

function NeedsAddPath(Param: string): boolean;

var

  OrigPath: string;

begin

  if not RegQueryStringValue(HKEY_LOCAL_MACHINE,

    'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',

    'Path', OrigPath)

  then begin

    Result := True;

    exit;

  end;

  Param := ExpandConstant(Param);

  Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0;

end;

 



이렇게 하면 설치파일이 생성되고, 서비스 등록까지 한 번에 하려고 했는데 

환경변수 갱신이 되지 않아서 따로 배치파일을 만들고 사용자가 실행하도록 만들었다.


@ECHO OFF

 

ECHO @기존 서비스 삭제

sc stop my_app

sc delete my_app

 

ECHO @서비스 등록

Tomcat\bin\Service.bat INSTALL my_app

 

pause




정상적으로 동작이 되긴 하더라.


추가적으로 방화벽 풀기, 윈도우즈 업데이트 막기 등이 있었는데 나는 직접 풀기로 하고 설정하지 않았다.

아래는 테스트 해보지 않음.




;
윈도우 설정인 전원 옵션

;set power option

Filename: "{cmd}"; Parameters: "/c powercfg -change -monitor-timeout-ac 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -monitor-timeout-dc 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -disk-timeout-ac 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -disk-timeout-dc 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -standby-timeout-ac 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -standby-timeout-dc 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -hibernate-timeout-ac 0"; Flags:"runhidden";

Filename: "{cmd}"; Parameters: "/c powercfg -change -hibernate-timeout-dc 0"; Flags:"runhidden";

 

;윈도우 방화벽 제거

;set firewall stop

Filename: "{cmd}"; Parameters: "/c sc stop ""MpsSvc"""; Flags:"runhidden"; 

Filename: "{cmd}"; Parameters: "/c sc config ""MpsSvc"" start= disabled"; Flags:"runhidden"; 

 

;윈도우 업데이트 방지

;set window update stop

Filename: "{cmd}"; Parameters: "/c sc stop ""wuauserv"""; Flags:"runhidden"; 

Filename: "{cmd}"; Parameters: "/c sc config ""wuauserv"" start= disabled"; Flags:"runhidden"; 

 

;자바 업데이트 방지

;java update

Filename: "{cmd}"; Parameters: "C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f"; Flags:"shellexec runhidden"; 

 

;레지스트리 등록, 자바 업데이트 방지

;disable java update

[Registry]

Root: HKLM; Subkey: "SOFTWARE\JavaSoft\Java Update\Policy"; ValueType: dword; ValueName: "EnableJavaUpdate"; ValueData: "0";

 

;디렉 토리 삭제

[InstallDelete]

Type: filesandordirs; Name: "{#TOMCAT}\webapps\ROOT";








Posted by motolies
,