Я создаю приложение osx для смены значков на рабочем столе (аналогично LiteIcons, за исключением того, что в нем отсутствуют нужные мне функции).Я использую Electron (с node.js и shell) для замены иконок.
Пока у меня есть папка с иконками с тем же именем, что и приложения, для которых я хочу поменять иконки.Таким образом, код выбирает каждый файл, находит приложение и меняет значок (файл .icns).
Пока это мой код:
files.forEach(function (file, index) {
var file_path = path.join(dir + '/icons', file);
var application_name = path.basename(file_path, path.extname(file_path));
var app_path = '/Applications/'+ application_name + '.app';
if (fs.existsSync(app_path)) {
console.log('--', file);
var info_plist = plist.parse(fs.readFileSync( app_path + '/Contents/Info.plist', 'utf8'));
var icon_filename = info_plist.CFBundleIconFile;
if (!icon_filename.endsWith(".icns")) {
icon_filename += '.icns';
}
exec('echo read "\'icns\' (-16455)" \\"' + file_path + '\\"";" >> Icon.rsrc', {
cwd: app_path
}, function(error, stdout, stderr) {
console.log('hdo', error, stdout, stderr);
exec('Rez -a Icon.rsrc -o FileName.ext', {
cwd: app_path
}, function(error, stdout, stderr) {
exec('SetFile -a C FileName.ext', {
cwd: app_path
}, function(error, stdout, stderr) {
exec("Rez -a Icon.rsrc -o Icon$'\r'", {
cwd: app_path
}, function(error, stdout, stderr) {
exec("SetFile -a C .'", {
cwd: app_path
}, function(error, stdout, stderr) {});
});
});
});
});
/*** ----------- */
}
});
На атоме это работало, но на Espressoэто не так.Даже если он добавляет файлы, значок не меняется.Если я попытаюсь изменить его с помощью liteIcon, это сработает, поэтому в моем коде что-то не работает.