制作Icon \ r文件来替换桌面图标OSX,结果不正常

时间:2019-02-13 01:39:28

标签: node.js shell electron

我正在制作一个用于更改桌面图标的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对其进行更改,那么它将起作用,因此我的代码中的某些内容无法正常工作。

0 个答案:

没有答案