2013-03-02 11 views
7

Trong sự bùng nổ của sự nhiệt tình không suy nghĩ, tôi sandboxed sau đó lấp lánh cập nhật ứng dụng của tôi. Vì ứng dụng chỉ có quyền truy cập đọc/ghi đối với các tệp do người dùng chọn (và thư mục âm nhạc) hiện tại tôi không thể cập nhật nhị phân của riêng mình. Rất tiếc.Cập nhật ứng dụng OSX sandboxed (đáng buồn đã phân phối) bằng cách sử dụng lấp lánh

Điều này đã được tranh luận rộng rãi với Andy Matuschak trong năm qua (https://github.com/sparkle-project/Sparkle/pull/165) nhưng trong khi các giải pháp được đề xuất là 'gần đủ tốt', không có ánh sáng nào bị rơi vào vấn đề đã phân phối ứng dụng không có hộp cát .

Ồ, có vẻ như có liên quan đến việc tôi đã sử dụng phương pháp phân phối lấp lánh 'hình ảnh đĩa'.

Giải pháp duy nhất AT ALL mà tôi có thể nghĩ là phát hành bản cập nhật lấp lánh chỉ trình bày thông báo cho người dùng yêu cầu họ tải xuống theo cách thủ công. Có ai có ý tưởng nào tốt hơn không?

-Dave

Trả lời

1

Andy Matuschak dường như chỉ ra Sparkle mà thực sự có thể xử lý 'tải chỉ' một cách duyên dáng cho bạn. Nói cách riêng của mình, chỉ cần rời khỏi số <enclosure> trong số <item> của bạn và thêm phần tử <sparkle:version>2.0</sparkle:version> làm con của <item>.

đọc comment của mình ở đây: https://github.com/sparkle-project/Sparkle/issues/227#issuecomment-13192723

Cũng giống như Fermat trước mặt ông, ông rời ra một đoạn thông tin. Nhưng không giống như định lý, chúng ta có quyền truy cập vào mã nguồn Sparkle, cụ thể là SUAppcastItem.m. Nhờ mã, tôi đã tìm ra phần còn thiếu là một thẻ <link>. Dưới đây là một ví dụ appcast:

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <channel> 
     <title>FooBar</title> 
     <link>http://foobar.com/appcast.xml</link> 
     <description>Most recent changes with links to updates.</description> 
     <language>en</language> 
     <item> 
      <title>FooBar 2.0</title> 
      <sparkle:releaseNotesLink>http://foobar.com/release-notes-special.html</sparkle:releaseNotesLink> 
      <sparkle:minimumSystemVersion>10.9.0</sparkle:minimumSystemVersion> 
      <pubDate>2014-04-14T18:40:44+02:00</pubDate> 
      <sparkle:version>2013</sparkle:version> 
      <sparkle:shortVersionString>2.0</sparkle:shortVersionString> 
      <link>http://foobar.com/release-notes-special.html</link> 
     </item> 
    </channel> 
</rss> 

Trong ứng dụng sandbox mà nhận appcast đó và không thể được cập nhật bằng cách khác, 'Install Update' đã biến mất, và thay vào đó là một nút 'Tìm hiểu thêm' rằng sẽ mang lại người dùng đến URL trong đó <link>. Đây là nơi tốt để có hướng dẫn tải xuống. Trong phiên bản tiếp theo của ứng dụng, bạn có thể sử dụng một URL khác cho ứng dụng, để ứng dụng trên chỉ áp dụng cho các phiên bản cũ hơn (giả sử bạn đã sửa và sử dụng thủ thuật XPC không chính thức với Sparkle). .

+0

Chúng tôi hiện đang trong quá trình hợp nhất hỗ trợ hộp cát vào Sparkle, xem https://github.com/sparkle-project/Sparkle/issues/363 để biết thêm thông tin. –