Komut satırına DMG bağlarken lisans sözleşmesini atlayın


16

Mac kurulumumu kukla kullanarak otomatikleştiriyorum. Bunun bir parçası olarak .dmg biçiminde gelen birkaç program yüklemem gerekiyor.

Bunları monte etmek için aşağıdakileri kullanıyorum:

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

Sorun, bazı .dmg dosyalarının ekli bir lisans ile gelmesidir ve bu nedenle komut dosyası lisansı kabul etmekte kalır. (Kukla ile çalışırken stdin / out yoktur, bu yüzden devam etmek için manuel olarak onaylayamıyorum.)

Lisansı ön onaylamanın veya zorla onaylamanın bir yolu var mı?


Muhtemelen SF devam edebilir; birçok makine ile çalışmaktan kaynaklanan sorunlarla uğraşıyorsunuz. Ancak buraya da gidebilir.
Kevin M

2
Sizin için 'Y' yazacak olan "yes | hdiutil attach disk.dmg> / dev / null" yapın.
mauvedeity

Yanıtlar:


2

GUI'niz varsa ve paralel olarak iki komut satırı çağrısı yapabiliyorsanız,

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

ve

osascript accept.scpt

ikincisi aşağıdaki AppleScript'i yürütür:

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

Olarak bash, ben yazma açabiliyorum

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

Kukla kullanmadığımı söylemeyi unuttum. Bu nedenle bu cevap çok işe yaramaz olabilir, ancak birkaç gün geçtiğinden, yine de gönderdim.
Daniel Beck

çalıştırmak çalışırken hmm bir hata alıyorum osascript accept.scpt ➜ dotfiles git: (ana) ✗ osascript accept.scpt osascript: accept.scpt: Böyle bir dosya ya da dizin
hibe

@grant Öncelikle belirtilen içeriğe sahip dosyayı oluşturmanız gerekir.
Daniel Beck

18

Komut satırı üzerinden kullanıcı etkileşimi olmadan yüklemek istediğim bir EULA içeren bir .dmg ile karşılaştığımda bu benim için çalıştı ...

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

(Not: Yukarıdaki tüm seçenekleri için gerekli olan makul emin değilim EULA baypas gibi -nobrowse, -noverify, -noautoopen, -mountpointAncak, ben onları kullandık ve ben iddia şey istemiyordu yüzden onlar olmadan testi vermedi ben. test etmemişti.)

Sonunda ne ile bir dizin oldu

bar.cdr
foo.dmg
right_here/

burada EULA istenmeden right_here/içeriğinin içeriği foo.dmg.

İşiniz bittiğinde ayırdığınızdan emin olun!

/usr/bin/hdiutil detach right_here/

Daha fazla bilgi için: hdiutil (1) Mac OS X Manual Page .

YMMV


1
Teşekkürler - bu, tekrarlanan bir 'y' nin çalışmadığı çok sayfalı bir sözleşme ile iyi çalıştı.
Lars Rohrbach

1
Benim için de çalıştı. Bir cdr dosyasına dönüştürmek için ilk satıra ihtiyacım olmasına rağmen, tüm bu argüman olmadan ekleyebilirim ve işe yarıyor.
Maxime Viargues

7

Sadece "Y" yazılması gerekiyorsa, evet komutunu hdiutil komutuna ekleyin:

yes | /bin/hdiutil [...]

Bu, 'y' tuşuna basmayı taklit edecek ve komut satırına geri dönecektir.

Başka bir şey yazmak için, komut satırına parametre olarak koyun:

yes accept | ...

Bu, komut dosyasına 'kabul et' değerini girecektir.

Komut dosyası birden çok kez girdi girilmesini isterse, evet komutunun birden fazla girdi koyacağını unutmayın. Çıktıyı 'kırık boru' gibi görebilirsiniz - bu sadece 'evet' hala girdi gönderirken bıraktığınız komutun çıktığı anlamına gelir.


Bunu hiç denemedim, bu yüzden şişman yönlendirmeyi bilmiyordum. +50 için teşekkürler!
mauvedeity

6

Geçenlerde bir EULA olan bir DMG ile karşılaştım ve etrafına senaryo yazamadığım için beni gerçekten rahatsız ediyordu. DMG'yi bir CDR'ye dönüştürürsem CDR'yi monte ederken EULA'yı atladığını anladım.

İşte yaptım:

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

Bu yardımcı olur umarım.


Bu bana bir ton yardımcı oldu! yes | hdiutil...Gibi saçma sapan bir bir piton komut dosyasından çağrıldığında çözümler benim için askıda.
Nathan

1

qKabul etmeniz gereken çok sayfalı bir EULA'nız varsa , kabul komutunuzun geri kalanından önce bir a koyarak kabul bölümüne gidebilirsiniz (tek ihtiyacınız kabul edilen bir bırakma komutu olduğu lessiçin ZZveya da kullanabilirsiniz Q).

Örneğin, EULA yçalıştıracağınızı kabul etmek için a yazmanızı gerektiriyorsa :

yes qy | hdiutil attach ...

0

Paketleri yüklemek için kuklanın kendi araçlarını kullanmamalısınız? Ben kendim bir radmind yöneticisiyim ve kuklaya aşina değilim, ancak wiki'lerinde yapılan bir kontrol, yapmaya çalıştığınız şeyin eşdeğerini yapabilen pkgdmg adlı bir araç olduğunu ortaya koyuyor.

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


1
lisans kabul edilmesi gereken uygulamaları işlemez.
Vitaly Kushner

Aslında; Lisans kabulüne gerek kalmadan kendi paketlerinizi yaratacağınız izlenimindeydim. Sanırım, bir Radmind yöneticisinin zihniyeti böyle.
NReilingh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.