是否可以使用NodeJS更改任何应用程序的图标

时间:2019-07-29 09:37:31

标签: javascript node.js macos

是否可以使用NodeJS更改macOS上任何应用程序的图标...

我一直在搜索,但是找不到有用的东西。 就像将.icns文件拖到任何应用程序(但使用NodeJS)的“获取信息”菜单中的图标上一样。

1 个答案:

答案 0 :(得分:2)

您只需要替换应用内的图标文件即可。

  1. 将应用程序视为文件夹,在其Info.plist文件夹内的应用程序中查找Contents文件。

  2. Info.plist文件(这是一个xml文件)中,寻找CFBundleIconFile键。它的值为应用程序的图标文件。

  3. 在这里您有两种选择-您可以选择以下一种:

    3a。将此值替换为您的图标或

    3b。只需将图标文件替换为您自己的同名图标即可。

这是一个用另一个具有相同名称的文件替换图标文件的示例:

const plist = require('simple-plist');
const path = require('path');
const fs = require('fs');

function (appPath, newIconFile) {
    plist.readFile(path.join(appPath, 'Contents/Info.plist'), (err, data) => {

        const iconName = path.join(appPath, 'Contents/Resources', data.CFBundleIconFile);

        fs.copyFile(newIconFile, iconName, (err) => {
            console.log('icon changed!');
        });
    });
}

simple-plist库还支持将plist数据保存回磁盘,因此我将替换CFBundleIconFile值作为读者的练习。