본문 바로가기

유틸리티/Inno Setup

Inno Setup에서 Wizard로 만든 후 여러가지 추가 설정들

바탕화면 바로가기 만들기를 기본으로 체크되어 있도록 하기

 

먼저 바로가기 아이콘을 설정하고

[Icons]
Name: "{commondesktop}\My Application"; Filename: "{app}\MyApp.exe"; Tasks: desktopicon

 

Tasks에서 Flags를 unchecked에서 checkedonce로 바꿔주면 된다.

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkedonce

 

 

한글 지원 가능하도록 하기

https://fred16157.github.io/etc/make-installer-with-inno-setup/

이곳의 내용 중 Setup Languages 부분을 참고 하면 된다.

 

 

Setup Languages에서 English를 선택 안하고 Korean만 선택했을 때의 에러 대처

Compiler Error
A custom message named "LanunchProgram" has not been defined.

라는 에러가 뜰 것이다.

 

[CustomMessages]
LaunchProgram=프로그램 실행하기

를 추가해주면 해결된다. cm:LaunchProgram 와 관련이 있어 보인다.

 

ps) 그냥 Korean.isl 자체에다가 LaunchProgram=Launch %1를 추가하였다.

더불어 'NameAndVersion=%1 버전 %2' 로 되어 있던 것을 'NameAndVersion=%1'로 수정하였다.

이제 곧 만들 패치 프로그램은 자동으로 패치되며 스스로를 Changer의 도움을 받아 갈아치우게 만들건데 제어판 쪽에 표시되는 문자열이 설치할 당시의 버전으로 계속 표기되어 있으면 곤란하기 때문이다.

아래는 내가 수정한 Korean.isl 파일이다.

Korean.isl
0.02MB

 

 

64비트 프로그램은 'Program Files (x86)'이 아닌 'Program Files'에 설치 되게끔 하기

[Setup] 섹션에 ArchitecturesInstallIn64BitMode=x64 를 추가한다.

 

만약 64비트 32비트 상관없이 무조건 어느 한쪽 디렉토리만을 선택하고 싶다면

ArchitecturesAllowed=x64

또는

ArchitecturesAllowed=x86

로 지정해주면 된다.

만약,

ArchitecturesAllowed=x64;x86

이렇게 지정해주면 둘 다 허용해주겠다는 뜻이므로 있으나 없으나가 된다.

 

 

Update 등을 진행할 때, 관리자 권한 문제를 피하기 위해 User의 AppData\Local쪽에 설치되게끔하기

[Setup] 섹션에서

DefaultDirName={localappdata}\CellBig\PatchClient

이렇게 중괄호{} 안의 부분을 localappdata로 고쳐준다.

 

 

추가 파일들을 설치 디렉토리 내에서 트리구조로 배치하기

[Files] 섹션에서 각 요소의 DestDir 부분에 "{app}"이라고 되어 있던 것을 "{app\Data}"이런식으로 고쳐서 추가 디렉토리들을 구성해 나가면 된다.

 

 

설치한 프로그램이 추가로 생성한 디렉토리나 파일들 때문에 나중에 삭제할 때 찌꺼기가 남는 문제 해결하기

[UninstallDelete]
Type: files; Name: "{app}\LicenseKey.dat"
Type: filesandordirs; Name: "{app}\NewPatchClient"

이런식으로 파일이나 폴더를 지정해주면 된다.

그러면 Uninstall을 할때, 추가 생성된 파일, 디렉토리와 함께 기본 설치 디렉토리까지 말끔하게 지워진다.

 

혹은 그냥

Type: filesandordirs; Name: "{app}\*"

이 한줄만 추가하면 기본 설치 데렉토리 내에 어떤 파일이나 디렉토리가 추가 생성되었더라도 모두 말끔히 삭제해준다.