कमांड लाइन पर DMG बढ़ते समय लाइसेंस समझौते को बायपास करें


16

मैं कठपुतली का उपयोग कर अपने मैक स्थापना को स्वचालित कर रहा हूं। इसके एक भाग के रूप में मुझे एक .dmg प्रारूप में आने वाले कई कार्यक्रमों को स्थापित करने की आवश्यकता है।

मैं उन्हें माउंट करने के लिए निम्नलिखित का उपयोग करता हूं:

sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg

समस्या यह है कि कुछ .dmg फाइलें संलग्न लाइसेंस के साथ आती हैं, और इसलिए स्क्रिप्ट लाइसेंस को स्वीकार करने में अटक जाती है। (कठपुतली के साथ चलने पर कोई स्टडिन / आउट नहीं है, इसलिए मैं इसे जारी रखने के लिए मैन्युअल रूप से अनुमोदित नहीं कर सकता।)

क्या लाइसेंस को पूर्व-अनुमोदन या बल देने का एक तरीका है?


संभवतः एसएफ पर जा सकता है; आप कई मशीनों के साथ काम करने से उत्पन्न होने वाली समस्याओं से निपट रहे हैं। हालाँकि, यह यहाँ भी जा सकता था।
केविन एम

2
"हाँ | hdiutil संलग्न डिस्क डिस्क> / देव / अशक्त" - जो आपके लिए एक 'Y' टाइप करेगा।
mauvedeity

जवाबों:


2

यदि आपके पास एक GUI है और समानांतर में दो कमांड-लाइन कॉल करने में सक्षम हैं, तो आप उपयोग कर सकते हैं

/System/Library/CoreServices/DiskImageMounter.app/Contents/MacOS/DiskImageMounter /path/to/file.dmg

तथा

osascript accept.scpt

जिनमें से निम्नलिखित AppleScript निष्पादित करता है:

tell application "System Events"
    delay 5 # wait 5 seconds -- I tested it using two terminal tabs and needed the time
    key code 48 # press tab 4 times in the license window
    key code 48
    key code 48
    key code 48
    keystroke " " # press space to click "accept"
end tell

में bash, लिखने में सक्षम हूँ

/System/Library/CoreServices/DiskImageMounter.app/Contents/MacOS/DiskImageMounter file.dmg & osascript accept.scpt

मैं यह उल्लेख करना भूल गया कि मैं कठपुतली का उपयोग नहीं करता। यह उत्तर इसलिए बहुत बेकार हो सकता है, लेकिन जब से यह कुछ दिनों का है, मैंने वैसे भी पोस्ट किया है।
डैनियल बेक

हम्म मैं जब भागने की कोशिश कर कोई त्रुटि मिलती है osascript accept.scpt ➜ dotfiles Git: (गुरु) ✗ osascript accept.scpt osascript: accept.scpt: ऐसा कोई फ़ाइल या निर्देशिका
अनुदान

@gr आपको पहले निर्दिष्ट सामग्री के साथ फ़ाइल बनानी होगी।
डेनियल बेक

18

यह मेरे लिए तब काम आया जब मैंने एक .dmg का सामना किया, जिसमें एक EULA था जिसे मैं कमांड लाइन के माध्यम से स्थापित करना चाहता था, जिसमें कोई उपयोगकर्ता नहीं है ...

/usr/bin/hdiutil convert -quiet foo.dmg -format UDTO -o bar
/usr/bin/hdiutil attach -quiet -nobrowse -noverify -noautoopen -mountpoint right_here bar.cdr

(ध्यान दें: मैं यथोचित यकीन नहीं ऊपर दिए गए विकल्पों के सभी की जरूरत है हूँ EULA बाईपास, जैसे -nobrowse, -noverify, -noautoopen, -mountpointहालांकि, मैं उन्हें इस्तेमाल किया और मैं उनके बिना परीक्षण नहीं किया तो मैं दावे कुछ नहीं करना चाहता था कि मैं। परीक्षण नहीं किया गया था।)

जो मैंने समाप्त किया, वह एक निर्देशिका थी

bar.cdr
foo.dmg
right_here/

जहां EULA के लिए संकेत right_here/दिए foo.dmgबिना सामग्री शामिल है ।

जब आप कर रहे हैं अलग करने के लिए सुनिश्चित करें!

/usr/bin/hdiutil detach right_here/

अधिक जानकारी के लिए: hdiutil (1) मैक ओएस एक्स मैनुअल पेज

YMMV


1
धन्यवाद - यह एक बहु-पृष्ठ समझौते के साथ अच्छी तरह से काम किया, जहां एक दोहराया 'y' काम नहीं किया।
लार्स रोहरबैच

1
मेरे लिए भी काम किया। हालाँकि मुझे बस इसे cdr फ़ाइल में बदलने के लिए पहली पंक्ति की आवश्यकता थी, फिर मैं इसे उन सभी तर्क के बिना संलग्न कर सकता हूं और यह काम करता है।
मैक्सिम वायार्गस

7

यदि इसे "Y" टाइप करने की आवश्यकता है, तो हाँ कमांड को hututil कमांड में पाइप करें:

yes | /bin/hdiutil [...]

यह 'y' को दबाने और कमांड लाइन पर लौटने का अनुकरण करेगा।

कुछ और लिखने के लिए, बस इसे एक पैरामीटर के रूप में कमांड लाइन पर रखें:

yes accept | ...

वह स्क्रिप्ट में 'स्वीकार' दर्ज करेगा।

ध्यान दें कि यदि स्क्रिप्ट कई बार इनपुट मांगती है, तो हां कमांड कई प्रविष्टियां डालेगी। आप 'टूटी पाइप' जैसे आउटपुट देख सकते हैं - इसका मतलब यह है कि जिस कमांड को आपने 'हां' में डाला था, वह अभी भी इनपुट भेज रहा था।


मैंने कभी यह कोशिश नहीं की है, इसलिए मुझे स्टाउट रीडायरेक्ट के बारे में पता नहीं था। +50 के लिए धन्यवाद!
mauvedeity

6

मैं हाल ही में एक DMG में आया था जिसमें EULA था और यह वास्तव में मुझे परेशान कर रहा था क्योंकि मैं इसके चारों ओर स्क्रिप्ट नहीं कर सकता था। मुझे लगा कि अगर मैंने डीएमजी को सीडीआर में परिवर्तित कर दिया तो सीडीआर के बढ़ने पर EULA को दरकिनार कर दिया।

यहाँ मैंने क्या किया है:

hdiutil convert foo.dmg -format UDTO -o bar.cdr
hdiutil attach bar.cdr
rm foo.dmg <--optional

उम्मीद है की यह मदद करेगा।


इससे मुझे एक टन की मदद मिली! yes | hdiutil...जब कुछ पागल कारण के लिए एक अजगर स्क्रिप्ट से ही कॉल समाधान मेरे लिए लटका दिया।
नाथन

1

आप एक बहु पृष्ठांकित EULA है कि आप स्वीकार करने की जरूरत है, तो आप एक रखकर स्वीकार हिस्सा करने के लिए प्राप्त कर सकते हैं qअपने को स्वीकार आदेश के बाकी से पहले (के बाद से सभी की जरूरत है एक स्वीकृत में आदेश छोड़ने less, आप भी इस्तेमाल कर सकते हैं ZZया Q)।

उदाहरण के लिए, यदि EULA को आपको yस्वीकार करने के लिए टाइप करने की आवश्यकता है तो आप चलाएंगे:

yes qy | hdiutil attach ...

0

क्या आपको संकुल स्थापित करने के लिए कठपुतली के अपने औजारों का उपयोग नहीं करना चाहिए? मैं खुद एक रेडीमेड व्यवस्थापक हूं और मैं कठपुतली से परिचित नहीं हूं, लेकिन उनकी विकी पर एक जांच से पता चलता है कि एक उपकरण है जिसे pkgdmg कहा जाता है जो कि आप जो पूरा करने की कोशिश कर रहे हैं उसके बराबर कर सकते हैं।

http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Mac_Osx#packagepkgdmg


1
यह उन ऐप्स को हैंडल नहीं करता है जिन्हें लाइसेंस लेने की आवश्यकता होती है।
विटाली कुशनर

वास्तव में; मैं इस धारणा के तहत था कि आप लाइसेंस स्वीकृति के लिए कोई आवश्यकता नहीं के साथ अपने स्वयं के पैकेज बना रहे होंगे। ऐसा रेडमाइंड एडमिन की मानसिकता है, मुझे लगता है।
22
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.