创建简单的可可应用程序包装器

发布于 2024-08-19 21:01:08 字数 256 浏览 5 评论 0原文

我有一个应用程序想要将(与一些附加文件)捆绑在一起在包装应用程序中。

从字面上看,我唯一想做的就是让包装应用程序启动一个资源文件(即,就像我

/path/to/Resources/Bundled.app/Contents/MacOS/executable

在终端中输入:一样。

有意义吗?我认为这应该很简单,但我找不到一种简单的方法来 可以说,我的可可编程能力有限。

这样做——至少

I have an application I want to bundle (with some additional files) together inside a wrapper application.

Literally the only thing I want to do is have the wrapper application launch a resource file (i.e. as if I'd typed:

/path/to/Resources/Bundled.app/Contents/MacOS/executable

into the terminal.

Make sense? I thought this should be simple, but I caouldn't find a simple way to do this-- my cocoa programming is limited, to say the least.

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜点 2024-08-26 21:01:08

一种方法是,如果封装的“应用程序”只是一个 shell 脚本或其他东西,则为 Platypus

如果它是一个实际的应用程序(.app 包),为什么应用程序 A 除了启动应用程序 B 之外什么都不做?为什么要有应用程序 A?

One way, if the wrapped “application” is just a shell script or something, is Platypus.

If it's an actual application (.app bundle), why does app A do nothing but launch app B? Why have app A at all?

心头的小情儿 2024-08-26 21:01:08

您的外部程序可以使用 NSBundle 在外部程序的包中定位内部程序。

要运行内部程序:如果它是应用程序,请使用 Launch Services< /a> 或 NSWorkspace;如果它是命令行工具,请使用 NSTask

Your outer program can use NSBundle to locate the inner program within the outer program's bundle.

To run the inner program: If it's an application, use Launch Services or NSWorkspace; if it's a command-line tool, use NSTask.

源来凯始玺欢你 2024-08-26 21:01:08

I have a blog post up on this: Turn any shell script into a double-clickable app. The entry mentions "start with an empty app bundle"... which you can get by using the Pashua tool mentioned, if I remember correctly...

著墨染雨君画夕 2024-08-26 21:01:08

只是为了后代(如果它对其他人有帮助,这里是我使用的完整代码(在 AppDelegate.m 文件内):

NSString *appName = @"";
NSString *bundledApp = [[NSBundle bundleWithPath:[[NSBundle
                                                           mainBundle] pathForResource:appName ofType:@"app"]]
                          bundlePath];
NSWorkspace *launchApp = [[NSWorkspace alloc] init];
NSLog(@"Launching %s", bundledApp);
[launchApp launchApplication:bundledApp];
[launchApp release];

// Make Launcher terminate (if it serves no other purpose)
[NSApp terminate:nil];

Just for the sake of posterity (and if it helps anyone else, here is the full code I used (inside the AppDelegate.m file):

NSString *appName = @"";
NSString *bundledApp = [[NSBundle bundleWithPath:[[NSBundle
                                                           mainBundle] pathForResource:appName ofType:@"app"]]
                          bundlePath];
NSWorkspace *launchApp = [[NSWorkspace alloc] init];
NSLog(@"Launching %s", bundledApp);
[launchApp launchApplication:bundledApp];
[launchApp release];

// Make Launcher terminate (if it serves no other purpose)
[NSApp terminate:nil];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文