2009-08-06 10 views
18

मैं कोको में एक आवेदन विकसित कर रहा हूं। मुझे अपने आवेदन को एडियम जैसे स्थापित करने के लिए एक डीएमजी फ़ाइल बनाने की आवश्यकता है (जो ऐप फ़ाइल को एप्लिकेशन फ़ोल्डर में खींचने के लिए एक अच्छा यूआई प्रदान करता है)। क्या इसके लिए कोई उपकरण है?डीएमजी फ़ाइल बनाएं

+7

जो भी इसे बंद करने के लिए मतदान करता है, मैं असहमत हूं कि यह/अनिवार्य रूप से SuperUser.com पर संबंधित है, क्योंकि इसे पूरा करने के लिए प्रोग्रामेटिक तरीके हैं, और यह अंतिम उपयोगकर्ताओं की तुलना में प्रोग्रामिंग से अधिक संबंधित है, क्योंकि यह ऐप के बारे में है तैनाती। –

+1

यदि कोई डीएमजी वास्तव में आवश्यक नहीं है, तो ज़िप का उपयोग करें। यह डीएमजी की तुलना में नए मैक ओएस एक्स उपयोगकर्ताओं के लिए बहुत कम भ्रमित है। –

उत्तर

16

डिस्क उपयोगिता तो आप की एक छवि बनाना चाहते हैं फ़ोल्डर का चयन करें,

File>New>Disk Image From Folder पर जाएं (यह आवेदन \ उपयोगिताएँ में है)। परिणामी .dmg उस फ़ोल्डर को दोहराएगा जिसे आपने छवि बनाने के लिए उपयोग किया था, आइकन की स्थिति के नीचे।

+2

गंभीरता से, इस आसान उपयोगिता के दौरान शेयरवेयर के लिए भुगतान क्यों करें? – Philippe

+0

यह विधि वास्तव में, शीर्ष-स्तरीय आइकन स्थितियों को संरक्षित नहीं करती है और विकल्प देखती है। –

+0

@MichaelTsai हां यह करता है, आपको सबकुछ स्थापित करने की आवश्यकता है, फिर डिस्क उपयोगिता से संपीड़ित करने के लिए इसे परिवर्तित करें, पृष्ठभूमि छवि बनाने के लिए '.background' नामक फ़ोल्डर बनाएं, अपनी छवि वहां रखें, अपनी वॉल्यूम खोलें,' cmd + j' फिर 'पृष्ठभूमि: चित्र' चिह्नित करें, और फ़ाइल को '.background' में खींचें। इससे पहले कि आप इसे संपीड़ित (रीडोनली) छवि में परिवर्तित कर लें, इसे किया जाना चाहिए। –

8

डॉ निक ने एक अच्छा रूबी मणि रखा जो आपके लिए यह काम करता है, आपको बस एक्सकोड प्रोजेक्ट और कुछ ग्राफिक्स की आपूर्ति करने की आवश्यकता है। लिंक यहाँ है:

http://drnicwilliams.com/2009/02/03/choctop-packaging-and-deployment-of-cocoa-applications/

यह एक महान पैकेज है कार्यों कि अन्यथा परेशान कर सकती हैं का ख्याल रखता है ...

- इवान

+0

यह उल्लेख करने के लिए धन्यवाद, बस मैं जो खोज रहा था। –

+0

मुझे यह उल्लेख करना होगा कि इस उपकरण द्वारा बनाए गए डीएमजी का कुल आकार 10 एम तक बढ़ता है। –

17

आप एक ही फ़ाइल है, तो कि उपयोगकर्ता शायद अनुप्रयोग निर्देशिका में कॉपी करेगा, एक "इंटरनेट-सक्षम" डिस्क छवि एक अच्छा विकल्प है। जब आप सफारी का उपयोग करके एक डाउनलोड करते हैं (मुझे पता है, हर कोई सफारी का उपयोग नहीं करता है), यह स्वचालित रूप से इसे माउंट करता है, सामग्री को डाउनलोड स्थान पर कॉपी करता है, फिर डीएमजी को अनमाउंट करता है और इसे ट्रैश में ले जाता है। एप्लिकेशन स्वचालित रूप से एप्लिकेशन पर नहीं जाता है, लेकिन यह उपयोगकर्ता के एचडी पर है और उन्हें डिस्क छवि के साथ झुकाव के बारे में चिंता करने की ज़रूरत नहीं है।

hdiutil internet-enable -yes "MyDiskImage.dmg" 

यह किसी भी डीएमजी फ़ाइल पर काम करना चाहिए:

डिस्क छवियों इंटरनेट-सक्षम एक भी टर्मिनल कमांड के साथ हो सकता है। यदि आप चाहते हैं कि उपयोगकर्ता आपकी सुंदर पृष्ठभूमि देखें, तो आप ऐसा नहीं करना चाहेंगे। हालांकि, सरल पेलोड के लिए यह जाने का एक अच्छा तरीका है। (बेशक, कुछ लोगों को तैनाती की इस तरह के लिए एक ज़िप फ़ाइल बनाने के लिए, वैसे भी पसंद करेंगे।)


मुझे लगता है कि मैन्युअल रूप से बनाने के लिए एक डीएमजी एक दर्द हो सकता है। आप वास्तव में अपने एक्सकोड परियोजना में एक साधारण डीएमजी के निर्माण को स्वचालित कर सकते हैं। बस एक शैल स्क्रिप्ट लक्ष्य बनाएं (प्रोजेक्ट → नया लक्ष्य ...) और स्क्रिप्ट में hdiutil का उपयोग करें। आदेश कुछ इस तरह (वास्तविक नामों और निर्देशिका प्रतिस्थापन) दिखेगा:

hdiutil create -fs HFS+ -volname "MyApp 1.0" -srcfolder \ 
"/directory/with/contents/to/package/" "~/Desktop/MyApp-1.0.dmg"` 

आप सब सामान आप एक ही निर्देशिका में डिस्क छवि में शामिल करना चाहते डालना होगा, लेकिन आप कर रहे हैं टर्मिनल में cp का उपयोग करने से डरते नहीं, यह करना आसान है।

यदि आप एक उदाहरण देखना चाहते हैं, तो मैं इस दृष्टिकोण का उपयोग CHDataStructures.framework में स्वयं करता हूं। यदि आप कोड को चेक और एक्सकोड में खोलते हैं, तो तैनाती लक्ष्य में दूसरी स्क्रिप्ट डीएमजी बनाती है।

+1

अलास, इंटरनेट-सक्षम सेटिंग [केवल बाद में] (http://c-command.com/dropdmg/manual-ah/internet-enabled) मैक ओएस एक्स 10.2 से 10.6 तक है। और यहां तक ​​कि उन संस्करणों पर, यह बहुत ही काम करता है जब सफारी द्वारा .dmg फ़ाइल डाउनलोड की जाती है। –

3

और क्योंकि वहाँ पर्याप्त जवाब पहले से ही नहीं कर रहे हैं ...

मैं एक पढ़ने-लिखने लेआउट मैं चाहता था के साथ डीएमजी बनाया -, पृष्ठभूमि छवि, आकार एप्लिकेशन आइकन पर शॉर्टकट, और एक खाली फ़ोल्डर खड़े करने के लिए मेरे आवेदन के लिए में। मैंने इस डीएमजी की प्रतिलिपि बनाने के लिए एक सरल bash स्क्रिप्ट लिखी, इसे माउंट करें, खाली एप्लिकेशन पर अपना एप्लिकेशन कॉपी करें, डीएमजी को अनमाउंट करें, और उसके बाद इसे केवल पढ़ने के लिए परिवर्तित करें।

लेकिन डीएमजी कैनवास आपके लिए यह पूरी प्रक्रिया कर सकता है, और एक कमांड लाइन टूल भी प्रदान करता है जिसका उपयोग आप अपने एक्सकोड बिल्ड से इस प्रक्रिया को स्वचालित करने के लिए कर सकते हैं, इसलिए मैं वास्तव में अपने समाधान पर अनुशंसा करता हूं।

0

मैकब्रीक देव ने ऑटोमेटर वर्कफ़्लो का उपयोग करके डीएमजी फ़ाइलों को बनाने के बारे में एक अच्छा छोटा स्क्रीनकास्ट किया। चीजें बहुत आसान बनाता है, बहुत तेज़ और आपके डीएमजी में कस्टम पृष्ठभूमि हो सकती है। आप इसे यहां देख सकते हैं: http://www.pixelcorps.tv/mbkd_010

+0

लिंक दुर्भाग्यवश काम नहीं करता प्रतीत होता है। – Cragly

2

Mozilla build scripts यदि आप अपनी स्क्रिप्ट लिखना चाहते हैं तो एक महान स्रोत हैं। pkg-dmg का उपयोग करके आप, पृष्ठभूमि छवि, मात्रा नाम को अनुकूलित के लिए एक लाइसेंस, आइकन, आदि उदाहरण जोड़ सकते हैं:

pkg-dmg \ 
    --verbosity 2 \ 
    --volname "MegaFinder" \ 
    --source MegaFinder.app \ 
    --sourcefile \ 
    --target MegaFinder.dmg \ 
    --license Licence.txt \ 
    --icon MegaFinderVolumenIcon.icns \ 
    --copy MegaFinderCustomizedDS_Store:.DS_Store \ 
    --mkdir .background \ 
    --copy MegaFinderBackgroundImage.jpg:.background/backgroundImage.jpg \ 
    --symlink /Applications:Applications \ 
    --attribute V:.background \ 
    2>&1 > /dev/null 

समस्या सही .DS_Store पैदा कर रही है। सरल मामलों के लिए आप .DS_Store खोजक में घुड़सवार डीएमजी वॉल्यूम को अनुकूलित कर सकते हैं (शो व्यू विकल्प)। आप अनमाउंट (परिवर्तन प्रतिबद्ध करने के लिए) और अंत में फिर से माउंट (के रूप में यह उपरोक्त उदाहरण में दिखाई देता है) के रूप में MegaFinderCustomizedDS_Store जिसके परिणामस्वरूप .DS_Store कॉपी करने के लिए

अपने अनुप्रयोग तेंदुए मैं DMG Canvas की सिफारिश suppports तो इसे अनुकूलित, एक लिखने योग्य छवि बनाने के लिए की आवश्यकता होगी, पूरी प्रक्रिया को प्रबंधित करने के लिए या कम से कम .DS_Store प्राप्त करने के लिए। इसमें एक कमांड लाइन टूल भी है।

+0

मोज़िला स्क्रिप्ट स्रोत के लिए अद्यतन लिंक: http://hg.mozilla.org/mozilla-central/file/tip/build/package/mac_osx – ash

0

आप पृष्ठभूमि चित्र के साथ एक लेआउट सेट करने के लिए DropDMG का उपयोग कर सकते हैं, एप्लिकेशन फ़ोल्डर में एक सिमलिंक, अपने आइकन की स्थिति इत्यादि। फिर, जब आपको अपनी .dmg फ़ाइल बनाने की आवश्यकता होती है, तो आप केवल ऐप को खींच सकते हैं DropDMG (या ऐप्पलस्क्रिप्ट या dropdmg कमांड लाइन उपकरण के माध्यम से इसे स्क्रिप्ट करें) और इसे एक चरण में डिस्क छवि बनाएं।

1

स्वचालित निर्माण चरण के रूप में ऐसा करने का सबसे अच्छा तरीका टेम्पलेट.dmg बनाना है जो वास्तव में दिखता है कि आप कैसे चाहते हैं (खोजक/डिस्केटिबिलिटी आदि का उपयोग करके, लेकिन इसे संपीड़ित करने का अंतिम चरण नहीं), फिर अपनी बिल्ड स्क्रिप्ट में :

  1. उपयोग hdiutil घुड़सवार छवि
  2. में आवेदन की प्रतिलिपि करने के hdiutil अलग
  3. छवि सेक छवि
  4. उपयोग सीपी आदि संलग्न करने के लिए: hdiutil "in.dmg" कन्वर्ट -quiet -format UDZO -imagekey zlib-level = 9 -o "MyApp-0.3.dmg"

https://github.com/remko/fancy-dmg/ पर एक मेकफ़ाइल है जिसमें इन चरणों को शामिल किया गया है।

संबंधित मुद्दे