7

考えもしないほどの熱意の爆発の中で、私はアプリをサンドボックス化し、スパークル アップデートしました。アプリにはユーザーが選択したファイル (および音楽ディレクトリ) への読み取り/書き込みアクセスしかないため、自分のバイナリを更新することはできません。おっとっと。

これは、昨年かそこらにわたって Andy Matuschak と広範囲に議論されてきました ( https://github.com/sparkle-project/Sparkle/pull/165 ) 。サンドボックス化されていないアプリを既に配布しているという問題について。

ああ、それは私がスパークル配布の「ディスクイメージ」方法を使用してきたことと関係があるようです.

私が考えることができる唯一の解決策は、ユーザーに手動でダウンロードするように指示するメッセージを表示するだけのスパークルアップデートをリリースすることです. 誰もがより良いアイデアを持っていますか?

-デイブ

4

1 に答える 1

2

Andy Matuschak は、Sparkle が実際に「ダウンロードのみ」を適切に処理できることを示しているようです。彼自身の言葉を借りれば、<enclosure>your の をそのままにして、 の子として要素を<item>追加するだけです。<sparkle:version>2.0</sparkle:version><item>

ここで彼のコメントを読んでください: https://github.com/sparkle-project/Sparkle/issues/227#issuecomment-13192723

前のフェルマーと同じように、彼は 1 つの情報を省略しました。しかし、定理とは異なり、Sparkle のソース コード、特にSUAppcastItem.m. コードのおかげで、欠落している部分が<link>タグであることがわかりました。以下はアプリキャストの例です。

<?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>

その appcast を受信し、それ以外の場合は更新できないサンドボックス アプリでは、「Install Update」がなくなり、代わりに「Learn More」ボタンが表示され、ユーザーはその URL に移動し<link>ます。これは、ダウンロードの手順を説明するのに適した場所です。

アプリの次のバージョンでは、appcast に別の URL を使用して、上記の appcast が古いバージョンにのみ適用されるようにすることができます (問題を修正し、Sparkle で非公式の XPC トリックを使用すると仮定します)。

于 2014-04-14T15:54:12.713 に答える