安静地安装应用程序

时间:2017-04-24 12:11:45

标签: swift macos cocoa silent-installer

我有一个名为myapp.app的应用。它已签名,在启动时不会提示任何警告。

目标是让安装程序以静默方式安装它并启动它。 应在命令行中触发此安装程序。

我想要的解决方案是创建一个带有myapp的install.app。

执行“open /Volumes/myapp/install.app”。

installer.app将myapp复制到〜/ Applications并运行它。

这是现实吗?

如果是,那么创建一个cocoa命令行应用程序是可行的方法吗?

我可以将myapp.app复制到/ Applications吗? (到目前为止,我对swift 3的所有尝试都失败了。)

[编辑] 我能够将Bundle应用程序复制到〜/ Applications /

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)
}

现在,我希望启动它(如果可能,使用swift 3)

[编辑2]如何推出

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

更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:0)

您有两种选择:

  1. 将您的应用程序分发为安装该应用程序的程序包(.pkg)。

  2. 提示用户在首次启动时将应用程序移动到“应用程序”文件夹。有现成的框架:https://github.com/potionfactory/LetsMove

  3. 其他任何事情都是糟糕的用户体验,您的用户可能会质疑您在未征得他们许可的情况下执行操作的原因。

    此外,如果您的应用程序是从Internet下载的,Gatekeeper将始终显示警告。即使是已签名的应用程序。