맥에 있는 기본 앱들을 열어보면, 있어야 할 리소스 대신


이런 파일만 있다..

iOS 에 .artwork 처럼 리소스들을 압축(?)해 놓은 파일이다.


검색을 해본 결과 Resedit, ThemePark 등의 앱이 나왔지만,, 현재 OSX 에는 없거나 호환이 되지 않는다.


http://iconverticons.com/online/


에서 웹으로 파일을 올린 후 내려받는 식으로 할 수도 있지만,

무료인 웹서비스는 제대로 되지도 않고 용량제한도 있다..

iConvert 앱으로도 제공하나, 얘는 유료.



그래서 결론은,,

http://stackoverflow.com/questions/5069705/how-to-get-images-from-itunes-rsrc-using-derez


이 글.

뭔가 제대로된 해결책이 아닌 것 같아서 검색 초창기에 봤음에도 지나갔는데, 저게 정답이였다.

(확장자만 제대로 썼어도...ㅡ_ㅡ)


우선 DeRez 는 xcode 개발툴에 있다. 만약 없으면,, xcode 를 설치하고.. 그래도 없으면 command line tool 도 설치.


$ DeRez -useDF -only 'PNG' iTunes.rsrc > iTunes.txt


(PNG 대문자 구분한다... 이거땜에 또 좀 고생..ㅠㅠ)

이렇게 하면 바이너리 값이 잘 정리된(?) 파일이 튀어나온다.




대충 이런형태....

딱봐도 저부분만 빼내면 png 파일이 나오는건데,,, 


이걸 저 stackoverflow 의 답변자가 파이썬으로 만들어 놨다.


for l in file('iTunes.txt'):

    if not l[0] == '\t':

        if l.startswith('data '):

            res_id = l[l.rindex('(') + 1:l.rindex(')')]

            out = file('extract/' + res_id + '.png', 'wb')

        continue

    out.write(l[l.index('"') + 1:l.index('" ')].replace(' ', '').decode('hex'))


안에 인자들을 자신에 맞게 적당히 바꿔준다음

python 을 돌려주면 이미지가 다 튀어나온다.



간단하다.


Target -> Info (즉 Info.plist 수정) 에서

Application is agent (UIElement) 값을 YES 로 해주면 된다.

Raw key 값은 LSUIElement



근데 이렇게 하면 내가 원하는대로 수정이 안되거나,

수정을 하더라도 앱을 재실행 해줘야 한다.


그래서,, 아래와 같은 방법이 있다!!


위에서 설정하는 UIElement 값을 동적으로 바꿔주는 것 같다.


ProcessSerialNumber psn = { 0, kCurrentProcess };

TransformProcessType(&psn, kProcessTransformToForegroundApplication);


이건 독에 아이콘을 나타내는 코드



ProcessSerialNumber psn = { 0, kCurrentProcess };

TransformProcessType(&psn, kProcessTransformToUIElementApplication);


이건 다시 UIElement = TRUE, 즉 독에서 앱을 없애게 해준다.


type 인자만 다르지만,, 두줄밖에 안되니 그냥 두번 적어줬다.



여기에 앱을 등록하고, 확인하고, 제거하는 코드.

자신의 bundlePath 기준으로 등록, 검사, 제거한다.


코드를 그냥 붙여넣기 하려 했으나, 들여쓰기가 없어진다..ㅠ


그래서 걍 gist 로 올림.


https://gist.github.com/iolate/7963775


원래 추가/삭제만 있었는데 등록되어 있는지 검사하는 코드도 넣었다.(삭제에서 조금만 수정..ㅎㅎ)

그리고.. 메모리 관리 조금.. 근데 맞는지 모르겠다ㅋㅋㅋ


출처: http://cocoatutorial.grapewave.com/tag/mac-os-x/

+ Recent posts