বিকাশকারী আইডি প্রস্তুত ম্যাকওএস ইনস্টলার প্যাকেজ তৈরি করা


188

দ্রষ্টব্য: এটি কেবল ওএস এক্স ইনস্টলার প্যাকেজগুলির জন্য, ম্যাক অ্যাপ স্টোরে জমা দেওয়ার জন্য প্যাকেজগুলি বিভিন্ন বিধি অনুসরণ করে।

কারণ মাউন্টেন লায়ন এর দ্বার রক্ষক পরিশেষে আমি আমার নেওয়া ছিল PackageMaker শস্যাগার পিছনে বিল্ড স্ক্রিপ্ট এবং এটা অঙ্কুর। প্যাকেজমেকারকে ইতিমধ্যে এক্সকোড থেকে সরানো হয়েছিল এবং "এক্সকোডের জন্য সহায়ক সরঞ্জাম" এ সরানো হয়েছে, তাই আশা করি এটি শীঘ্রই ভুলে যাবে।

প্রশ্ন হল কিভাবে আমি ব্যবহার করব হয় pkgbuild, productbuildএবং pkgutilএটি প্রতিস্থাপন কিভাবে?


সুতরাং আমি ধরে নিচ্ছি যে প্যাকেজ মেকারের সাথে সমস্যাটি মাউন্টেন সিংহের গেটকিপারের সাথে ব্যবহারের জন্য সঠিকভাবে পিকেজি ফাইলগুলিতে সই করতে অক্ষম?
জেসনজেড

1
এটি সম্ভব, তবে প্যাকেজমেকার সর্বদা বগি নরকে থাকে এবং ম্যাক ওএস এক্স 10.6 স্নো চিতাবাঘের সাথে অবমূল্যায়ন করে। নতুন সরঞ্জামগুলির সাথে পরিচিত হতে দীর্ঘমেয়াদে এটি আপনার সময় সাশ্রয় করবে।
ক্যাটলান

@ ক্যাটলান: আপনার কাছে কি কোনও অফিশিয়াল লিঙ্ক রয়েছে যা বলে যে প্যাকেজমেকারকে 10.6 এ অবমূল্যায়ন করা হয়েছে?
কার্ল

2
@ কার্লিটো: এটি কখনও অবহেলিত হিসাবে ঘোষণা করা হয়নি, কেবল এক্সকোড থেকে অপসারণ করা হয়েছে এবং শেষ পর্যন্ত বার্মিজ প্রতিবাদকারীর মতো "অদৃশ্য হয়ে গেছে"।
বাগ

5
এক্সকোড ৪.6 রিলিজ নোট: প্যাকেজ মেকারের অবনতি adcdownload.apple.com/Developer_Tools/xcode_4.6/…
catlan

উত্তর:


343

আমাদের উদাহরণস্বরূপ প্রকল্পটির দুটি বিল্ড টার্গেট রয়েছে: হ্যালোওয়ার্ল্ড.অ্যাপ এবং হেল্পার.অ্যাপ। আমরা প্রত্যেকের জন্য একটি উপাদান প্যাকেজ তৈরি করি এবং তাদেরকে একটি পণ্য সংরক্ষণাগারে মিশ্রিত করি ।

কোনও উপাদান প্যাকেজটিতে ওএস এক্স ইনস্টলার দ্বারা ইনস্টল করার জন্য পে-লোড রয়েছে। যদিও কোনও উপাদান প্যাকেজটি নিজেই ইনস্টল করা যেতে পারে, এটি সাধারণত কোনও পণ্য সংরক্ষণাগারে অন্তর্ভুক্ত করা হয় ।

আমাদের সরঞ্জামগুলি: pkgbuild , productbuild এবং pkgutil

একটি সফল "বিল্ড এবং সংরক্ষণাগার" এর পরে টার্মিনালে $ BUILT_PRODUCTS_DIR খুলুন।

$ cd ~/Library/Developer/Xcode/DerivedData/.../InstallationBuildProductsLocation
$ pkgbuild --analyze --root ./HelloWorld.app HelloWorldAppComponents.plist
$ pkgbuild --analyze --root ./Helper.app HelperAppComponents.plist

এটি আমাদের উপাদান সরবরাহ করে, আপনি "উপাদান উপাদান তালিকা" বিভাগে মান বর্ণনা পান । pkgbuild -root উপাদান প্যাকেজ উত্পন্ন করে , যদি আপনার কোনও ডিফল্ট বৈশিষ্ট্য পরিবর্তন করার প্রয়োজন না হয় তবে আপনি নিম্নলিখিত কমান্ডে --comp घटक-plist পরামিতি বাদ দিতে পারেন ।

প্রোডাক্ট বিল্ড - সংশ্লেষিত ফলাফলগুলি বিতরণের সংজ্ঞাতে আসে

$ pkgbuild --root ./HelloWorld.app \
    --component-plist HelloWorldAppComponents.plist \
    HelloWorld.pkg
$ pkgbuild --root ./Helper.app \
    --component-plist HelperAppComponents.plist \
    Helper.pkg
$ productbuild --synthesize \
    --package HelloWorld.pkg --package Helper.pkg \
    Distribution.xml 

ইন Distribution.xml আপনি শিরোনাম, পটভূমি, স্বাগতম, রিডমি, লাইসেন্স, ইত্যাদি ভালো জিনিস পরিবর্তন করতে পারেন। আপনি এই আদেশটি দিয়ে আপনার উপাদান প্যাকেজগুলি এবং বিতরণ সংজ্ঞাটিকে পণ্য সংরক্ষণাগারে পরিণত করেন :

$ productbuild --distribution ./Distribution.xml \
    --package-path . \
    ./Installer.pkg

আমি কী সম্ভব তা দেখতে আইটিউনস ইনস্টলার্স ডিস্ট্রিবিউশন.এক্সএমএল একবার দেখার পরামর্শ দিই recommend আপনি এর সাথে "ইনস্টল করুন আইটিউনস.পিকিজি" বের করতে পারেন:

$ pkgutil --expand "Install iTunes.pkg" "Install iTunes"

এটি একসাথে রাখা যাক

আমার প্রজেক্টে সাধারণত প্যাকেজ নামে একটি ফোল্ডার থাকে যা ডিস্ট্রিবিউশন.এক্সএমএল, উপাদান-প্লিস্টস, সংস্থানসমূহ এবং স্ক্রিপ্টগুলির মতো জিনিস অন্তর্ভুক্ত করে।

"উত্পন্ন প্যাকেজ" নামে একটি রান স্ক্রিপ্ট বিল্ড ফেজ যুক্ত করুন, যা ইনস্টল করার সময় কেবল স্ক্রিপ্ট রান করতে সেট করা হয় :

VERSION=$(defaults read "${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}/Contents/Info" CFBundleVersion)

PACKAGE_NAME=`echo "$PRODUCT_NAME" | sed "s/ /_/g"`
TMP1_ARCHIVE="${BUILT_PRODUCTS_DIR}/$PACKAGE_NAME-tmp1.pkg"
TMP2_ARCHIVE="${BUILT_PRODUCTS_DIR}/$PACKAGE_NAME-tmp2"
TMP3_ARCHIVE="${BUILT_PRODUCTS_DIR}/$PACKAGE_NAME-tmp3.pkg"
ARCHIVE_FILENAME="${BUILT_PRODUCTS_DIR}/${PACKAGE_NAME}.pkg"

pkgbuild --root "${INSTALL_ROOT}" \
    --component-plist "./Package/HelloWorldAppComponents.plist" \
    --scripts "./Package/Scripts" \
    --identifier "com.test.pkg.HelloWorld" \
    --version "$VERSION" \
    --install-location "/" \
    "${BUILT_PRODUCTS_DIR}/HelloWorld.pkg"
pkgbuild --root "${BUILT_PRODUCTS_DIR}/Helper.app" \
    --component-plist "./Package/HelperAppComponents.plist" \
    --identifier "com.test.pkg.Helper" \
    --version "$VERSION" \
    --install-location "/" \
    "${BUILT_PRODUCTS_DIR}/Helper.pkg"
productbuild --distribution "./Package/Distribution.xml"  \
    --package-path "${BUILT_PRODUCTS_DIR}" \
    --resources "./Package/Resources" \
    "${TMP1_ARCHIVE}"

pkgutil --expand "${TMP1_ARCHIVE}" "${TMP2_ARCHIVE}"

# Patches and Workarounds

pkgutil --flatten "${TMP2_ARCHIVE}" "${TMP3_ARCHIVE}"

productsign --sign "Developer ID Installer: John Doe" \
    "${TMP3_ARCHIVE}" "${ARCHIVE_FILENAME}"

প্যাকেজটি প্রোডাক্ট বিল্ড দিয়ে তৈরি করার পরে যদি আপনাকে পরিবর্তন না করতে হয় তবে আপনি এগুলিpkgutil --expand এবং pkgutil --flattenপদক্ষেপগুলি থেকে মুক্তি পেতে পারেন । এছাড়াও আপনি পণ্য -সাইন চালানোর পরিবর্তে পণ্য- বিল্ডে - সাইন প্যারামেন্টার ব্যবহার করতে পারেন ।

একটি ওএস এক্স ইনস্টলারে স্বাক্ষর করুন

বিকাশকারী আইডি ইনস্টলার শংসাপত্রের সাথে প্যাকেজগুলি স্বাক্ষরিত হয় যা আপনি বিকাশকারী শংসাপত্রের ইউটিলিটি থেকে ডাউনলোড করতে পারেন ।

তারা সাইন ইন করার সময় সম্পন্ন করা হয় --sign "Developer ID Installer: John Doe"যে পরামিতি pkgbuild , productbuild বা productsign

মনে রাখবেন যে আপনি যদি পণ্য বিল্ড ব্যবহার করে একটি স্বাক্ষরিত পণ্য সংরক্ষণাগার তৈরি করতে চলেছেন তবে উপাদান প্যাকেজগুলিতে স্বাক্ষর করার কোনও কারণ নেই ।

বিকাশকারী শংসাপত্রের ইউটিলিটি

সমস্ত উপায়: প্যাকেজটি Xcode সংরক্ষণাগারে অনুলিপি করুন

এক্সকোড সংরক্ষণাগারে কোনও কিছু অনুলিপি করতে আমরা রান স্ক্রিপ্ট বিল্ড ফেজ ব্যবহার করতে পারি না । এর জন্য আমাদের একটি স্কিম অ্যাকশন ব্যবহার করা প্রয়োজন।

স্কিম সম্পাদনা করুন এবং সংরক্ষণাগারটি প্রসারিত করুন। তারপরে পোস্ট-অ্যাকশনগুলি ক্লিক করুন এবং একটি নতুন রান স্ক্রিপ্ট অ্যাকশন যুক্ত করুন :

এক্সকোড 6 এ:

#!/bin/bash

PACKAGES="${ARCHIVE_PATH}/Packages"

PACKAGE_NAME=`echo "$PRODUCT_NAME" | sed "s/ /_/g"`
ARCHIVE_FILENAME="$PACKAGE_NAME.pkg"
PKG="${OBJROOT}/../BuildProductsPath/${CONFIGURATION}/${ARCHIVE_FILENAME}"

if [ -f "${PKG}" ]; then
    mkdir "${PACKAGES}"
    cp -r "${PKG}" "${PACKAGES}"
fi

এক্সকোড 5 এ পরিবর্তনের জন্য এই মানটি ব্যবহার PKGকরুন:

PKG="${OBJROOT}/ArchiveIntermediates/${TARGET_NAME}/BuildProductsPath/${CONFIGURATION}/${ARCHIVE_FILENAME}"

যদি আপনার সংস্করণ নিয়ন্ত্রণ Xcode স্কিম তথ্য সংরক্ষণ না করে তবে আমি এটিকে আপনার প্রকল্পে শেল স্ক্রিপ্ট হিসাবে যুক্ত করার পরামর্শ দিচ্ছি যাতে আপনি কার্যক্ষেত্র থেকে স্ক্রিপ্টটিকে পোস্ট-অ্যাকশনে টেনে এ্যাকশনটি পুনরুদ্ধার করতে পারেন।

স্ক্রিপ্টিং

দুটি ভিন্ন ধরণের স্ক্রিপ্টিং রয়েছে: বিতরণ সংজ্ঞা ফাইল এবং শেল স্ক্রিপ্টগুলিতে জাভাস্ক্রিপ্ট

শেল স্ক্রিপ্ট সম্পর্কে সেরা ডকুমেন্টেশন যা আমি হোয়াইটবক্সে পেয়েছি - প্যাকেজমেকার কীভাবে তা , তবে এটি সাবধানতার সাথে পড়ুন কারণ এটি পুরানো প্যাকেজ ফর্ম্যাটকে বোঝায়।

অতিরিক্ত পড়া

জ্ঞাত সমস্যা এবং কাজের ক্ষেত্র

গন্তব্য নির্বাচন ফলক

ব্যবহারকারীকে কেবল একটি একক পছন্দ - "এই কম্পিউটারের সমস্ত ব্যবহারকারীর জন্য ইনস্টল করুন" সহ গন্তব্য নির্বাচন বিকল্পের সাথে উপস্থাপন করা হবে। বিকল্পটি দৃশ্যত নির্বাচিত প্রদর্শিত হবে, তবে ব্যবহারকারীকে ইনস্টলেশনটি চালিয়ে যাওয়ার জন্য এটিতে ক্লিক করা দরকার, এতে কিছু বিভ্রান্তি দেখা দিয়েছে।

ইনস্টলার বাগটি দেখানোর উদাহরণ

অ্যাপল ডকুমেন্টেশন ব্যবহার করার পরামর্শ দেয় <domains enable_anywhere ... />তবে এটি নতুন আরও বগি ডেস্টিনেশন সিলেক্ট ফলকে ট্রিগার করে যা অ্যাপল তাদের কোনও প্যাকেজগুলিতে ব্যবহার করে না।

অবচয় ব্যবহার করে <options rootVolumeOnly="true" />আপনাকে পুরানো গন্তব্য নির্বাচন ফলক দেয়। পুরানো গন্তব্য নির্বাচন ফলক দেখানোর উদাহরণ


আপনি বর্তমান ব্যবহারকারীর হোম ফোল্ডারে আইটেমগুলি ইনস্টল করতে চান।

সংক্ষিপ্ত উত্তর: এটি চেষ্টা করবেন না!

দীর্ঘ উত্তর: সত্যিই; এটি চেষ্টা করবেন না! ইনস্টলার সমস্যা এবং সমাধান পড়ুন । তুমি জানো আমি এই পড়েও কি করেছি? আমি এটি চেষ্টা করার জন্য যথেষ্ট বোকা ছিল। নিজেকে বলছি আমি নিশ্চিত যে তারা সমস্যাগুলি 10.7 বা 10.8 এ স্থির করেছে।

সবার আগে আমি সময়ে সময়ে উল্লিখিত গন্তব্য নির্বাচন পেন বাগটি দেখেছি। এটি আমাকে থামিয়ে দেওয়া উচিত ছিল, তবে আমি এটিকে উপেক্ষা করেছি। আপনি যদি আপনার সফ্টওয়্যার সমর্থন ই-মেইলের উত্তর প্রদানের পরে সপ্তাহটি কাটাতে না চান তবে সুন্দর নীল নির্বাচনটি একবার এটি ব্যবহার করবেন না they

আপনি এখন ভাবছেন যে আপনার ব্যবহারকারীরা প্যানেলটি বের করার জন্য যথেষ্ট স্মার্ট, তাই না? ঠিক আছে এখানে হোম ফোল্ডার ইনস্টলেশন সম্পর্কে অন্য জিনিস, তারা কাজ করবেন না!

আমি এটি প্রায় দুই সপ্তাহ ধরে প্রায় 10 টি বিভিন্ন মেশিনে বিভিন্ন ওএস সংস্করণ এবং কী না তা পরীক্ষা করে দেখেছিলাম এবং এটি কখনও ব্যর্থ হয়নি। সুতরাং আমি এটি প্রেরণ। মুক্তির এক ঘন্টার মধ্যে আমি কেবল ব্যবহারকারীদের কাছ থেকে ফিরে এসেছি যারা কেবল এটি ইনস্টল করতে পারেনি। অনুমতি সম্পর্কিত ইঙ্গিতযুক্ত লগগুলি আপনি ঠিক করতে সক্ষম হবেন না।

সুতরাং আসুন এটি আরও একবার পুনরাবৃত্তি করুন: আমরা হোম ফোল্ডার ইনস্টলেশনগুলির জন্য ইনস্টলারটি ব্যবহার করি না!


ওয়েলকাম, রিড-মি, লাইসেন্স এবং উপসংহারের জন্য আরটিএফডি গ্রহণ করে না productbuild

চিত্র ইনস্টল করে চমত্কার ওয়েলকাম স্ক্রিন তৈরি করতে আর্টিএফডি ফাইলগুলি শুরু থেকেই ইনস্টলার সমর্থিত, তবে প্রোডাক্ট বিল্ড সেগুলি গ্রহণ করে না।

কর্মক্ষেত্র: একটি ডামি আরটিএফ ফাইল ব্যবহার করুন এবং এটি productbuildসম্পন্ন হওয়ার পরে প্যাকেজটিতে প্রতিস্থাপন করুন ।

দ্রষ্টব্য: আরটিএফডি ফাইলের অভ্যন্তরে আপনার রেটিনা চিত্র থাকতে পারে। এই জন্য বহু-ইমেজ টিফ ফাইলে ব্যবহার করুন: tiffutil -cat Welcome.tif Welcome_2x.tif -out FinalWelcome.tif। আরও বিশদ


কোনও বান্ডেলপস্টইনস্টলস্ক্রিপ্টপথ স্ক্রিপ্ট দিয়ে ইনস্টলেশন সম্পন্ন হলে একটি অ্যাপ্লিকেশন শুরু করা :

#!/bin/bash

LOGGED_IN_USER_ID=`id -u "${USER}"`

if [ "${COMMAND_LINE_INSTALL}" = "" ]
then
    /bin/launchctl asuser "${LOGGED_IN_USER_ID}" /usr/bin/open -g PATH_OR_BUNDLE_ID
fi

exit 0

অ্যাপ্লিকেশনটি ইনস্টলারের ব্যবহারকারীর হিসাবে নয়, লগ ইন হওয়া হিসাবে চালানো গুরুত্বপূর্ণ important এটি লঞ্চক্টেল asuser uid পাথ দিয়ে সম্পন্ন হয় । এছাড়াও আমরা কেবল এটি চালিত করি যখন এটি কোনও কমান্ড লাইন ইনস্টলেশন না হয়, ইনস্টলার সরঞ্জাম বা অ্যাপল রিমোট ডেস্কটপ দিয়ে সম্পন্ন হয় ।



9
এটি একটি দুর্দান্ত টিউটোরিয়াল, তবে পূর্বনির্মাণিত বান্ডিলগুলির অস্তিত্ব ধরে নেয়। যদি আমি, উদাহরণস্বরূপ, /tmpএকটি পোস্টফ্লাইট স্ক্রিপ্টে পরে প্রক্রিয়া করার জন্য একটি একক ফাইল ইনস্টল করি, আমি কীভাবে উপাদান তালিকাটি গঠন করব? সমস্ত উপলভ্য ডকুমেন্টেশন মনে হয় মনে হয় যে বিকাশকারী এটি --analyzeঅন্তত প্রাথমিকভাবে এটি তৈরি করেছে ।
বাগ

1
আপনার যদি কিছু পরিবর্তন করার দরকার না হয় তবে Component Property Listআপনাকে চালানোর দরকার নেই --analyze। পোস্ট প্রসেসিং ফাইলগুলির জন্য আমি তাদের সমস্তকে পিকেজিতে রাখার পরামর্শ দিই এবং সেই পিকজি ইনস্টল অবস্থান সেট করে /tmp। তবে আমি আপনার প্রশ্নের ভুল বুঝতে পারি। যদি তাই হয় তবে এটি আরও বিশদ সংস্করণ পোস্ট করুন।
ক্যাটালান

2
দয়া করে লক্ষ্য করুন যে প্যাকেজিং অ্যাপ্লিকেশনের সমস্ত বাগ থেকে বাঁচার চেষ্টা করে, কমান্ড লাইনের মাধ্যমে প্যাকেজগুলি তৈরি করা একেবারেই অর্থবোধ করে না। বরং নীচে স্টাফেন সুদ্রে "প্যাকেজ" অ্যাপ্লিকেশনটি ব্যবহার করার জন্য আমার মন্তব্যটি দেখুন যা আপনার জন্য সমস্ত সমস্যার সমাধান করে!
ব্রাম ডি জং

5
পছন্দ করেছেন আমি একমত নই অ্যাপল কমান্ড লাইন সরঞ্জামগুলি বজায় রাখে। প্যাকেজগুলি একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন যা সম্প্রদায় সমর্থিত নয় এবং ভবিষ্যতে অ্যাপল কঠোর কিছু পরিবর্তন করতে পারে break আমার জন্য, আমি বরং কমান্ড লাইন কৌশলটি জানতাম যাতে অ্যাপল যদি কঠোর কিছু পরিবর্তন করে তবে আমি চালিয়ে যেতে পারি।
ভলমাইক

5
k pkgbuild --root ./HelloWorld.app ভুল (ধরে নিলেন যে .app একটি আসল অ্যাপ্লিকেশন বান্ডেল। পিকেগবিল্ড একটি গন্তব্য শিকড়টিতে কাজ করে: যেমন: একটি ফোল্ডার যা এক্সকোড সরঞ্জাম চেইন দ্বারা উত্পাদিত একটি বান্ডিলকে সংযুক্ত করে। সুতরাং পিকেগবিল্ডের যুক্তি হ'ল আমরা যে বান্ডেলটি প্যাকেজ করতে চাই তার ধারণকৃত ফোল্ডারের পথ। কেবলমাত্র অ্যাপ্লিকেশন সামগ্রী ফোল্ডার রয়েছে এমন প্যাকেজে এই সঠিক ফলাফল পেতে ব্যর্থ। এটি আসল অ্যাপ্লিকেশন বান্ডেল হিসাবে ইনস্টল করবে না। গিওয়েটি উপাদান উপাদানটিতে রয়েছে। যদি এতে অ্যাপ্লিকেশন বান্ডেল নির্দিষ্ট করে একটি রুটরিলেটিকবান্ডেলপথ এন্ট্রি না থাকে তবে আপনি স্ক্রু আপ করতে পারেন।
জোনাথন মিচেল

185

স্টাফেন সুদ্রের একটি খুব আকর্ষণীয় অ্যাপ্লিকেশন রয়েছে যা আপনার জন্য এই সমস্ত কিছু করে, স্ক্রিপ্টযোগ্য / কমান্ড লাইন থেকে বিল্ডিং সমর্থন করে, একটি দুর্দান্ত সুন্দর জিইউআই রয়েছে এবং এটি নিখরচায়। দুঃখজনক বিষয় হ'ল একে "প্যাকেজ" বলা হয় যা গুগলে খুঁজে পাওয়া অসম্ভব করে তোলে।

http://s.sudre.free.fr/Software/Packages/about.html

আমার ইচ্ছা ছিল আমি নিজের স্ক্রিপ্টগুলি হস্তশিল্প তৈরি করার আগে এটি সম্পর্কে জানতাম।

প্যাকেজ অ্যাপ্লিকেশন স্ক্রিনশট


11
আমি বিশ্বাস করতে পারি না যে এই পোস্টে আরও পয়েন্ট নেই। এই সফ্টওয়্যারটি আশ্চর্যজনক এবং এটি কমান্ড লাইন থেকে বিল্ডিং সমর্থন করে।
সিজার মেন্দোজা

1
এই সরঞ্জামটি দিয়ে কেউ কি কোনও প্যাকেজ স্বাক্ষর করার চেষ্টা করেছিল? সক্রিয় করতে আমি "সার্টিফিকেট সেট করুন" মেনু আইটেমটি পেতে পারি না ....
জিটিএই 86

2
@ ইউজার ২৩৩১৮২: খুব দেরীতে গাঁট, অবশ্যই আপনি এটি ইতিমধ্যে খুঁজে পেয়েছেন তবে এটি অন্যকে সহায়তা করবে - আমার মনে হয় আপনি যে সমস্যার মুখোমুখি হচ্ছেন সেটি [ম্যাক অ্যাপ স্টোর পর্যালোচনা গাইডলাইনস] ( বিকাশকারী.অ্যাপল. com/ অ্যাপ- স্টোর / রিভিউ / গাইডলাইনস / ম্যাক /… ), বিধি 2.14: "অ্যাপ্লিকেশনগুলিকে এক্সকোডে অন্তর্ভুক্ত অ্যাপলের প্যাকেজিং প্রযুক্তি ব্যবহার করে প্যাকেজ করতে হবে এবং জমা দিতে হবে - কোনও তৃতীয় পক্ষের ইনস্টলারদের অনুমতি নেই" "
প্রবীণ

4
আমি আশা করি এটি কোনও অর্থ প্রদানের অ্যাপ্লিকেশন ছিল এবং বিকাশকারী ক্রমাগত আপডেট এবং প্যাচিং করে চলেছে। প্যাকেজস.এপ বিশেষত আপনি যদি আপনার অ্যাপটি দ্রুত স্থাপন করতে চান তবে দুর্দান্ত। ওভারভিউটি পড়তে ইনস্টল করতে, আমার প্রকল্পটি সেট আপ করতে এবং ইনস্টলযোগ্য প্যাকেজ তৈরি করতে আমার মোট 3 মিনিট লেগেছে। স্টাফেনের কাছে বড় কুদোস।
নিকলে ক্রিস্টভ

1
এই অ্যাপটি দুর্দান্ত!
স্পেন্সার মুলার ডিনিজ

3

এফওয়াইআই যারা বান্ডিল বা প্লাগইনগুলির জন্য প্যাকেজ ইনস্টলার তৈরি করার চেষ্টা করছেন তাদের পক্ষে এটি সহজ:

pkgbuild --component "Color Lists.colorPicker" --install-location ~/Library/ColorPickers ColorLists.pkg

2
এফওয়াইআই, ওয়েলকাম স্ক্রিন, লাইসেন্স ইত্যাদির সাহায্যে একটি সত্যিকারের ইনস্টলার তৈরি করে একটি .pkg তৈরি করার মধ্যে পার্থক্য রয়েছে।
ক্যাটলান

হ্যাঁ আমি সচেতন, আমি এটি এখানে রেখেছি কারণ আমি কোনও প্লাগইনের জন্য পিকেজি ইনস্টলার তৈরির জন্য রেফারেন্স পাইনি।
gngrwzrd

এটি আমার ঘূর্ণায়মান হয়েছে। গ্রাউন্ডিং দিতে সর্বনিম্ন।
উছুগাকা

3

গৃহীত উত্তরের জন্য একটি +1:

ইনস্টলারে গন্তব্য নির্বাচন

যদি ব্যবহারকারীর ডোমেন এবং সিস্টেম ডোমেনের মধ্যে ডোমেন (ওরফে গন্তব্য) নির্বাচন পছন্দসই হয় তবে <domains enable_anywhere="true">নিম্নলিখিতগুলি ব্যবহারের চেষ্টা করার পরিবর্তে :

<domains enable_currentUserHome="true" enable_localSystem="true"/>

সক্ষম_কন্টেনউজারহোম অ্যাপ্লিকেশন অ্যাপ্লিকেশনটি এর অধীনে ইনস্টল করে ~/Applications/এবং অ্যাপ্লিকেশনটির নীচে enable_localSystemইনস্টল করার অনুমতি দেয়/Application

আমি এটি এল ক্যাপিটান 10.11.6 (15G1217) এ চেষ্টা করেছি এবং মনে হচ্ছে এটি 1 ডিভ মেশিনে এবং 2 টি ভিন্ন ভিন্ন ভিএম আমি চেষ্টা করেছিলাম ঠিকঠাক কাজ করে।


এটি ভালভাবে কাজ করে তবে একটি গোটার সাথে: আপনি যদি প্রথমে প্রতি ব্যবহারকারীকে ইনস্টল করেন, তবে প্রতি-মেশিনটি ইনস্টল করুন, ইনস্টলটি মেশিন-ডির নয়, সুডো-রাইটস সহ ব্যবহারকারী-দিরের মধ্যে থাকবে। বিপরীত ক্ষেত্রে নয়: আপনি প্রতি-মেশিনটি ইনস্টল করতে পারেন এবং তারপরে প্রতি ব্যবহারকারী ব্যবহারের পরে এবং উভয় স্থানে রাখতে পারেন।
তেরজে দহল

@ টারজেডাহল হ্যাঁ এটি কারণ পোস্ট বান্ডেলটি সেই জায়গায় স্থানান্তরিত করা হয় একই বান্ডেল আইডিটি ইনস্টলার দ্বারা আগে ইনস্টল করা হয়েছিল (এবং ইনস্টলার এটি জানেন)। এটি ম্যানিফেস্ট ফাইলের কিছু সেটিংস দ্বারা প্রতিরোধ করা যেতে পারে যা আমি এই মুহুর্তে মনে করি না।
পনটএনপি

@ পনটএনপি আহ। আপনি যদি মনে রাখতে পারেন যে সেটিংগুলি নিয়ে ফিরে আসতে আপনি যদি এত দয়াবান হন তবে তা দুর্দান্ত হবে!
তেরজে দহল

2

এখানে একটি বিল্ড স্ক্রিপ্ট যা একটি বিল্ড রুট থেকে সাইন ইন ইনস্টলার প্যাকেজ তৈরি করে।

#!/bin/bash
# TRIMCheck build script
# Copyright Doug Richardson 2015
# Usage: build.sh
#
# The result is a disk image that contains the TRIMCheck installer.
#

DSTROOT=/tmp/trimcheck.dst
SRCROOT=/tmp/trimcheck.src

INSTALLER_PATH=/tmp/trimcheck
INSTALLER_PKG="TRIMCheck.pkg"
INSTALLER="$INSTALLER_PATH/$INSTALLER_PKG"

#
# Clean out anything that doesn't belong.
#
echo Going to clean out build directories
rm -rf build $DSTROOT $SRCROOT $INSTALLER_PATH
echo Build directories cleaned out


#
# Build
#
echo ------------------
echo Installing Sources
echo ------------------
xcodebuild -project TRIMCheck.xcodeproj installsrc SRCROOT=$SRCROOT || exit 1

echo ----------------
echo Building Project
echo ----------------
pushd $SRCROOT
xcodebuild -project TRIMCheck.xcodeproj -target trimcheck -configuration Release install || exit 1
popd

echo ------------------
echo Building Installer
echo ------------------
mkdir -p "$INSTALLER_PATH" || exit 1

echo "Runing pkgbuild. Note you must be connected to Internet for this to work as it"
echo "has to contact a time server in order to generate a trusted timestamp. See"
echo "man pkgbuild for more info under SIGNED PACKAGES."
pkgbuild --identifier "com.delicioussafari.TRIMCheck" \
    --sign "Developer ID Installer: Douglas Richardson (4L84QT8KA9)" \
    --root "$DSTROOT" \
    "$INSTALLER" || exit 1


echo Successfully built TRIMCheck
open "$INSTALLER_PATH"

exit 0

1
হ্যাঁ, pkgbuild একটি .pkg ইনস্টলার তৈরি করে।
ডগ রিচার্ডসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.