0

我有一个.app. 我想编辑plist.Info这样,如果命令行参数-P "main"位于路径中,它将使用我的资源文件夹中的另一个图标。如果用户右键单击并说“保持停靠”,它将使用命令行参数保持停靠,因此下次单击它将使用相同的命令行参数启动。

这可能吗?

最坏的情况:任何objective-c方法来检查路径以查看是否有任何命令行参数?然后我将以编程方式运行setApplicationIconImage(如果上述情况不可能,则最坏的情况意味着)(然后我还必须使用 [NSWindow miniwindowImage] 以编程方式获取小型化窗口并在其 msyelf 上绘制迷你图标,并听取未来的通知NSWindowWillMiniaturizeNotification和当该通知触发时进行抽奖,所以这是最坏的情况)

4

1 回答 1

1

我不确定我是否完全跟随你。

但我认为您不需要编辑 plist.Info,而且我认为这样做并不好。

我只想写入应用程序首选项文件CFPreferencesSetValue并更改一个条目,该条目确定应用程序是否更改其图标。

从您的参数检查中调用:

 [self changIcon:(CFBooleanRef)false];

-(void) changIcon:(CFBooleanRef)prefValue
{


    CFStringRef appID = CFSTR("com.yourApp.BundleID");
    CFStringRef Key = CFSTR("swapIcon");
    CFBooleanRef Value = prefValue ;// kCFBooleanTrue;//or kCFBooleanFalse

    // Set up the preference.
    CFPreferencesSetValue(Key,
                          Value,
                          appID,
                          kCFPreferencesCurrentUser,
                          kCFPreferencesAnyHost);

    // Write out the preference data.
    CFPreferencesSynchronize(appID,
                             kCFPreferencesCurrentUser,
                             kCFPreferencesAnyHost);

}

更改图标

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

   BOOL  swapIcon = [defaults boolForKey:@"swapIcon"];

    if (swapIcon ) {
         NSImage * b1Image = [NSImage imageNamed:@"bl1"];
         [NSApp  setApplicationIconImage:b1Image];
    }else {
        [NSApp  setApplicationIconImage:nil];//--Nil will make the app use thenormal icon
    }

为了获得更好的答案,您需要更清楚地解释一下。

于 2015-01-23T05:09:23.090 回答