2017-04-24 13 views
0

私はmyapp.appというアプリを持っています。署名されており、起動時に警告を表示しません。アプリのサイレントインストール

目的は、インストーラによってサイレントモードでインストールして起動することです。 このインストーラはコマンドラインで起動する必要があります。

私が想像している解決策は、myappを搭載したinstall.appを作成することです。

"open /Volumes/myapp/install.app"を実行してください。

installer.appは〜/ Applicationsにmyappをコピーして実行します。

これは現実的ですか?

「はい」の場合、ココアコマンドラインアプリケーションを作成する方法はありますか?

myapp.appを/アプリケーションにコピーできますか? (これまでのすべての私の試みは迅速に失敗した)。

[編集] 私は〜/アプリケーション/

let sourcePath = Bundle.main.path(forResource: "myapp", ofType: "app") 
if (sourcePath == nil) { 
    print("myapp.app was not found"); 
    return; 
} 

let target = FileManager.default.urls(for: .applicationDirectory, in: .userDomainMask).first 
let target_path = target?.appendingPathComponent("myapp.app").path 
do { 
    try FileManager.default.copyItem(atPath: sourcePath!, toPath: target_path!) 
} catch let error { 
    print(error.localizedDescription) 
} 

さて、私は(可能な場合は迅速3で)それを起動するために探しています

にバンドルアプリをコピーすることができました[編集2 ]起動方法

let run_app = Process() 
run_app.launchPath = "/usr/bin/open" 
run_app.arguments = [target_path!] 
run_app.launch() 

もっと良い方法を教えてください。

+0

"サイレント"が可能かどうかはわかりません。私はユーザーがそれを受け入れる必要があると思う。 –

+0

アプリケーションを目的の場所にコピーして、そこからターミナルを使用して起動するのはなぜですか? –

+0

@oa私が必要とするのは、アプリケーションを/アプリケーションにコピーして起動するプログラムを作成することです。このプログラムは、別のインストーラのような別のプログラムによって起動される可能性があります。 – arsenik

答えて

0

あなたは2つのオプションがあります。

  1. は、アプリケーションをインストールするパッケージ(.pkg)としてアプリケーションを配布します。

  2. 最初に起動するときに、アプリケーションをアプリケーションフォルダに移動するようにユーザーに指示します。このため、既製のフレームワークがあります。https://github.com/potionfactory/LetsMove

何か他のものは、あなたが彼らの許可を求めずにアクションを実行している理由をユーザーエクスペリエンスの低下やユーザーが質問かもしれないです。

また、あなたのアプリがインターネットからダウンロードされた場合、ゲートキーパーは常に警告を表示します。署名されたアプリの場合でも

+0

実際には、私はユーザーに関与すべきではないので、ユーザーエクスペリエンスについては気にしません。私が必要とするのは、コマンドラインでユーザー権限で実行できるアプリケーションで、myapp.appを/ Applicationsにコピーして起動するだけです。 – arsenik

関連する問題