2017-10-30 18 views
0

私たちのアプリは/Users/Shared/OurAppData/OurApp.appに保存されています。 これは、ユーザーにランチャーの使用を強制する理由の1つです。macOS。共有フォルダ内のアプリケーションを管理者特権に置き換えてください

しかし、今、私たちは

try FileManager.default.replaceItemAt(URL(fileURLWithPath : Paths.ourAppPath) , withItemAt: extractedURL) 
(私たちはzipファイルをダウンロードし、それを抽出し、それが持つ新しいものに我々のアプリを交換したい)私たちはランチャーを通じて我々のアプリを更新する際、問題に会いました

"" OurApp "というフォルダに" OurApp "というファイルを保存する権限がありません。"

私の質問は、そのような状況を処理する方法はありますか? 私はアクセス許可のためのログインとパスワードのためにプロンプ​​トを表示し、そのファイルを置き換える最善の解決策を推測しますか?私はこれがSwiftスコープの外のもの、おそらくAppleScript、あるいは.shであろうと思う。

してください、助け。

おかげ

答えて

0

は、私は、アプリケーションを更新するためのSparkleフレームワークを見てすることをお勧めします。

Sparkleは、アップデートが利用可能かどうかをチェックし、アップデートをダウンロードし、必要に応じて管理者パスワードを求め、アップデート後にダウンロードしたファイルをクリーンアップします。

ほとんどのアプリケーションでは、新しいバージョンをzipアーカイブとしてアーカイブすれば十分です。

しかし、メインのアプリケーションバンドルの外あるヘルパーアプリケーションまたはエージェントとアプリケーションを更新することも可能です。

これは、インストーラーパッケージ*.pkgで行うことができます。 Sparkleに慣れている場合は、hereと呼ばれる「自動インストール」はSparkle UIのみを表示します。バックグラウンドでは、macOSの組み込みコマンドラインインストーラ、/usr/sbin/installerを使用します。

ほとんどの場合、ユーザーと向き合うようにインストールして更新する場合と同じようにすることが理にかなっていますが、必須ではありません。

アプリケーションがサンドボックスの場合、フレームワークのいくつかのフォークがあります。

+0

私たちのランチャーをアップデートするためにすでにスパークルを使用していますが、問題は私たちの主なアプリケーションがUnity3Dで行われていることです... – PolosatiyVjih

+0

スパークルはインストーラパッケージ(.pkg)でも使用できます。これにより、アプリのすべての部分を更新できるはずです。 https://sparkle-project.org/documentation/package-updates/ – catlan

+0

をご覧ください。どのように動作するのか分かりませんか?ユーザーはインストーラーを介してアプリ(ランチャーとアプリ)をインストールします。インストーラを削除します。そして今更新する方法は? – PolosatiyVjih