Tạo “trình cài đặt” dmg đẹp cho Mac OS X


83

Tôi đã tạo ứng dụng Qt đầu tiên cho Mac OS X. Bây giờ tôi muốn tạo tệp .dmg đẹp cho phép người dùng dễ dàng cài đặt nó. Tôi đang nghĩ về một cái gì đó giống như firefox có (xem hình ảnh): nhập mô tả hình ảnh ở đây

Tôi hoàn toàn mới với điều này, vì vậy tôi thậm chí không biết bắt đầu từ đâu.


2
Có thể điều này có thể giúp bạn stackoverflow.com/questions/96882/…
Roger Lindsjö

Tôi không thực sự cần nó để được tự động, tôi muốn một cái gì đó dễ dàng hơn để làm cho tôi bắt đầu;)
xx77aBs

3
điều này có thể được sử dụng: el-tramo.be/guides/fancy-dmg
Mike K

@MikeK: Bạn nên đăng bài này là câu trả lời, tôi sẽ chấp nhận nó, nó chỉ là những gì tôi đang tìm kiếm;)
xx77aBs

Bạn có thể kiểm tra hướng dẫn này . Nó hướng dẫn bạn từng bước cách tạo các DMG đẹp mắt chỉ bằng cách sử dụng iDMG (là một phần mềm miễn phí), Finder và một thiết bị đầu cuối. Nó khá dễ.
Igor Augusto

Câu trả lời:


90

Đưa câu hỏi này cập nhật bằng cách cung cấp câu trả lời này.

appdmglà một chương trình dòng lệnh đơn giản, dễ sử dụng, mã nguồn mở, tạo ra các tệp dmg từ một đặc tả json đơn giản. Hãy xem readme tại trang web chính thức:

https://github.com/LinusU/node-appdmg

Ví dụ nhanh:

  1. Cài đặt appdmg

    npm install -g appdmg
    
  2. Viết tệp json ( spec.json)

    {
      "title": "Test Title",
      "background": "background.png",
      "icon-size": 80,
      "contents": [
        { "x": 192, "y": 344, "type": "file", "path": "TestApp.app" },
        { "x": 448, "y": 344, "type": "link", "path": "/Applications" }
      ]
    }
    
  3. Chạy chương trình

    appdmg spec.json test.dmg
    

(tuyên bố từ chối trách nhiệm. Tôi là người tạo ra appdmg)


So với các giải pháp khác, điều này đơn giản đến kinh ngạc.
Aeolun

1
Yay, Linus cách để đi. Uppskattar det.
GS Falken

Bất kỳ cơ hội nào để có tệp nhị phân đã biên dịch cho OSX 10.6.8? Tôi không biết làm thế nào để biên dịch các nguồn của bạn ... (ở đây không nhiều về một gã táo ...)
Mark Miles

4
@MarkMiles hầu hết mã được viết bằng Javascript và do đó không được tuân thủ. Npm sẽ đảm nhận việc biên dịch tất cả các tệp nguồn (C, Objective-C) cần thiết. Cách dễ nhất để mọi thứ chạy là 1) Cài đặt brew ( brew.sh ) 2) Cài đặt Node.js ( brew install node) cũng bao gồm npm. 3) Thực hiện theo các "Quick dụ" trong câu trả lời
Linus Unnebäck

@Lothar Tôi nghĩ rằng sẽ thật tuyệt nếu đóng gói appdmg dưới dạng tệp nhị phân để dễ phân phối, nhưng trường hợp sử dụng tôi đã đưa vào môi trường nodejs. Nhưng nếu bạn nghĩ rằng điều này có thể được thực hiện trong một "tập lệnh shell đơn giản" thì tôi dám bạn thử. Hãy xem mã, nó không quá tầm thường. Có một lý do mà chúng ta có các ngôn ngữ lập trình khác ngoài các tập lệnh shell.
Linus Unnebäck

20

Nó khá dễ dàng - ý tưởng cơ bản là bạn tạo một hình ảnh trống bằng Disk Utility (làm cho nó đủ lớn để ít nhất là chứa đồ của bạn - kích thước chính xác không quan trọng), mở hình ảnh đó bằng Finder , đặt đồ đạc của bạn vào và sắp xếp nó theo cách bạn muốn (sử dụng nhấp chuột phải và Show View Options để đặt những thứ như kích thước biểu tượng hoặc hình nền). Đó là gần như vậy - tất cả những gì còn lại là chuyển đổi hình ảnh r / w đó thành một hình ảnh nén: đẩy nó ra và sử dụng Convert trong Disk Utility để chuyển đổi nó thành một hình ảnh nén.


9

Không có câu trả lời hiện có nào thực sự làm được điều đó cho tôi; một câu trả lời là thủ công và hai tùy chọn khác - iDMG và node-appdmg - cả hai đều liên quan đến việc mô tả công cụ tìm kiếm không lý tưởng.

Cách tốt nhất để thực hiện việc này như một bước xây dựng tự động là tạo một template.dmg trông chính xác như cách bạn muốn (làm theo hướng dẫn bình thường, ví dụ câu trả lời của Simon Urbanek, nhưng không thực hiện bước cuối cùng nén nó), sau đó trong bản dựng của bạn kịch bản:

  1. Sử dụng hdiutil để đính kèm hình ảnh
  2. Sử dụng cp vv để sao chép ứng dụng vào hình ảnh được gắn kết
  3. hdiutil tách ra
  4. nén hình ảnh: hdiutil convert "in.dmg" -quiet -format UDZO -imagekey zlib-level = 9 -o "MyApp-0.3.dmg"

Có một makefile tại https://github.com/remko/fancy-dmg/ có chứa các bước này.


2
Chúng tôi đang làm việc để loại bỏ AppleScript và mang đến nền tảng đa nền tảng node-appdmg. Nếu bạn muốn theo dõi tác phẩm, hãy xem tại đây: github.com/LinusU/node-appdmg/issues?milestone=1&state=open
Linus Unnebäck

1
@ LinusUnnebäck Thật tuyệt vời; cảm ơn vì đã chia sẻ điều đó! Ngay cả khi chỉ cần loại bỏ sự phụ thuộc chỉ số táo sẽ là tuyệt vời.
JosephH

Không sao cả :) chúng tôi thực sự chỉ cần có thể viết .DS_Store của riêng mình và tất cả đều đã thực sự được tìm ra, tôi chỉ cần tìm thời gian để thực hiện nó. ( github.com/LinusU/node-appdmg/issues/14 )
Linus Unnebäck

.DS_Store không được ghi lại và tôi chắc chắn rằng nó sẽ không bao giờ xảy ra, vì vậy nó không phải là một lối thoát. Mẫu có vẻ là giải pháp đáng tin cậy duy nhất.
Lothar


1

Bạn có thể làm điều đó với Finder:

  1. Tải xuống và giải nén tệp DMG trống này (tôi là người đã tạo và tải nó lên)
  2. Thay đổi kích thước tệp DMG thành kích thước thích hợp (kích thước thích hợp thường là kích thước hiện tại cộng với kích thước tệp .app của bạn). Để thực hiện việc này, hãy mở tiện ích đĩa (nếu bạn không biết cách thực hiện, hãy tìm kiếm disk utilitytrong Launchpad). Sau đó nhấp vào "Hình ảnh" trên thanh menu và chọn "Thay đổi kích thước ...". Bạn sẽ nhận được một cửa sổ để mở một tệp, mở tệp DMG trống.
  3. Bấm đúp vào tệp DMG để gắn kết nó. Một thiết bị trên màn hình có tên Untitledsẽ xuất hiện. Đổi tên nó thành tên mà bạn muốn (có thể bạn muốn đặt nó cùng tên với chương trình của bạn).
  4. Mở thiết bị đó. Bạn sẽ thấy một cái gì đó như thế này:

    nhập mô tả hình ảnh ở đây

    Nếu mọi thứ đều có màu trắng ngoại trừ lối tắt đến thư mục Ứng dụng, hãy nhấn Cmd+ Jvà một cửa sổ sẽ được mở ra. Ở dưới cùng của cửa sổ đó, có một hình vuông với nhãn "Kéo hình ảnh vào đây". Nhấp vào hình vuông đó và hộp thoại Mở sẽ mở ra. Trong hộp thoại đó, nhấn Cmd+ Shift+ Gvà nhập và chọn image.png./Volumes/(whatever you called the device in step 3)/.image

    Mọi thứ ở đây ngoại trừ phím tắt đến thư mục Ứng dụng chỉ là hình nền. Bạn có thể muốn thay đổi hình nền (chứa màu nền và mũi tên). Để làm như vậy, hãy mở tệp trong trình chỉnh sửa hình ảnh và chỉnh sửa nó thành bất kỳ thứ gì bạn muốn. Sau khi thực hiện xong việc này, bạn có thể cần phải ngắt kết nối thiết bị và gắn lại thiết bị bằng cách mở tệp DMG để xem các thay đổi. Tùy thuộc vào những gì bạn đưa vào hình ảnh, bạn cũng có thể cần phải di chuyển phím tắt đến thư mục Ứng dụng xung quanh để phù hợp với hình nền mới./Volumes/(whatever you called the device in step 3)/.image/image.png

  5. Kéo tệp .app của bạn đến đầu mũi tên trong cửa sổ nơi thiết bị từ tệp DMG được mở để nó trông giống như sau:

    nhập mô tả hình ảnh ở đây

    Bạn có thể gặp lỗi nói rằng không có đủ dung lượng trống. Nếu đúng như vậy, hãy quay lại bước 2 và thay đổi kích thước tệp DMG thành kích thước lớn hơn.

  6. Ngắt kết nối thiết bị bằng cách nhấp vào mũi tên bên cạnh tên thiết bị trong Finder:

    nhập mô tả hình ảnh ở đây

  7. Chuyển đổi tệp DMG thành chỉ đọc. Để thực hiện việc này, hãy mở terminal và nhập dòng này (thay thế /path/to/dmg/filebằng đường dẫn đến tệp DMG và nameOfDmgFile.dmgbằng tên của tệp DMG):

    cd /path/to/dmg/file
    hdiutil convert -format UDZO -o newNameOfDmgFile.dmg nameOfDmgFile.dmg
    

    Thao tác này sẽ tạo một tệp DMG mới có tên newNameOfDmgFile.dmg(hoặc bất kỳ tên nào khác mà bạn đã sử dụng ở trên), là tệp mà bạn muốn.


Tại sao chúng ta cần thay đổi kích thước DMG (như bạn đã đề cập ở điểm 2)
Krishna Maru

@KrishnaMaru Đã lâu rồi tôi mới viết câu trả lời này, nhưng nếu tôi nhớ không nhầm, bạn sẽ gặp lỗi nếu cố sao chép một tệp lớn vào một DMG quá nhỏ.
Vịt Donald

0

Bạn có thể sử dụng Disk Utility cho việc này, nhưng nếu bạn muốn có ảnh ở chế độ nền, bạn cần một số hướng dẫn nâng cao.

Đầu tiên, hãy mở Disk Utility
Sau đó, nhấp vào Tệp> Hình ảnh mới> Hình ảnh trống.
Nó sẽ hỏi bạn kích thước của nó và tên.
Sau đó, bạn có thể đặt các tập tin vào đó, và bạn bắt đầu!

LƯU Ý: Điều này đã được thử nghiệm trên Mac OS Mojave. Tôi không biết về các phiên bản trước.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.