লঞ্চ এজেন্ট লোডিং প্রশ্ন


0

আমার কাছে নিম্নলিখিত লঞ্চ এজেন্ট রয়েছে যা OS X এ চলবে এবং একটি অ্যাপ্লিকেশন মুছে ফেলার জন্য নিচের স্ক্রিপ্টটি চালাবে যখন ব্যবহারকারী অ্যাপ স্টোর থেকে ওএস আপগ্রেড ডাউনলোড করে। এটি মুছে ফেলার পরে এটি একটি ব্যবহারকারীকে একটি বার্তা প্রদর্শন করে।

#!/bin/bash

Version=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)    

if [[ $Version -ge 11 ]]
then  
    launchctl unload /Library/LaunchAgents/net.company_name.blocksierra.plist
    rm -f /Library/LaunchAgents/net.company_name.blocksierra.plist
    rm -f /usr/local/bin/blocksierra.sh
exit 0

else
    rm -rf /Applications/Install\ macOS\ Sierra\ Public\ Beta.app/
    osascript -e 'display dialog "macOS sierra is not allowed on computers at this time." with title "Technology Notice" buttons {"OK"} default button "OK" giving up after 30'
fi

আমি এখন এটি প্যাকেজ করতে যাচ্ছি এবং তারপরে আমাদের সব ম্যাক মেশিনে এটি স্থাপন করব। আমার প্রশ্নটি প্যাকেজটি ইনস্টল হওয়ার পরে স্বয়ংক্রিয়ভাবে "লোড" স্বয়ংক্রিয়ভাবে লোড করার জন্য প্যাকেজটি পেতে স্ক্রিপ্টটিতে কী যোগ করা হয়?

তাই অন্য কথায় আমি কিভাবে এই কমান্ডটি অন্তর্ভুক্ত করব?

sudo launchctl load /Library/LaunchAgents/net.company_name.blocksierra.plist

এখানে plist হয়

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  "http://www.apple.com    /DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.company_name.blocksierra</string>
<key>ProgramArguments</key>
<array>
    <string>/usr/local/bin/blocksierra.sh</string>
</array>
<key>KeepAlive</key>
<dict>
    <key>PathState</key>
    <dict>
        <key>/Applications/Install macOS Sierra Public Beta.app/</key>
        <true/>
    </dict>
</dict>
<key>OnDemand</key>
<true/>
</dict>
</plist>

উত্তর:


1

প্যাকেজগুলি দ্বারা ইনস্টল করা আইটেমগুলির সাথে সম্পর্কিত সমস্ত কাজ (যেমন একটি পিকেজি ইনস্টলার) প্যাকেজ অন্তর্ভুক্ত করা হয় এমন প্রিফ্লাইট বা পোস্টফলাইট স্ক্রিপ্টগুলির সাথে সম্পন্ন করা হয়।

একটি প্রয়োজনীয় ফোল্ডারটি বিদ্যমান কিনা এবং এটির অনুমতি সঠিকভাবে সেট করা থাকলে একটি প্রফ্লিট স্ক্রিপ্ট পরীক্ষা করতে পারে। একটি পোস্টফ্লাইট স্ক্রিপ্ট পিকেজি ইনস্টলার দ্বারা ইনস্টল লঞ্চ এজেন্ট এবং ডেমন লোড করতে পারে এবং তাদের মালিকদের এবং অনুমতি সেট করতে পারে।

আপনার ক্ষেত্রে আপনি এটির মতো পোস্টফ্লাইট স্ক্রিপ্টটি ব্যবহার করবেন:

#!/bin/bash

sudo /bin/launchctl load /Library/LaunchAgents/net.company_name.blocksierra.plist

BTW: ব্যবহার করে if [[ $Version -ge 11 ]] এল Capitan ইনস্টল করা হয় যখন লঞ্চ এজেন্ট আনলোড এবং মুছে ফেলা হবে। আপনি এই 12 পরিবর্তন করতে হতে পারে।


পোস্টফ্লাইট স্ক্রিপ্টটি আপনি সরবরাহ করেছেন এবং Launchagent অ্যাপ্লিকেশনটি মুছে ফেলে তবে, অ্যাপটি আবার ডাউনলোড করার পরে এটি মুছে ফেলবে না। আমি প্লেস্ট লঞ্চ তালিকা টাইপ দ্বারা লোড করা হয় যাচাই করেছেন। তুমি কি উপদেশ দিতে পারবে?
sql1

আমার পরীক্ষায় এটি 10.10.5। অন্যদের সংস্করণ 10.8 থেকে 10.11 পর্যন্ত।
sql1

সিয়েরা এবং বিটা সিয়েরা উভয়কে ব্লক করতে। আমরা এল টুপি ব্লক করতে হবে না। লক্ষ্যটি যদি ব্যবহারকারীর 10.8 / 10.9 / 10.10 বা 10.11 এর উপরে থাকে তবে ব্যবহারকারীর পূর্ববর্তী OS থেকে সায়েরাতে আপগ্রেড ব্লক করা হয়।
sql1

আপনার postflight স্ক্রিপ্ট আবার ঠিক কাজ করে। রিবুট উপর অ্যাপ্লিকেশন মুছে ফেলা হয়। কিন্তু উপরে হিসাবে, oscriptcript ব্যবহারকারী স্প্ল্যাশ বার্তা প্রদর্শন না? এটি সুদো / bin / launctl লোড / লাইব্রেরি / লঞ্চএজেন্টস / নেট.com pany_name.blocksierra.plist এ সুডো ব্যবহার করা হচ্ছে এবং এটি একটি এলএ? যদি আমি এলডি হিসাবে এটি করি তবে কিভাবে আমি একটি ব্যবহারকারীকে একটি স্প্ল্যাশ বার্তা পেতে পারি?
sql1

@ এসকিএল পিএফজি ইনস্টল করার পরে পোস্টফ্লাইট স্ক্রিপ্ট একমাত্র কার্যকর হয়। পোস্টফ্লাইট স্ক্রিপ্টের মধ্যে কোনও সম্পর্ক নেই এবং একটি লা বা ld কাজগুলি কার্যকর করতে হয়। Postflight শুধু লোড এবং নতুন লা / ld শুরু কারণ তারা নিজেদের শুরু করতে পারে না এবং চালু তাদের জানাতে।
klanomath
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.