我有一个名为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()
更好的方法,请告诉我。
答案 0 :(得分:0)
您有两种选择:
将您的应用程序分发为安装该应用程序的程序包(.pkg
)。
提示用户在首次启动时将应用程序移动到“应用程序”文件夹。有现成的框架:https://github.com/potionfactory/LetsMove
其他任何事情都是糟糕的用户体验,您的用户可能会质疑您在未征得他们许可的情况下执行操作的原因。
此外,如果您的应用程序是从Internet下载的,Gatekeeper将始终显示警告。即使是已签名的应用程序。