ข้ามข้อตกลงใบอนุญาตเมื่อทำการติดตั้ง DMG บนบรรทัดคำสั่ง


16

ฉันกำลังติดตั้ง Mac โดยอัตโนมัติด้วยหุ่นกระบอก เป็นส่วนหนึ่งของมันฉันต้องติดตั้งหลายโปรแกรมที่มาในรูปแบบ. dmg

ฉันใช้สิ่งต่อไปนี้เพื่อติดตั้งพวกเขา:

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

ปัญหาคือไฟล์. dmg บางไฟล์มาพร้อมกับใบอนุญาตที่แนบมาดังนั้นสคริปต์ไม่สามารถรับการอนุญาตได้ (ไม่มี stdin / out เมื่อใช้กับหุ่นดังนั้นฉันไม่สามารถอนุมัติด้วยตนเองเพื่อดำเนินการต่อ)

มีวิธีในการอนุมัติล่วงหน้าหรือบังคับอนุมัติใบอนุญาตหรือไม่?


อาจจะไปที่ SF; คุณกำลังจัดการกับปัญหาที่เกิดขึ้นจากการทำงานกับหลาย ๆ เครื่อง อย่างไรก็ตามมันสามารถไปที่นี่ได้
Kevin M

2
ทำ "ใช่ | hdiutil แนบ disk.dmg> / dev / null" - ซึ่งจะพิมพ์ '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

ฉันลืมพูดถึงว่าฉันไม่ได้ใช้หุ่นเชิด คำตอบนี้อาจไร้ประโยชน์มาก แต่เนื่องจากไม่กี่วันที่ผ่านมาฉันโพสต์ต่อไป
Daniel Beck

hmm ฉันได้รับข้อผิดพลาดเมื่อพยายามเรียกใช้ osascript accept.scpt ➜ dotfiles git: (หลัก) ascript osascript accept.scpt osascript: accept.scpt: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ให้

@grant คุณต้องสร้างไฟล์ที่มีเนื้อหาที่ระบุก่อน
Daniel Beck

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/

ที่right_here/มีเนื้อหาของfoo.dmgโดยไม่ได้รับพร้อมท์สำหรับ EULA

ให้แน่ใจว่าได้ถอดออกเมื่อคุณทำเสร็จแล้ว!

/usr/bin/hdiutil detach right_here/

สำหรับข้อมูลเพิ่มเติม: hdiutil (1) Mac OS X หน้าคู่มือการใช้

YMMV


1
ขอบคุณ - สิ่งนี้ใช้ได้ดีกับข้อตกลงหลายหน้าซึ่ง 'y' ซ้ำไม่ทำงาน
Lars Rohrbach

1
ทำงานให้ฉันด้วย แม้ว่าฉันต้องการเพียงบรรทัดแรกในการแปลงเป็นไฟล์ cdr แต่ฉันสามารถแนบได้โดยไม่ต้องมีข้อโต้แย้งทั้งหมดและใช้งานได้
Maxime Viargues

7

หากต้องการเพียงพิมพ์ "Y" ให้ไพพ์คำสั่ง yes ลงในคำสั่ง hdiutil:

yes | /bin/hdiutil [...]

ที่จะเลียนแบบการกด 'y' และกลับมาที่บรรทัดคำสั่ง

หากต้องการพิมพ์อย่างอื่นให้วางลงบนบรรทัดคำสั่งเป็นพารามิเตอร์:

yes accept | ...

ที่จะป้อน 'ยอมรับ' ลงในสคริปต์

โปรดทราบว่าหากสคริปต์ขออินพุตหลายครั้งคำสั่ง yes จะใส่หลายรายการคุณอาจเห็นผลลัพธ์เช่น 'broken pipe' - นี่หมายความว่าคำสั่งที่คุณไพพ์ไปสู่การเลิกในขณะที่ 'ใช่' ยังคงส่งอินพุต


ฉันไม่เคยลองสิ่งนี้ดังนั้นฉันจึงไม่รู้เกี่ยวกับการเปลี่ยนเส้นทางอ้วน ขอบคุณสำหรับ +50!
mauvedeity

6

ฉันเพิ่งเจอ DMG ที่มี EULA และมันน่ารำคาญจริง ๆ เพราะฉันไม่สามารถเขียนสคริปต์ได้ ฉันคิดว่าถ้าฉันแปลง DMG เป็น CDR มันข้าม EULA ในการติดตั้ง CDR

นี่คือสิ่งที่ฉันทำ:

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 ต้องการให้คุณพิมพ์ a yเพื่อยอมรับว่าคุณทำงาน:

yes qy | hdiutil attach ...

0

คุณไม่ควรใช้เครื่องมือของตัวเองในการติดตั้งแพ็คเกจหรือไม่? ฉันเป็นผู้ดูแลระบบตัวเองและฉันไม่คุ้นเคยกับหุ่น แต่การตรวจสอบวิกิของพวกเขาพบว่ามีเครื่องมือที่เรียกว่า pkgdmg ซึ่งอาจเทียบเท่ากับสิ่งที่คุณพยายามจะทำให้สำเร็จ

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


1
มันไม่ได้จัดการแอพที่ต้องมีใบอนุญาตในการรับ
Vitaly Kushner

แท้จริง; ฉันรู้สึกว่าคุณจะสร้างแพ็คเกจของคุณเองโดยไม่จำเป็นต้องมีการยอมรับใบอนุญาต นั่นคือความคิดของผู้ดูแลระบบ Radmind ฉันคิดว่า
NReilingh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.