2013-08-23 34 views
10

Tôi đang cố gắng tạo trình cài đặt cho ứng dụng Java trên Mac OS 10.8.4. Các ứng dụng chạy tốt, và tôi có thể cài đặt nó mà không có một hitch từ một tập tin zip. Tôi có thể tạo một trình cài đặt .pkg với một trong hai productbuild hoặc pkgbuild. Tôi cũng có thể cài đặt tệp .pkg của trình cài đặt thành công, tuy nhiên ứng dụng không chạy đúng do thực tế là cả hai chương trình đóng gói đều thay đổi quyền sở hữu thư mục dữ liệu và các tệp phụ và thư mục con của người dùng từ gốc sang người dùng. Tôi cài đặt thư mục dữ liệu này trong thư mục Tài nguyên của gói .app, và lần đầu tiên chương trình thực hiện, nó di chuyển thư mục dữ liệu đến/Users/user/Library/Application Support. Tôi đã thử sử dụng --ownership bảo tồn và --ownership bảo tồn các tùy chọn khác với pkgbuild vô ích. Cách duy nhất tôi có thể cài đặt và thực thi đúng là thông qua tệp zip, vì nó chỉ để lại quyền sở hữu tệp một mình. Đây là lệnh pkgbuild Tôi đang sử dụng:Sửa đổi quyền sở hữu tệp theo productbuild và pkgbuild

pkgbuild --ownership giữ gìn --component ./myApp.app ./myApp-installer.pkg

Câu hỏi của tôi là:

  1. thế nào có thể Tôi buộc pkgbuild phải tôn trọng tùy chọn bảo tồn quyền sở hữu của tôi?

  2. Có thể xây dựng một gói dữ liệu riêng biệt với quyền sở hữu người dùng và dành cho vùng người dùng và hợp nhất nó với gói thực thi thông qua tùy chọn --synthesize của pkgbuild không? nếu có, ai đó có thể chỉ cho tôi cách xây dựng một gói dữ liệu chỉ như vậy?

+0

Bạn đã từng tìm giải pháp chưa? – spartygw

Trả lời

1

Tôi biết nó khá cũ, tôi sẽ chỉ trả lời trong trường hợp người khác cần câu trả lời. Những gì tôi thường làm, là tôi có một kịch bản trình bao tạo tệp .pkg cho tôi. Trong kịch bản đó, tôi đặt tất cả các quyền và quyền sở hữu tệp trước khi đóng gói. Dưới đây là ví dụ:

NAME="PKGFILENAME" 

IDENTIFIER="com.pkg.APPNAME" 

VERSION="1.0.0" 

INSTALL_LOCATION="PATH_TO_WHERE_THE_FILES_SHOULD_BE_COPIED_ON_USERS_MACHINE" 
ROOT_LOCATION="PATH_TO_WHERE_FILES_ARE_ON_YOUR_MASCHINE" 

# Remove any unwanted .DS_Store files. 
find "$ROOT_LOCATION" -name '*.DS_Store' -type f -delete 

# put any command for changing the ownership or permissions here 
chmod -R +r "$ROOT_LOCATION" 

# Build package. 
/usr/bin/pkgbuild \ 
    --root "$ROOT_LOCATION" \ 
    --install-location "$INSTALL_LOCATION" \ 
    --identifier "$IDENTIFIER" \ 
    --version "$VERSION" \ 
    "$NAME.pkg" 

lưu tệp này vào tệp như create-my-package.sh và chạy dòng lệnh này trong dòng lệnh.

Các vấn đề liên quan