plist.Info, чтобы приложение получало значок на основе аргументов командной строки
У меня есть .app
, Я хочу редактировать plist.Info
такой, что если аргумент командной строки -P "main"
находится в пути, он будет использовать другой значок в моей папке ресурсов. И если пользователь щелкнул правой кнопкой мыши и сказал "держать в доке", он останется в доке с аргументами командной строки, поэтому при следующем щелчке он запустится с такими же аргументами командной строки.
Это возможно?
Худший сценарий приведения: есть ли какой-нибудь объективный способ проверить путь, чтобы увидеть, есть ли там аргументы командной строки? Тогда я бегу setApplicationIconImage
программно (наихудший случай означает, что вышеупомянутое невозможно) (а затем придется также программно получить миниатюрные окна с помощью [NSWindow miniwindowImage] и нарисовать мини-значок на их msyelf, а также прослушать будущие уведомления о NSWindowWillMiniaturizeNotification
и сделать розыгрыш, когда это уведомление срабатывает, так что это худший вариант)
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
}
Для лучшего ответа вам нужно объяснить немного более четко.