놀이터 일간 추천 베스트 |
놀이터 일간 조회 베스트 |
작성자: 오예스 조회 수: 2477 PC모드
URL 링크 : | https://osmanias.com/tip/2119420 |
---|
저번 초급강좌 (초급편) 이어 이번에 좀더 어려운 고급 기능을 익혀봅시다.
* 빌더가 버전2로 버전업 했습니다. PortableAppsLauncher_repack_V2.7z_빌더
다운 받으면 뒤에 이름 _빌더 지우고 압축을 푸시면 됩니다. (크롬이 설정 파일을 막는 이유로 이름 바꿈...)
작업 경로가 길면 오류가 날 수 있으니 가능하면 최상위 폴더에 풀어주세요. 예: C:\PortableGenerator
강좌에 사용할 프로그램은 Clip Studio Paint EX 란 프로그램입니다.
만화 그리는 프로그램인데 고급 기능을 익히기 좋아서 이걸로 진행 하겠습니다.
어차피 고급 기능을 익히기 위한거니 정품이 없어도 체험판을 받아 사용하시면 되겠습니다.
ClipStudioPaint 를 설치하고 실행해봅시다.
** 참고로 설치전에 설치 기록하는거 잊지 않으셨죠? (초급편) 참고...
설치가 끝나고 CLIP STUDIO 를 실행하니 아래와 같은 화면이 나옵니다.
그리고 빨강 사각 박스의 PAINT 를 누르면 본체 프로그램이 시작됩니다.
정품이 아닌 경우 체험판을 누르면 프로그램이 시작됩니다.
자 이제 포터블 제작을 시작해봅시다.
우선 설치 기록을 보고 파일 위치 설정 부속파일등의 위치를 파악해야 합니다.
저 번 초급 강좌에 찾는법 알려드렸으니 찾았다고 가정하고 바로 넘어갑니다.
설치 경로는 C:\Program Files\CELSYS 입니다.
부속 폴더는 아래 처럼 2개 있고요
C:\ProgramData\CELSYS\CLIPStudio\Common
C:\ProgramData\CELSYS\CLIPStudio\InstallPath
설정 폴더도 아래 처럼 2개 있네요
C:\Users\유저명\AppData\Roaming\CELSYS
C:\Users\유저명\AppData\Roaming\CELSYS_KR마지막으로 레지스트리는 HKEY_CURRENT_USER\Software\CELSYS_KR 로 파악되었습니다.
어떤게 빠질지 또는 사용될지 아직 모르니까 각각의 폴더와 레지스트리 모두 백업해 두세요.
(저게 다 쓰이진 않습니다, 만들면서 필요없는 부분은 과감히 빼는게 실행속도나 용량면에 좋습니다)
일단 작업 폴더로 템플릿 파일과 설치, 설정 파일들을 옮깁시다.
폴더 구조는 위에 처럼 할것입니다.
프로그램 폴더는 설치 폴더를 복사해 가져온것이고 기본 설정과 부속 폴더는 위에서 찾은 설정들을 모아둔 폴더입니다.
필요없는 폴더는 나중에 하나씩 찾아 지우기로 하고 우선 다 가져왔습니다.
이제 포터블 설정 파일을 만들어 봅시다.
저번 초급 강좌 처럼 적당한 폴더에 PortableApps 용 템플릿 (App.7z_템플릿2) 을 풀어 넣습니다.
(Work.7z_템플릿2 을 Work.7z 로 이름을 바꾸고 압축을 푸시면됩니다.)
참고로 이번에도 저는 PortableApps\Work\ 에 풀어 사용합니다.
강좌도 이 경로라고 가정하겠습니다.
App\AppInfo\appinfo.ini 에 프로그램에 대한 정보를 적어 주세요.
아이콘도 적당한걸로 바꾸시고요. 자세한 내용은 저번 강좌에 했으니 생략 합니다.
참고로 appinfo.ini 파일에 Language= 부분은 현재 Multilingual 와 English 2가지만 됩니다.
어차피 포터블에만 적용되는 언어라 용량을 줄이려고 다른 언어는 뺏습니다.
다른 언어를 포함시키려면 "PortableAppsLauncher\Other\Source\Languages.nsh" 안에 보시고
"${IncludeLang} 해당 언어" 주석을 풀어주시면 사용 가능해집니다.
이제 본격적으로 포터블 설정 파일을 만들어 봅시다.
포터블 실행 파일명을 CSPaintPortable 라고 하겠습니다. (appinfo.ini 파일에 AppID=CSPaintPortable)
그럼 설정 파일 역시 같은 이름이여야 한다고 저번 강좌에 말씀 드렸습니다.
설정 파일 = App\AppInfo\Launcher\CSPaintPortable.ini
[Launch]
;; 실행할 파일명입니다. Studio 가 아닌 Paint 를 직접 실행 할겁니다.
ProgramExecutable="CELSYS\CLIP STUDIO PAINT\CLIPStudioPaint.exe"
DirectoryMoveOK=yes ;; 포터블 위치가 이동할때 이전 위치를 저장해두고 쓸수있게 합니다.
SupportsUNC=yes ;; UNC 네트워크 위치를 사용가능하게 해줍니다.
;; 참고로 32비트 64비트 따로 실행할 필요가 있을땐 아래 처럼 하면됩니다.
;; ProgramExecutable="32비트 프로그램";; ProgramExecutable64="64비트 프로그램"
[Language]
Base=KO ;; 언어 설정
[LanguageStrings]
EN=english ;; 언어 설정의 문자형입니다. (프로그램 언어 치환에 사용됩니다)
KO=korean
;; 참고로 이 Activate 항목의 몇몇 설정은 바뀌면 컴파일을 다시해야 적용됩니다.
[Activate]
Registry=true ;; 레지스트리 사용을 가능하게합니다.
OneDrive=false ;; 설정을 원드라이브에 저장할지 설정합니다.
Splash=false ;; 스플래시 화면을 보여줄지 설정합니다.
;; 스플래시 화면은 App\AppInfo\Launcher\splash.jpg 가 존재하면 그 이미지를 보여줍니다.
;; 해당 레지스트리를 시작시 복구하고 종료시 백업합니다.
[RegistryKeys]
CELSYS_KR=HKCU\Software\CELSYS_%PAL:LanguageBase%
[DirectoriesMove]
;; 기본설정 App\DefaultData\Roaming_CELSYS_KR 폴더
;; 를 C:\Users\유저명\AppData\Roaming\CELSYS_KO 폴더
;; 로 시작시 복구(이동) 종료시 다시 백업합니다.
;; 참고로 기본 설정은 있으면 사용하지만 없어도 상관은 없습니다.
;; %PAL:LanguageBase% 이 변수 값은 원래 없지만 뒤에 Custom.nsh에서 넣을겁니다.
Roaming_CELSYS_KR=%APPDATA%\CELSYS_%PAL:LanguageBase%
;; 이 DirectoriesCopy 란 기능은 없지만 뒤에 Custom.nsh에서 넣을겁니다.
;; 참고로 이 기능은 시작할때 복사만하고 위 Move 처럼 종료할때 가져오지는 않습니다.[DirectoriesCopy]
;; App\ProgramData\InstallPath 폴더를
;; C:\ProgramData\CELSYS\CLIPStudio\InstallPath 로 시작시 복사합니다.
ProgramData\InstallPath=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath;; 아래 폴더는 용량이 커서 복사하는데 시간이 걸려서 사용안하기로 했습니다.
;; 없어도 별 문제 없어보이지만 후에 필요하면 주석을 지웁니다.
;; ProgramData\Common=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\Common
;; 프로그램이 종료될때 삭제할 폴더입니다.
[DirectoriesCleanupForce]
1=%APPDATA%\CELSYS
2=%APPDATA%\CELSYS_%PAL:LanguageBase%
;; 파일에서 필요한 문자를 찾아 특정 문자로 교체합니다.
;; FileWrite숫자 로 뒤에 숫자는 순서대로 여야합니다.
[FileWrite1]
;; Type은 ini 또는 xml 도 가능합니다. 자세한 내용은 도움말 FileWrite 를 참고하세요.
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\aggregatemdul15.txt
;; 위 파일에서 "<PAL:APPDIR>" 이라는 문자열을 찾습니다.
Find=<PAL:APPDIR>
;; 위에서 찾은 문자열을 App 폴더로 바꿉니다.
Replace=%PAL:AppDir%
[FileWrite2]
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\certmdul15.txt
Find=<PAL:APPDIR>
Replace=%PAL:AppDir%
[FileWrite3]
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\clipstudio15.txt
Find=<PAL:EXEDIR>
Replace=%PAL:AppDir%\..
[FileWrite4]
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\clipstudio15.txt
Find=<PAL:LanguageCustom>
;; 위에서 찾은 문자열을 언어 설정의 문자형으로 바꿉니다. (예: english)Replace=%PAL:LanguageCustom%
[FileWrite5]
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\common.txt
Find=<PAL:APPDIR>
Replace=%PAL:AppDir%
[FileWrite6]
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\paint15.txt
Find=<PAL:EXEDIR>
Replace=%PAL:AppDir%\..
[FileWrite7]
Type=Replace
File=%ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath\paint15.txt
Find=<PAL:LanguageCustom>
;; 위에서 찾은 문자열을 언어 설정의 문자형으로 바꿉니다. (예: english)Replace=%PAL:LanguageCustom%
일단 위 CSPaintPortable.ini 파일 내용을 보니 아래 1개의 폴더는 사용이 안되었는데
App\DefaultData\Roaming_CELSYS
이유는 저 폴더에 일부 설정들이 들어가는데 사용해보니 빼도 별로 상관없기에 빠졌습니다.
이런식으로 사용하다가 필요없어 보이는 부분은 과감이 빼세요. 그만큼 실행 속도가 빨라집니다.
그리고 이번에 중요하게 봐야할 것이 몇개 있는데 다음과 같은 부분이 있습니다.
%PAL:LanguageBase%
[DirectoriesCopy]
[FileWrite숫자]
우선 [FileWrite숫자] 에 대해 말해봅니다.
이 항목은 특정 파일에 내용을 변경할때 사용합니다.
위 설정 파일을 보면 InstallPath\*.txt 파일을 변경 하는걸 볼수있는데
저 txt 파일들 내용을 보면 언어 그리고 프로그램과 모듈들의 경로가 적혀있고 그 경로를 사용합니다.
그러니 제대로 포터블에 있는 프로그램과 모듈 경로로 바꿔줘야 하겠죠?
예로 몇가지만 살펴보죠
App\InstallPath\common.txt
"CommonPath"="<PAL:APPDIR>\CELSYS\Common\";
App\InstallPath\paint15.txt
"AppPath15"="<PAL:EXEDIR>\CSPaintPortable.exe";
"AppName"="PAINT";
"Sort"="200";
"Language"="<PAL:LanguageCustom>";
위 예의 템플릿 내용을 보면 아래와 같은게 있죠.
(물론 처음엔 아래 치환자가 아니였지만 어차피 매번 설정해야 하는거라 알기 쉽게 바꿔놓은겁니다)<PAL:APPDIR>, <PAL:EXEDIR>, <PAL:LanguageCustom>
치환자들 입니다.
설정 파일 CSPaintPortable.ini 의 [FileWrite숫자] 항목을 보면 저 문자열을 찾아서 필요한 문자열로 바꿔 주는 겁니다.
이제 %PAL:LanguageBase%, [DirectoriesCopy] 를 만들어 사용하기 위해 Custom.nsh 만들어 봅시다.
${SegmentFile}
;; 설정의 Language Base 값을 저장하기 위해 LangBase 라는 변수를 설정합니다.
Var LangBase
${SegmentInit}
;; 시작할때 설정의 Language Base 값 "KO" 을 LangBase 라는 변수에 저장합니다.
${ReadLauncherConfig} $LangBase Language Base;; 설정 파일에서 사용할 %PAL:LanguageBase% 환경변수를 만들고 값 "KO" 넣습니다.
${SetEnvironmentVariablesPath} PAL:LanguageBase $LangBase!macroend
${SegmentPre}
;; ForEachINIPair 함수는 ini 의 DirectoriesCopy 항목을 순차적으로 읽어옵니다.
;; 순차적으로 읽어서 변수 $0 과 $1 에 넣습니다.
;; 참고로 $0 ~ $9, $R0 ~ $R9 의 변수가 기본으로 설정되있어 그냥 사용 가능합니다.
${ForEachINIPair} DirectoriesCopy $0 $1;; $0 변수에 읽어온 $0 변수와 App 디렉토리 경로를 합쳐 넣습니다.
;; 결과 예: App풀경로 + \ + ProgramData\InstallPath
StrCpy $0 $AppDirectory\$0;; ParseLocations 함수로 $1 변수에 값을 제대로된 경로로 만듭니다.
;; 결과 예: %ALLUSERSPROFILE%\CELSYS\CLIPStudio\InstallPath
;; 위를 이렇게 C:\ProgramData\CELSYS\CLIPStudio\InstallPath${ParseLocations} $1
;; $1 경로 에서 상위 경로를 $4 변수에 넣습니다.
;; 그러니 $4 변수 값이 C:\ProgramData\CELSYS\CLIPStudio 됩니다.
${GetParent} $1 $4
${IfNot} ${FileExists} $4
;; 해당 디렉토리가 없으면 만듭니다.
CreateDirectory $4
${EndIf}
;; CopyFiles 이란 함수도 있지만 기능이 적어 XCOPY 함수를 만들어 사용했습니다.
;; 도스를 이용했기에 도스 사용시 Include 폴더에서 함수의 코드를 찾아 참고하면 좋을겁니다.;; 0번 경로를 1번 경로로 복사합니다. 경로 끝은 \ 이어야 하고 $R0 으로 결과가 반환됩니다.
${XCOPY} $R0 "$0\" "$1\" 1 ;; 뒤에 1은 항상 새로 덮어씌우기
${NextINIPair}!macroend
이렇게 해서 ini 설정에서 %PAL:LanguageBase%, [DirectoriesCopy] 이걸 사용 가능하게 되었습니다.
사실 [DirectoriesCopy] 이 항목은 강좌를 위해 Custom.nsh 에서 따로 만들어 본거고요.
같은 기능인 [DirectoriesCopy.Overwrite] 라는 함수를 미리 만들어 둬서 이걸 그냥 사용해도 됩니다.
참고로 Segment 실행 순서는 다음과 같습니다.
${Segment.onInit}
${SegmentInit}
${SegmentPre}
${SegmentPrePrimary}
${SegmentPreSecondary} ;; Secondary 는 특수한 경우에만 사용되니 없다고 봐도 무방
${SegmentPreExec}
${SegmentPreExecPrimary}
${SegmentPreExecSecondary}
${SegmentPostPrimary}
${SegmentPostSecondary} ;; Secondary 는 특수한 경우에만 사용되니 없다고 봐도 무방
${SegmentPost}
${SegmentUnload}
이정도로 하고 이제 포터블을 빌드 해봅시다.
템플릿 파일들이 있는 작업 폴더를 선택합니다.
템플릿 파일이 Work\App 에 있다면 Work\ 폴더를 선택하시면 됩니다.
그럼 Work\ 폴더에 빌드된 CSPaintPortable.exe 가 생성됩니다.
이걸로 포터블 완성입니다.
이제 포터블 만들기 초급편과 고급편을 참고하면 기본적인건 만들 수 있을겁니다.
참고로 저번에 런타임 파일에 대해 조금 말했는데 좀더 추가하자면
64bit 윈도우라면 C:\Windows\System32 에 런타임 파일을 찾을 수 있고
64bit 윈도우에서 32bit 프로그램용 런타임은 C:\Windows\SysWOW64 라는 곳에서 찾을 수 있습니다.
필요한 런타임을 찾는 법은 Process Explorer 또는 pe-bear 를 사용해 볼 수 있습니다.
이 강좌는 제가 전에 만들 소스로 쓴 강좌라 실수하거나 놓친 부분이 있을 수 있습니다.
질문이나 그런 부분이 있다면 댓글로 적어주세요. 그럼 20000...
참고 사이트들
NSIS 도움말: http://nsis.sourceforge.net/Docs/
플러그인들 : http://nsis.sourceforge.net/Category:Plugins
portableapps 도움말: https://portableapps.com/manuals/PortableApps.comLauncher/index.html
첫번째 경우는 런타임이 없거나 실행에 필요한 못찾은 레지스트나 파일 등이 더 있어 그럴겁니다.
두번째 경우는 만든 사람이 일부러 그랬거나 잘못만든 경우겠네요.
강좌 감사드립니다.추천드리구요
저도 예전에 포터블을 만들어보았는데요. 두가지가 늘 궁금합니다.
과거 포터블 프로그램으로 어느 프로그램을 포터블로 만들었는데요. 만들고 나니 실행이 아주 잘되더군요.
그래서 다른 사람들한테 주고 사용하라고 했는데 안된다는 것이 었습니다.
그래서 다시 저의 컴퓨터에서 해보니 잘되더군요.
이렇듯이 제 컴퓨터에서는 되는데 다른사람은 안되는것은 무슨 경우인지 의문입니다.
또 하나는 최근 포터블을 보면 간간히 눈에 띄는데요. 포터블을 다운받은후에 실행하면 아주잘됩니다.
그런데 c드라이브에서 실행하면 안되더군요. c드라이브 외에 다른 드라이브에서 실행하면 잘되는데 c드라이브로 옮기면 실행이 안되더군요.
프로그램은 c드라이브에 이쁘게 넣고 정리할려는데 그게 안돼서 가끔은 필요한 최신 유틸을 사용못하곤합니다. 이것도 궁금하긴 하더군요.