2009-12-09 3 views
6

다운로드 한 사용자에 따라 실행 파일이 약간 다른 크로스 플랫폼 응용 프로그램을 배포하려고합니다. 이것은 실행시 어딘가에서 자리 표시 자 문자열을 가져 와서 다운로드 할 때 사용자별로 특정 문자열로 바뀝니다.다운로드시 사용자 정의 .dmg 파일 만들기

이러한 문자열 교체를 수행해야하는 웹 서버는 Linux 컴퓨터입니다. Windows의 경우 실행 파일은 .exe로 압축되지 않으므로 문자열을 쉽게 교체 할 수 있습니다.

압축되지 않은 Mac OS X .dmg 파일의 경우에도 마찬가지입니다. 그러나 gzip 또는 bzip2로 압축 된 .dmg 파일은 쉽지 않습니다. 예를 들어 후자의 경우 압축 된 .dmg는 하나의 큰 bzip2 압축 디스크 이미지가 아니라 대신 다른 크기의 bzip2 압축 파트와 plist 접미어로 구성됩니다. 또한 bzip2로 다른 부분을 압축 해제하고 다시 압축하면 원래 데이터가 생성되지 않으므로 Apple이 명령 줄 도구보다 bzip2에 몇 가지 매개 변수를 사용한다고 추측합니다.

압축 된 .dmg 파일을 리눅스 (hdiutil이없는 파일)에서 생성하는 방법이 있습니까? 또는 사전 생성하지 않고 사용자 정의 된 응용 프로그램을 작성하기위한 또 다른 제안입니까? 사용자가 입력하지 않아도 작동합니다.

+0

Linux에서 .dmg 파일 내에있는 파일의 이름을 바꾸는 방법을 묻는 중입니까? – Seth

+0

아니요, .dmg의 파일 중 하나에 Null 종료 문자열을 대체합니다. – Marten

+0

.dmg 파일에 있어야하는 이유는 무엇입니까? –

답변

0

웹 서버와 클라이언트가 gzip 인코딩을 지원하면 서버의 압축되지 않은 파일을 처리 할 수 ​​있지만 웹 서버/웹 클라이언트는 압축/압축 해제를 각각 즉시 수행 할 수 있습니다.

아파치의 mod_gzip. 원하는 문자열을 교체 할 것을 후

  • 물건을 대체 할 수는

  • 을 대체 할 무엇 전에

    • 재료 :

      그렇지 않으면 어쩌면 당신은 3 개 부분으로 데미지를 분할 할 수 있습니다

      gzip 스트림이이 지점에서 분할 가능하면 교체하려는 gzipped 문자열에 앞면과 뒷면을 연결할 수 있습니다. 그러면 즉시 생성 할 수 있습니다.

  • +1

    나는 hdiutil을 사용하여 크기를 최소화했지만 압축하지 않는 읽기 전용 이미지 (UDRO)를 만들기로 결정했습니다. 대부분의 사용자는 HTTP를 통해 gzip으로 전송 될 것이므로 작은 디스크 공간 벌금을 감당해야 할 것입니다. – Marten

    +1

    흠, 읽기 전용 이미지에 체크섬이 있으므로이 기능이 작동하지 않습니다. 그리고 OS X은 마운트 될 때 자동으로 .dmg의 내용을 팝업하지 않기 때문에 읽기 - 쓰기 이미지를 사용할 수 없습니다. – Marten

    0

    정상적인 읽기 전용 압축 dmg을 해제하십시오. 그런 다음 필요한 변수를 설정하는 비행 전 스크립트를 사용하여 패키지 설치 프로그램에 앱을 묶습니다.

    5

    나는 여기서 너무 늦었다는 것을 알았지 만, 우리는 똑같은 일을하고 싶었고 libdmg를 사용하여 일하게했다. https://github.com/planetbeing/libdmg-hfsplus

    기본적으로 libdmg를 사용하여 dmg 파일을 hfs + 파일 시스템이 들어있는 압축되지 않은 파일에 압축을 풀고 hfs + 파일 시스템 내부의 파일로 재생 한 다음 다시 dmg 파일로 넣을 수 있습니다 올바른 체크섬.

    이미지가 탑재되기 전에 EULA를 표시하는 것과 같은 fancy dmg 기능을 사용하는 경우 프로세스에서 살아남지 못합니다. 배경 이미지 등등은 작동합니다.

    관련 문제