pkgbuild 생성 패키지가 올바르게 설치되지 않음


4

pkgbuild / productbuild를 사용하여 설치 프로그램에 따라 오류없이 설치되는 세 가지 패키지 (응용 프로그램, 제거 프로그램, KEXT)로 구성된 제품 아카이브를 만들었습니다.

KEXT는 / Library / Extensions에 올바르게 배치되고 설치 후 스크립트가이를 잘로드합니다.

그러나 내 응용 프로그램은 / Applications / Company / 폴더로 이동되지 않습니다. 폴더가 만들어 지지만 응용 프로그램은 여기에 배치되지 않습니다.

구성 요소 plist + 배포 XML을 수행하는 프로세스는 매우 간단하므로 h * ll이 잘못 될 수있는 것을 추측 할 수 없습니까?

패키지 Pacifist를 통해 "설치"될 있지만 설치 후 스크립트는 실행되지 않습니다.

도움?

최신 정보:

분석 단계 (응용 프로그램은 ./pkgbuild/app_path/ 폴더에 있음) :

pkgbuild --analyze --root "./pkgbuild/app_path/" app.plist

빌드 단계 :

pkgbuild --root "./pkgbuild/app_path/" \
         --component-plist ./app.plist \
         --install-location "/Applications/Company/" \
         --identifier "com.company.myapp.pkg" \
         --version "1.0" \
         app.pkg

그런 다음 제품 아카이브, 1 단계 :

productbuild --synthesize --package app.pkg distribution.xml

그런 다음 distribution.xml이 올바른 배경 이미지, 라이센스 등으로 수정됩니다.

2 단계:

productbuild --distribution ./distribution.xml output.pkg

(KEXT 패키지는 완벽하게 작동하므로 생략했습니다)

"output.pkg"를 설치할 때 / Applications / Company / 폴더가 생성되지만 비어 있습니다.

해결됨 (아래 Grahams 답변 참조) :

설정하여 BundleIsRelocatable을 하는 구성 요소 PLIST 파일에 허위 , 응용 프로그램은 올바른 위치에 배치됩니다.

설치 관리자 로그를 보면 응용 프로그램이 Xcode 프로젝트가 앱을 빌드 한 위치로 "이전"되었지만 여전히 / Application / Company 폴더를 만듭니다. 내가 말하는 "약간"독특한 행동.

OSX 버전은 10.11.1입니다.


질문을 편집하고 응용 프로그램 설치 프로그램 패키지의 세부 사항을 추가 할 수 있습니까? 어떤 플래그와 옵션을 사용 했습니까? 설치 후 스크립트의 기능은 무엇입니까? 이상적으로 설치 관리자는 설치 후 스크립트가 필요하지 않습니다.
Graham Miln

알았어 할게. 설치 후 스크립트는 설치된 KEXT를로드하므로 필요합니다.
Robert

app.pkg호출 한 후 예상 크기는 pkgbuild? app.pkg자체적으로 설치하면 작동 합니까 ?
Graham Miln

크기가 정확하고 (~ 3MB) 아니요, 자체적으로 작동하지 않습니다.
Robert

1
고맙습니다, bmike, Grahams의 답변이 올바른 것이기 때문에 음란 한 텍스트를 바꿀 것입니다. 내 문제는 주로 Installer.app가 내 앱을 Xcode가 앱을 빌드 한 곳으로 옮긴 "사실"에 있습니다. 나는 이것이 이상한 행동이라고 생각하지만 BundleIsRelocatable 플래그로 완화 할 수 있습니다. OSX는 최신 El Capitan입니다.
Robert

답변:


5

이동 된 응용 프로그램

설치 프로그램이 기본 설치 위치에있는 애플리케이션이 아니라 찾은 애플리케이션의 첫 번째 사본을 업데이트하고있을 것입니다.

이 동작은 의도적이며 사용자가 응용 프로그램을 이동할 수있는 동시에 설치 관리자 패키지를 사용하여 업데이트를 적용 할 수 있습니다.

개발자는 아마도 Mac에 대상 응용 프로그램의 복사본이 많이있을 것입니다. Xcode가 마지막으로 실행 한 복사본이 업데이트 된 것일 수 있습니다. 숨겨진 빌드 폴더 내에 사본이 포함될 수 있습니다.

로 위치 시행 BundleIsRelocatable

설정 BundleIsRelocatable에 플래그를 falseInstaller.app하는 패키지가 제공하는 정확한 경로를 사용합니다.

이 플래그를 설정하지 않으면 Installer.app는 대상 Mac에서 일치하는 응용 프로그램을 검색하고 검색된 위치에 새 사본을 씁니다.

  • 새로운 OS X 사본이있는 깨끗한 Mac으로 설치 프로그램을 사용해보십시오.
  • Installer.app 또는 installer; 의 로그 출력을 자세히보십시오 . 재배치 된 애플리케이션의 검색 및 최종 위치와 관련된 항목이 표시됩니다.

버그 신고

설치 프로그램이 여전히 상위 회사 폴더를 작성했다는 것은 오류처럼 느껴집니다. Apple에 버그를 신고 하십시오 .


감사합니다 Graham. pkgbuild / productbuild를 공격하게 된 문제는 이것 입니다. 왜 이런 일이 발생했는지에 대한 통찰력이 없습니까? :) (btw. 새로 생성 한 pkg / productbuild 기반 설치 프로그램에서도 발생 함)
Robert

설치 가능한 위치에서 특정 경로를 무시하도록 Installer.app에 알려주는 것이 좋을 것입니다. :) 기능 요청으로 추가하겠습니다.
Robert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.